从零开始:使用Scikit-learn实现线性回归
简介
线性回归是一种广泛使用的机器学习算法,用于建立一个自变量与因变量之间的线性关系模型。该模型可以用于预测数值型的结果,例如预测房价、销售量等。Scikit-learn是一个机器学习库,提供了许多强大的工具和算法,包括线性回归的实现。
本篇博客将介绍使用Scikit-learn库实现线性回归的步骤,并演示如何应用于一个示例问题。
线性回归原理
线性回归假设自变量与因变量之间的关系可以用线性函数表示,即 y = mx + c,其中 y 是因变量,x 是自变量,m 是斜率,c 是截距。这个假设可以写成矩阵形式为 y = Xw,其中 X 是自变量的矩阵,w 是待求的权重向量。
线性回归的目标是找到最佳的权重向量 w,使得预测值 y’ = Xw 最接近实际观测值 y。为了衡量预测值与实际值的差异,常用的评估指标是平方误差(Mean Squared Error, MSE)。
使用Scikit-learn实现线性回归步骤
以下是使用Scikit-learn实现线性回归的典型步骤:
- 导入必要的库:首先,我们要导入需要的库,包括numpy用于数值计算,matplotlib用于绘图。
import numpy as np import matplotlib.pyplot as plt
- 准备数据集:接下来,我们需要准备数据集,将自变量和因变量分别保存在X和y中。
X = np.array([[1], [2], [3], [4], [5]]) y = np.array([2, 4, 6, 8, 10])
- 创建线性回归模型:使用Scikit-learn的线性回归类LinearRegression创建线性回归模型对象。
from sklearn.linear_model import LinearRegression model = LinearRegression()
- 拟合模型:使用fit()方法拟合模型,寻找最佳的权重向量。
model.fit(X, y)
- 预测结果:使用predict()方法进行预测,可以输入单个自变量或多个自变量。
X_test = np.array([[6], [7]]) y_pred = model.predict(X_test)
- 可视化结果:将数据点和预测线绘制在图上,查看模型效果。
plt.scatter(X, y, color='blue') plt.plot(X_test, y_pred, color='red') plt.xlabel('X') plt.ylabel('y') plt.title('Linear Regression') plt.show()
示例演示
下面我们将通过一个示例问题演示如何使用Scikit-learn实现线性回归。
假设我们有一组关于房屋面积与价格的数据集,如下表所示:
面积(平方米) | 价格(万元) |
---|---|
70 | 315 |
90 | 420 |
110 | 520 |
130 | 615 |
150 | 725 |
我们的目标是根据房屋面积预测价格。
首先,我们需要准备数据集,并绘制数据点的散点图。
import numpy as np
import matplotlib.pyplot as plt
# 准备数据集
X = np.array([[70], [90], [110], [130], [150]])
y = np.array([315, 420, 520, 615, 725])
# 绘制数据点散点图
plt.scatter(X, y, color='blue')
plt.xlabel('Area (sqm)')
plt.ylabel('Price (k)')
plt.title('House Price vs. Area')
plt.show()
接下来,我们使用Scikit-learn实现线性回归。
from sklearn.linear_model import LinearRegression
# 创建线性回归模型对象
model = LinearRegression()
# 拟合模型
model.fit(X, y)
# 预测结果
X_test = np.array([[80], [100]])
y_pred = model.predict(X_test)
# 绘制数据点和预测线
plt.scatter(X, y, color='blue')
plt.plot(X_test, y_pred, color='red')
plt.xlabel('Area (sqm)')
plt.ylabel('Price (k)')
plt.title('House Price vs. Area')
plt.show()
运行以上代码后,我们将得到数据点的散点图和线性回归的结果图。
结论
本篇博客介绍了使用Scikit-learn实现线性回归的步骤,并通过一个示例问题演示了如何应用于实际情况。线性回归是一个重要的机器学习算法,可以用于解决许多预测问题,例如房价预测、销售量预测等。通过Scikit-learn提供的工具和算法,我们可以方便地实现线性回归模型,并进行预测和可视化分析。
希望本篇博客对于初学者理解线性回归以及使用Scikit-learn实现线性回归有所帮助。如有任何疑问或建议,请随时告诉我。感谢阅读! 参考文献: