机器学习介绍(基于Python scikit-learn模块)

Machine learning : 综述

通常,一个机器学习问题是通过n个样本数据去预测或是发现一些未知的数据。如果每个样本是由超过一个的数据组成,那么我们称组成该数据有一些熟悉或者特征。
  • 机器学习问题按照目的一般可以分为一下两类:
  • 分类问题
    所谓分类问题,是指已知输入数据,要判断数据属于哪一类,要求属于同类的数据具有预先定义的相似性
  • 回归问题
    回归问题本质上和分类问题并没有什么很大不同,为已知输入数据求输出数据,区别在于,分类问题的预测属性是离散值,而回归问题的预测属性是连续值
  • 还可以分为下面这两类:
  • 监督问题
    监督问题是指需要一部分输入数据及对应的输出数据来训练学习模型。
  • 非监督问题
    非监督问题是指只需要输入数据而不必有对应的输出数据
训练集与验证集

机器学习本质上是通过已知的一些数据的特征来应用于未知的数据,为了证明模型的正确性,通常需要准备两个数据集:训练集验证集。训练集是用来训练模型,让模型学习这些数据的特征;验证集是用来检验训练后的模型的正确性。

1 获取数据及数据的预处理

现实世界的数据大都不能直接用来分析,在分析之前需要进行数据清理、数据转换、数据集成等预处理步骤后才能使用。
详情见我的另一篇文章python data analysis | python数据预处理(基于scikit-learn模块)

2 模型的学习和预测

  • 选择模型
    根据数据的不同及问题的不同需求来选择要用的模型,下面一张图片可以提供选择模型时的参考
    Choosing the right estimator — scikit-learn 0.17.1 documentation
    《机器学习介绍(基于Python scikit-learn模块)》 ml_map.png
  • 选择参数
    我们希望学习的模型是最小化误差的,所以可以选择备选的参数空间,然后用交叉验证的方法产生训练集合验证集来对不同参数的模型效果进行评估,选择一个最好的模型。

3 训练模型的保存

因为Python每次关闭都会清空使用内存,为了保存训练完成的模型,可以使用Python中的序列化模块pickle来进行序列化反序列化。序列化及将内存中的数据存储在文件中,反序列化是指将文件中的数据转移到内存中。

clf表示训练完成的分类模型

file表示存储的路径

import pickle
file=open(,)
pickle.dump(clf, file])
file.close()
clf=pickle.load(file)


##4 约定
* 类型约定:
除非另有说明,否则所有的输入数据类型将被`fit_transform(X)`转换成`float64`类型
* 更新超参数:
超参数可以理解为训练之前的模型所需要的参数,比如k-means分类方法中的k就是一个超参数。超参数的修改可以用下面这种格式修改
`clf.set-params(param1=*p1*,param2=*p2*,...) #param1是具体的超参数名称,*p1*等是选择参数数值`

#####本文信息参考[scikit-learn官方文档](http://scikit-learn.org/stable/tutorial/text_analytics/working_with_text_data.html)
    原文作者:houhzize
    原文地址: https://www.jianshu.com/p/8548fcc77861
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞