本文是小白文章,大神请忽略。
Python中的sklearn库提供了方便的机器学习算法,那么实现简单的线性回归,所需步骤如下:提出问题
理解问题
清洗数据
构建模型
评估模型
下面是具体的案例展示,案例数据为”学习时间“与”分数“
首先准备数据:提出问题:”学习时间“与”分数“之间是否线性相关,如果是,求出最佳拟合度如何?
理解数据:查看数据属性
上图可以看出,这是一个20行,两列的二维数组,数据信息完整。
数据集中只有两列数据,查看相关系数R,判断两者是否具有相关性。
上图所示,学习时间与分数的相关系数为0.923985,说明相关程度很高。
绘制散点图:
两者相关性程度越高,代表线性拟合程度越佳。可以查看两者的散点图。
上图所示,“学习时间”和“分数”呈现强烈的正线性相关,下一步求取最佳拟合度。
3.清洗数据
本例中数据信息完整,该步骤省略。
4.构建模型
通过上面的的散点图与相关系数值,判断“学习时间”与“分数”存在正线性相关,利用sklearn进行机器学习训练,并且构建一元线性回归模型。
4.1 导入sklearn包,建立训练数据与测试数据集
原数据为20,从中随机选择训练数据与测试数据的比例为 8:2,训练数据为16,测试数据为4
数据集的数量太小,其数据拟合的准确性比不足
4.2 构建线性回归模型
利用训练数据,创建线性回归模型,进行数据训练
然而出现了报错:
报错中显示,需要一个二维数组的数据只得到了一个一维数组,只有一个特征时,请用reshape(-1,1)改变数据组维度。
求取最佳拟合线的参数:
绘制最佳拟合线:
5.评估模型
决定系数R平方,是检验最佳拟合程度的指标,代表回归线可以描述多少数据总波动。
上图中,模型的决定系数R平方,表示只有部分波动可以被拟合线所描述,说明拟合度不高。
在途中绘制,训练数据和测试数据散点图,以及最佳拟合线。
综上可得:
(1)“学习时间”与“分数”具有强烈的正弦型相关,相关系数为0.92:;
(2)两者关系可以用函数Y=16.62085818+5.994135470628478 来进行预测。
多模仿,多借鉴,马到功成。