本文只涉及最基本的线性回归
首先我们来学习一下线性回归
一般来说,机器学习分为四个大类,监督学习,半监督学习,无监督学习以及强化学习。而在监督学习下又分为两大类:分类和回归。
那么什么叫回归呢?
简单来说,回归就是监督学习下针对于连续型变量的的一类问题的解决方法(因为分类是主要是解决离散型的)。比方说,我们根据一些数据拟合一个曲线,然后用你拟合的这个曲线去预测我们不知道的一些数据,给x预测y。
线性回归是回归类别下的一个分类,还有树回归等等。
那么这个线性是什么意思呢?
线性指的是系数的线性,这点很重要,这导致线性回归所能模拟的关系远远不止线性关系,我们通过对特征的非线性变化,以及广义线性模型推广,就可以使输出和特征之间的函数关系可以是高度非线性的;结合线性回归的易解释性,就使得它在深度学习非常火的今天也有着非常重要的地位。
下面开始介绍。
假如你有一些散点,例如像下面这样的,你想找到一条线,这条线跟这些点之间距离的平方和是最小的,然后你就能利用这条线去预测了。完,就是这么简单。
为啥还要距离的平方呢?
因为这个点到直线的距离公式有个绝对值,非常的讨厌,我们直接用平方去掉它,还能加大误差的显示,一箭双雕。
下面介绍怎么去实现。
我们需要的工具有:
- python3
- jupyter notebook
- matplotlib库
- sklearn库
- numpy库
- pandas库
- ...
以上库均可以使用pip工具安装,非常的方便(记得改清华的源,不然等你下完python100都出来了)
安装完这些后,使用命令提示符打开jupyter notebook
点击new下的python3按钮
来到界面
输入以下代码导入库,具体什么用自己查
import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn import linear_model from sklearn.linear_model import LinearRegression
然后,自己创造一些数据,使用reshape函数给他归到一列
lr=LinearRegression() x=np.array([150,200,250,300,350,400,600]) y=np.array([6450,7450,8450,9540,11450,15450,18450]) op=x.reshape(-1,1) po=y.reshape(-1,1)
使用fit去训练,predict预测,score评估
lr.fit(op,po) predictions=lr.predict(op)
最后用plt画出来
plt.scatter(x,y) plt.plot(x,predictions) plt.show()
我们就能得到拟合的曲线