侧边栏壁纸
博主头像
Zeeland

The mixture of software dev+Iot+ml+anything

  • 累计撰写 60 篇文章
  • 累计创建 45 个标签
  • 累计收到 7 条评论

目 录CONTENT

文章目录

使用 scikit-learn 介绍机器学习

Zeeland
2022-12-08 / 0 评论 / 0 点赞 / 258 阅读 / 1,261 字

Abstract

在本节中,我们介绍一些在使用 scikit-learn 过程中用到的 机器学习 词汇,并且给出一些示例阐释它们。

机器学习:问题设置

对于一般的机器学习任务来说,一个问题通常会有n个样本数据,然后尝试预测位置数据的属性。如果每个样本是多个属性的数据(即单个样本的输入为多位记录),就说它有许多"属性",或称为feature(特征)。

我们可以将学习问题分为几大类:

  • 监督学习 , 其中数据带有一个附加属性(标签),即我们想要预测的结果值( 点击此处 转到 scikit-learn 监督学习页面)。比如数据集中一张打上标签“5”的“数字5”的图片,运用这样的数据训练预测则为监督学习。

  • 分类 : 样本属于两个或更多个类,我们想从已经标记的数据中学习如何预测未标记数据的类别。 分类问题的一个示例是手写数字识别(事实上其也是监督学习),其目的是将每个输入向量分配给有限数目的离散类别之一。 我们通常把分类视作监督学习的一个离散形式(区别于连续形式),从有限的类别中,给每个样本贴上正确的标签。

  • 回归 : 如果期望的输出由一个或多个连续变量组成,则该任务称为 回归 。 回归问题的一个示例是预测鲑鱼的长度是其年龄和体重的函数。

  • 无监督学习, 其中训练数据由没有任何相应目标值的一组输入向量x组成。这种问题的目标可能是在数据中发现彼此类似的示例所聚成的组,这种问题称为 聚类 , 或者,确定输入空间内的数据分布,称为 密度估计 ,又或从高维数据投影数据空间缩小到二维或三维以进行 可视化 (点击此处 转到 scikit-learn 无监督学习页面)。

训练集和测试集

机器学习是从数据的属性中学习,并将它们应用到新数据的过程。 这就是为什么机器学习中评估算法的普遍实践是把数据分割成 训练集 (我们从中学习数据的属性)和 测试集 (我们测试这些性质)。

加载示例数据集

scikit-learn 提供了一些标准数据集,例如 用于分类的 iris 和 digits 数据集 和 波士顿房价回归数据集

import pandas as pd  
from sklearn import datasets

digits = datasets.load_digits()  

数据集是一个类似字典的对象,它保存有关数据的所有数据和一些元数据。 该数据存储在 .data 成员中,它是 n_samples, n_features 数组。 在监督问题的情况下,一个或多个响应变量存储在 .target 成员中。 有关不同数据集的更多详细信息,请参见 专用数据集部分 。

例如,在数字数据集的情况下,digits.data 使我们能够得到一些用于分类的样本特征:

print(digits.data())

使用digits.keys() 可以查看digits类的一些属性。

print(digits.keys())

在数字数据集的情况下,任务是给出图像来预测其表示的数字。 我们给出了 10 个可能类(数字 0 到 9)中的每一个的样本,我们在这些类上 拟合 一个 估计器 ,以便能够 预测 未知的样本所属的类。

在 scikit-learn 中,分类的估计器是一个 Python 对象,它实现了 fit(X, y)predict(T) 等方法。

我们把我们的估计器实例命名为 clf ,因为它是一个分类器(classifier)。它现在必须拟合模型,也就是说,它必须从模型中 learn(学习) 。 这是通过将我们的训练集传递给 fit 方法来完成的。作为一个训练集,让我们使用数据集中除最后一张以外的所有图像。 我们用 [:-1] Python 语法选择这个训练集,它产生一个包含 digits.data 中除最后一个条目(entry)之外的所有条目的新数组

from sklearn import svm
clf = svm.SVC(gamma=0.001, C=100.)

关于如何选择模型的参数?
在这个示例中,我们手动设置 gamma 值。不过,通过使用 网格搜索 及 交叉验证 等工具,可以自动找到参数的良好值。

References

https://apachecn.gitee.io/sklearn-doc-zh/#/docs/master/51

0

评论区