08.线性回归 Linear Regression

一元线性回归

假设你想计算匹萨的价格。 虽然看看菜单就知道了,不过也可以用机器学习方法建一个线性回归模型,通过分析匹萨直径与价格的线性关系,来预测任意直径匹萨的价格。假设我们查到了部分匹萨的直径与价格的数据,这就构成了训练数据,如下表所示:

08.线性回归 Linear Regression
import matplotlib.pyplot as plt
def runplt():
	plt.figure()
	plt.title("Cost and diameter")
	plt.xlabel("Diameter/inch")
	plt.ylabel("Cost/dollar")
	plt.axis([0,25,0,30])
	plt.grid(True)
	return plt
plt = runplt()
X = [[6],[8],[10],[14],[18]]
y = [[7],[9],[13],[17.5],[18]]
plt.plot(X,y,'k.')
plt.show()
08.线性回归 Linear Regression

上图中,x轴表示匹萨直径,y轴表示匹萨价格。 能够看出,匹萨价格与其直径正相关,这与我们的日常经验也比较吻合,自然是越大越贵。

下面就用 scikit-learn 来建模

# 创建并拟合模型
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X,y)
print("Predict 12 inch cost:$%.2f" % model.predict([[12]]))
Predict 12 inch cost:$13.68

一元线性回归假设输入变量和输出变量之间存在线性关系,这个线性模型所构成的空间是一个超平面(hyperplane)。 超平面是 n 维欧氏空间中维度减一的线性子空间,如平面中的直线、空间中的平面,总比包含它的空间少一维。 在一元线性回归中,一个维度是输入变量,另一个维度是输出变量,总共两维。 因此,其超平面只有一维,就是一条线。
上述代码中 sklearn.linear_model.LinearRegression 类是一个估计器(estimator)。 估计器依据观测值来预测结果。 在 scikit-learn 里面,所有的估计器都带有 fit() 和 predict() 方法。 fit() 用来分析模型参数,predict() 是通过 fit() 算出的模型参数构成的模型,对解释变量进行预测获得的值。 因为所有的估计器都有这两种方法,所有 scikit-learn 很容易实验不同的模型。 LinearRegression 类的 fit() 方法学习下面的一元线性回归模型:

08.线性回归 Linear Regression

y 表示输出变量的预测值,本例指匹萨价格预测值, x是输入变量,本例指匹萨直径。 截距和相关系数是线性回归模型最关心的事情。下图中的直线就是匹萨直径与价格的线性关系。 用这个模型,可以计算不同直径的价格。

plt = runplt()
X = [[6],[8],[10],[14],[18]]
y = [[7],[9],[13],[17.5],[18]]
model = LinearRegression()
model.fit(X,y)
X2 = [[0], [10], [14], [25]]
y2 = model.predict(X2)
plt.plot(X, y, 'k.')
plt.plot(X2, y2, 'g-')
plt.show()
08.线性回归 Linear Regression

原创文章,作者:朋远方,如若转载,请注明出处:https://caovan.com/08-xianxinghuigui-linear-regression/.html

(0)
打赏 微信扫一扫 微信扫一扫
朋远方的头像朋远方
上一篇 2022年11月14日 下午9:46
下一篇 2022年11月15日 下午10:14

相关推荐

发表回复

登录后才能评论