一、概念
监督学习就是学习通过使用随身携带的标签、某些训练数据中的规律性,以便我们可以预测一些新的、前所未见的测试数据的标签。
这里的标签是对某种事物的分类,可以比喻成作业的标准答案,对于每次的监督学习,我们给出的答案跟标准答案有区别时,老师和家长就会不断地监督我们来纠正,这样我们的正确率就会越来越高。
在现实世界中,监督学习可用于风险评估、图像分类、欺诈检测、垃圾邮件过滤等。
二、对模型进行评分估计
对于监督学习所用的模型,我们怎么知道这个模型的好坏?在现实生活中,没有一个模型能够百分百预测正确,所以我们要学习如何去评估一个模型的性能。
对于分类模型
accuracy_score(准确性):计算预测正确的数据点数占总数据点数的比例。如在猫狗图片分类中,准确性表示已经正确分类成猫或狗的的图片的比例。
precsiion_score(精度):在预测为猫的图片中,实际上真正为猫的比例。
recall_score(召回率):在所有为猫的图片中,模型预测为猫的比例。也称为敏感度。
当遇到回归模型时,上面的指标不再有效。毕竟,我们现在预测的是连续的输出值,而不是不同的分类标签。
mean_square_error(均方误差):确定模型预测效果的最直接指标。回归问题最常用的误差指标只是测量训练集中每个数据点的预测值和真实目标值之间的平方误差,在所有数据点上取平均值。
explained_variance_score(解释方差):通过计算预测标签和实际标签之间仍然存在的方差。此指标是分数,因此其值必须介于 0 和 1 之间
R_square:𝑅平方与解释的方差分数密切相关,
r2 = 1 - (mean_square_error / explained_variance_score)
我们的预测与数据的拟合越好, 接近的值𝑅平方分数将为 1。
三、监督学习的步骤
1、首先确定训练数据集的类型
2、收集/收集标记的训练数据(一般可能需要手动标记)
3、将训练数据集拆分为训练数据集、测试数据集和验证数据集。
4、确定训练数据集的输入特征,这些特征应该有足够的知识使模型能够准确地预测输出。
5、确定适合模型的算法,如支持向量机、决策树等。
6、在训练数据集上执行算法。有时我们需要验证集作为控制参数,它们是训练数据集的子集。
7、通过提供测试集来评估模型的准确性。如果模型预测出正确的输出,这意味着我们的模型是准确的。
四、简单学习k-NN算法
原理:选取离未知样本最近的k个已知样本,根据少数服从多数原则,将未知样本归类为类别占比最多的那一类。其主要思想是"近朱者赤,近墨者黑”。
k表示选取k个最邻近未知样本的已知样本,在 scikit-learn 中 KNN算法的 K 值是通过 n_neighbors 参数来调节的,默认值是 5。
K值选的太大易引起欠拟合,太小容易过拟合,需交叉验证确定K值。
五、回归模型
回归就是预测连续的结果,而不是预测 离散类标签。如果输入变量和输出变量之间存在关系,则使用回归算法。它用于预测连续变量,例如天气预报、市场趋势等。以下是一些流行的回归算法,它们属于监督学习:
- 线性回归
- 回归树
- 非线性回归
- 贝叶斯线性回归
- 多项式回归
实战——预测波士顿房价
#导入相应的模块
from sklearn import datasets
from sklearn import metrics
#加载数据
boston = datasets.load_boston()
#查看boston函数的字段
dir(boston)
#['DESCR', 'data', 'feature_names', 'filename', 'target']
#这个数据一共有506个数据,13的特征点
boston.data.shape
#训练模型
linreg = linear_model.LinearRegression()
#将数据分为训练数据与预测数据
X_train, X_test, y_train, y_test = train_test_split(boston.data,
boston.target,
test_size=0.1,
random_state=42)
#开始训练
linreg.fit(X_train, y_train)
#查看均方误差
metrics.mean_squared_error(y_train, linreg.predict(X_train))
#22.7375901544866
#查看决定系数(R平方)
linreg.score(X_train, y_train)
#0.7375152736886281