机器学习:问题背景
学习问题分以下几类:
有监督学习
分类
回归
无监督学习
聚类,密度估计等
加载示例数据集
有几个标准数据集,鸢尾花和手写字用于分类,以及波士顿房价数据集用于回归。
鸢尾花与手写字数据集的导入。
数据集就是一个字典对象,包含了所有的数据以及一些关于数据的元数据。数据存储在.data成员中,它是一个n个样本,n个特征的数组。在监督学习的问题中,因变量存在.target成员中。
数据数组的形状
数据总是二维数组,(n_sample,n_features)的形状,即使原始数据可能有着不同的形状。在手写字识别中,每个原始例子是(8 * 8)。
但是在data中变成了(1 * 64)。
学习以及预测
在scikit-learn中,分类器是一个实现了方法fit(x,y)和predict(T)的Python对象。
先把分类器当做是一个黑盒。
选择模型的参数
在这个例子中我们是人工选择的参数,为了寻找这些参数的更好的值,我们能使用例如网格搜索和交叉验证的工具。
分类器实例拟合模型是通过传递训练集给fit方法。对于训练集,我们使用除了最后一张图片的所有图片,最后一张图片用来做预测。
来预测:
模型持久化
使用pickle。
使用joblib,joblib在大数据方面更加高效,但是遗憾的是它只能把数据持久化到硬盘而不是字符串(搬到字符串意味着数据在内存中)。
之后可以重新加载模型(也可以在其他的Python进程中)
注意:joblib.dump和joblib.load也接收像文件一样的对象而不是文件名。
惯例
类型转换
除非特别指明,输入将被转换为float64:
x是float32型,可以通过fit_transform(x)转换为float64。
回归的目标类型转化为float64,分类的目标类型保留下来。
改装和更新参数
超参数在通过set_params()方法创建后能够更新。调用fit()函数超过一次将会重写之前fit()所学的内容。
多类别vs多标签拟合
当使用多类别分类器,所执行的学习和预测任务取决于适合于目标数据的格式。