为了利用机器学习进行简单的线性回归,先理解机器学习和线性回归的概念,然后通过案例进行机器学习。本文主要目录如下:
一、机器学习的概念
二、线性回归的概念
三、机器学习线性回归模型
(一)导入数据集
(二)提取特征标签
(三)绘制原始数据散点图
(四)查看相关系数
(五)建立训练数据和测试数据
(六)构建线性回归模型
1、数据形状的转化
2、导入线性回归包,创建模型,训练模型
3、查看截距和相关系数
4、查看模型准确率(评估模型)
5、绘制训练数据单点图:通过训练数据预测值绘制最佳拟合曲线,绘制测试数据散点图
一、机器学习概念
(一)概念
从广义上来说,机器学习是一种能够赋予机器学习的能力以此让它完成直接编程无法完成的功能的方法。
从实践的意义上来说,机器学习是一种通过利用数据,训练出模型,然后使用模型预测的一种方法。
机器学习与人类思考的经验过程是类似的,不过它能考虑更多的情况,执行更加复杂的计算。事实上,机器学习的一个主要目的就是把人类思考归纳经验的过程转化为计算机通过对数据的处理计算得出模型的过程。通过计算机得出的模型能够以近似于人的方式解决很多灵活复杂的问题。
机器学习过程如下:
首先,需要在计算机中存储历史数据;
其次,将存储的历史数据通过机器学习算法进行处理,这个过程在机器学习中叫做“训练”,处理的结果可以被用来对新的数据进行预测,这个结果一般称之为“模型”。对新数据的预测过程在机器学习中叫做“预测”。
“训练”与“预测”是机器学习的两个过程,“模型”则是过程的中间输出结果,“训练”产生“模型”,“模型”指导“预测”。
机器学习中的“训练”与“预测”过程可以对应到人类的“归纳”和“推测”过程。通过这样的对应,可以发现,机器学习的思想并不复杂,仅仅是对人类在生活中学习成长的一个模拟。由于机器学习不是基于编程形成的结果,因此它的处理过程不是因果的逻辑,而是通过归纳思想得出的相关性结论。
机器学习最通俗的解释就是让机器学会决策。对于我们人来说,比如去菜市场里挑选芒果,从一堆芒果中拿出一个,根据果皮颜色、大小、软硬等属性或叫做特征,我们就会知道它甜还是不甜。类似的,机器学习就是把这些属性信息量化后输入计算机模型,从而让机器自动判断一个芒果是甜是酸,这实际上就是一个分类问题。
分类和回归是机器学习可以解决两大主要问题,从预测值的类型上看,连续变量预测的定量输出称为回归;离散变量预测的定性输出称为分类。例如:预测明天多少度,是一个回归任务;预测明天阴、晴、雨,就是一个分类任务。
(二)机器学习的方法
机器学习中有众多算法,使用最多、影响最广、种类最全的典型算法包括:回归算法、神经网络、SVM(支持向量机)、聚类算法、降维算法、推荐算法这六种。另外,机器学习界还有其他的如高斯判别、朴素贝叶斯、决策树等等算法。
回归算法是后面若干强大算法的基石,如果不理解回归算法,无法学习那些强大的算法。
回归算法有两个重要的子类:线性回归和逻辑回归。
线性回归和逻辑回归区别在于:
1、线性回归处理的是数值问题,也就是最后预测出的结果是数字,例如房价;
2、逻辑回归属于分类算法,也就是说,逻辑回归预测结果是离散的分类,例如判断这封邮件是否是垃圾邮件,以及用户是否会点击此广告等等;
3、逻辑回归算法划出的分类线基本都是线性的(也有划出非线性分类线的逻辑回归,不过那样的模型在处理数据量较大的时候效率会很低),这意味着当两类之间的界线不是线性时,逻辑回归的表达能力就不足。
本文主要讲回归算法中的线性回归。
二、线性回归概念
在统计学中,线性回归(Linear Regression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。
回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。
一般来说,线性回归都可以通过最小二乘法求出其方程,可以计算出对于y=bx+a (一元线性)的直线。需要做到的是拟合训练集数据找出合适的参数a和b,确定方程式,用于预测未知的样本。
三、机器学习线性回归模型
做案例模型前,先要完成如下两步操作 :
使用conda命令安装机器学习包:sklearn,安装命令: conda install scikit-learn。 在Jupyter notebook中引入有序字典的包和绘图包:
机器学习线性回归模型案例,用于预测考试分数和学习时长的关系。
(一)导入数据集
(二)提取特征标签
(三)绘制原始数据散点图
导入绘图包:importmatplotlib.pyplotasplt(导入数据集前已导入,此处重复仅用于说明保持步骤完整性)绘制散点图:plt.scatter(横轴,纵轴,颜色,标题)
(四)查看相关系数
(五)建立训练数据和测试数据
在图上看下具体哪几个点被作为训练数据,哪几个点作为测试数据了:
导入绘图包:import matplotlib.pyplot(导入数据集前已导入,此处重复仅用于说明保持步骤完整性)
(六)建立线性回归模型
1、数据形状的转化
关于reshape()用法的说明:
如果你输入的数据只有1个特征,需要用array.reshape(-1, 1)来改变数组的形状;reshape行的参数是-1表示什么呢?例如reshape(-1,列数)。如果行的参数是-1,就会根据所给的列数,自动按照原始数组的大小形成一个新的数组,例如reshape(-1,1)就是改变成1列的数组,这个数组的长度是根据原始数组的大小来自动形成的。原始数组总共是2行*3列=6个数,那么这里就会形成6行*1列的数组;reshape列的参数是-1表示什么呢?例如reshape(行数,-1)。如果列的参数是-1,就会根据所给的行数,自动按照原始数组的大小形成一个新的数组,例如reshape(1,-1)就是改变成1行的数组,这个数组的列数是根据原始数组的大小来自动形成的。原始数组总共是2行*3列=6个数,那么这里就会形成1行*6列的数组;
2、 导入线性回归包,创建模型,训练模型
第1步:导入线性回归,fromsklearn.linear_modelimportLinearRegression第2步:创建模型,线性回归模型,model =LinearRegression()第3步:训练模型,model.fit(X_train , y_train),fit函数
3、查看截距和相关系数
最佳拟合线:z= + x截距intercept:a回归系数coef:b
画出那条最佳拟合线,看看用训练数据训练出来的是怎样的一条线:
第1步:训练数据散点图:plt.scatter(X_train, y_train, color='blue', label="train data")第2步:训练数据的预测值:y_train_pred =model.predict(X_train)第3步:绘制最佳拟合线:plt.plot(X_train,y_train_pred, color='black', linewidth=3, label="best line")
4、查看模型准确率(评估模型)
评估1:相关系数和协方差都可以看两变量的相关性程度,但相关系数剔除了协方差易受变量变化幅度影响的问题。
评估2:回归系数是看回归线拟合程度:有多少百分比的y的波动可以由回归线描述,值越高,回归模型越精确,取值范围0~1。
线性回归的scroe方法得到的是决定系数R平方决定系数R平方=1-误差平方和/总波动评估模型:决定系数R平方,model.score(X_test,y_test)
将测试数据画到图上,看下情况怎么样:
第1步:训练数据散点图,plt.scatter(X_train, y_train, color='blue', label="train data")第2步:训练数据的预测值,y_train_pred =model.predict(X_train)第3步:绘制最佳拟合线:标签用的是训练数据的预测值y_train_pred,plt.plot(X_train,y_train_pred, color='black', linewidth=3, label="best line")第4步:测试数据散点图,plt.scatter(X_test,y_test, color='red', label="test data")
PS:整个机器学习的步骤如下,本文案例中重点j分析构建模型和评估。
1.提出问题2.理解数据3.数据清洗4.构建模型5.评估(通过测试数据评估预测准确与否)