本文包含以下内容:
- 机器学习
- 简述线性回归
一、机器学习
1.定义:将普通计算机的算法,通过数据模型后输出结果,可以随着学习时长模型优化越来越好。
2.机器学习的步骤:提出问题——理解数据——数据清洗——构建模型——评估预测,其中最重要的就是机器学习算法(即模型),最后需要对模型进行评估预测。
3.理解数据特征及其标签:特征是数据的一些属性,标签是通过机器学习对数据的预测结果
二、简述线性回归
1.准备工作:安装sklearn(全名Scikit-learn)
Scikit-learn 是开源的 Python 库,通过统一的界面实现机器学习、预处理、交叉验证及可视化算法。
scikit-learn 网站:https://scikit-learn.org
2.相关性分析
创建一个具有线性相关的数据集
from
以学习时间为X轴,分数为Y轴画出数据散点图
#提取特征和标签
#特征features
exam_X=examDf.loc[:,'学习时间']
#标签labes
exam_y=examDf.loc[:,'分数']
#绘制散点图
import matplotlib.pyplot as plt
#散点图
plt.scatter(exam_X, exam_y, color="b", label="exam data")
#添加图标标签
plt.xlabel("Hours")
plt.ylabel("Score")
#显示图像
plt.show()
可以看出分数会随着学习时间增加而变大,两者之间有线性相关关系
- 三种线性相关性
- 如何相关性程度:我们需要设计一个统计量,这个统计量应该具有以下两个功能
(1)协方差:cov(X,Y)=E[(X-E[X])(Y-E[Y])]
缺点:数据的变化幅度会很大的影响协方差
(2)相关系数:是标准化后的协方差,消除了数据变化幅度影响,反映的是数据每单位变化的相似程度
具有以下两个功能:
相关系数的意义:
1)两个变量的相关性方向。r<0 为负线性相关,r>0 为正线性相关。相关系数r的三个极值:r=1,r=-1,r=0。
2)相关性大小:表示两个单位的相关性程度。r=0.6~1:强相关;r=0.3~0.6:中等程度相关;r=0~0.3:弱相关
相关系数的Python实现:pandas下的corr()函数
3.最佳拟合线:是指找到一条最佳的回归直线对观测值的拟合程度最好。
y = bx + a 其中b是回归系数,a是截距
如何求得a和b?
最小二乘法就是使得误差平方和的值最小即:误差=实际值-预测值
4.线性回归的实现
(1)提取特征和标签
(2)建立训练数据和测试数据
绘制数据散点图
(3)用训练数据训练模型
通过搜索引擎发现,报错原因是训练数据只输入了一个特征,需要用array.reshape(-1, 1)来改变数组的形状。
补充知识:reshape行的参数是-1表示什么呢?例如reshape(-1,列数)如果行的参数是-1,就会根据所给的列数,自动按照原始数组的大小形成一个新的数组。例如reshape(-1,1)就是改变成1列的数组,这个数组的长度是根据原始数组的大小来自动形成的。
修改bug后:
step1:将训练数据导入sklearn的线性模型训练模型
step2:求出线性回归方程,其中intercept为截距、coef为回归系数
step3:绘图查看最佳拟合线和散点
(4)模型评估(使用测试数据)
评估模型精准度:决定系数R平方
代码实现
(5)把训练数据集(图中蓝色的点),和测试数据集(图中红色的点)放到一张图上来比较看