提示:适合初学者使用
提示:记得点点关注,持续更新机器学习系列
回归的目的是为了预测,比如预测明天的天气温度,预测股票的走势…
回归之所以能预测是因为他通过历史数据,摸透了“套路”,然后通过这个套路(或者说规律)来预测未
来的结果。
线性回归的位置如上图所示,它属于机器学习 – 监督学习 – 回归 – 线性回归。
先从定义看起:线性回归分析(Linear Regression Analysis)是确定两种或两种以上变量间相互依赖的定
量关系的一种统计分析方法。本质上说,这种变量间依赖关系就是一种线性相关性,线性相关性是线性
回归模型的理论基础。
例如:
身高:由父亲的身高、母亲的身高、家庭收入、所在地区等因素决定
房价:由地段、面积、周围配套、时间等因素决定
房子」越大,「租金」就越高
「汉堡」买的越多,花的「钱」就越多
杯子里的「水」越多,「重量」就越大
线性回归要做的是就是找到一个数学公式能相对较完美地把所有自变量组合(加减乘除)起来,得到的
结果和目标接近
线性回归和逻辑回归是 2 种经典的算法。经常被拿来做比较,下面整理了一些两者的区别
如需分析数据,了解我们要处理的数据类型非常重要。我们可以将数据类型分为三种主要类别:
数值数据是数字,可以分为两种数值类别:
线性回归使用数据点之间的关系在所有数据点之间画一条直线。这条线可以用来预测未来的值。
例如:x 轴表示车龄,y 轴表示速度。我们已经记录了 13 辆汽车通过收费站时的车龄和速度。让我们看
看我们收集的数据是否可以用于线性回归:
import matplotlib.pyplot as plt
x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]
plt.scatter(x, y) # 绘制散点图
plt.show()
如图:
线性回归线具有Y = a + bX形式的方程,其中X是解释变量(自变量,特征变量),Y是因变量。直线的
斜率为b,a是截距。
核心思想是获得一条最适合数据的线。最佳拟合线是总预测误差(所有数据点)尽可能小的那一条。误
差是点到回归线的距离。
sklearn中的线性回归模型如下:
from sklearn.linear_model import LinearRegression
sklearn.linear_model.LinearRegression()
它表示普通最小二乘线性回归。线性回归拟合具有系数 w = (w1, …, wp) 的线性模型,以最小化数据集中
观察到的目标与通过线性近似预测的目标之间的残差平方和。它的完整参数如下:
sklearn.linear_model.LinearRegression(fit_intercept=True,
normalize=False, copy_X=True)
参数解释:
假设有例子,x和y分别表示某面积和总价,需要根据面积来预测总价。
第一步导入模块:
import numpy as np
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
第二步:导入数据并绘制散点图
# 创建数据
x = np.array([6, 16, 26, 36, 46, 56]).reshape((-1, 1))
y = np.array([4, 23, 10, 12, 22, 35])
plt.scatter(x, y) # 绘制散点图
plt.show()
第三步:创建模型并拟合
model = LinearRegression().fit(x, y)
第四步:评估模型
r_sq = model.score(x, y)
print('确定系数:', r_sq)
第五步:获取线性回归模型中的参数
# 打印截距:
print('截距:', model.intercept_)
# 打印斜率
print('斜率:', model.coef_)
# 预测一个响应并打印它:
y_pred = model.predict(x)
print('预测结果:', y_pred, sep='\n')