使用Python编写线性回归模型
发布时间:2023-06-15 21:45:42
线性回归是机器学习中最基本的模型之一, 是一种常见的监督式学习算法。线性回归建立在线性假设下,通过拟合数据集中的线性关系来预测目标变量。在本文中,我们将使用Python构建一个简单的线性回归模型。
数据预处理
我们将使用Scikit-learn的波士顿房价数据集,数据集包含14个字段,其中13个是特征,一个是目标变量。我们将使用Numpy和Pandas进行读取和处理数据,以及Matplotlib进行数据可视化:
import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.datasets import load_boston boston = load_boston() df = pd.DataFrame(boston.data, columns=boston.feature_names) df['target'] = boston.target
接下来,我们将使用Pandas DataFrame和Matplotlib来探索数据集:
fig, axes = plt.subplots(nrows=3, ncols=5, figsize=(16,10))
for i, ax in enumerate(axes.flat):
if i < len(df.columns):
ax.scatter(df[df.columns[i]], df['target'])
ax.set_xlabel(df.columns[i])
ax.set_ylabel('Target')
我们可以看到,有一些特征和目标变量之间存在一定的线性关系。
将数据集分为训练集和测试集
接下来,我们将使用Scikit-learn的train_test_split函数将数据集分为训练集和测试集:
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(df[boston.feature_names], df['target'], test_size=0.2, random_state=42)
训练一个线性回归模型
我们将使用Scikit-learn的LinearRegression类来训练线性回归模型:
from sklearn.linear_model import LinearRegression model = LinearRegression() model.fit(X_train, y_train)
使用测试集进行预测
接下来,我们将使用测试集进行预测,并计算预测结果的均方误差(MSE)和决定系数(R2):
from sklearn.metrics import mean_squared_error, r2_score
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print('Mean Squared Error: ', mse)
print('R-squared: ', r2)
结果显示MSE为25.42,R2为0.67,这意味着模型能够解释目标变量的67%的变异。
可视化预测结果
接下来,我们使用Matplotlib绘制预测结果的散点图,其中绿色的点表示预测结果,红色的点表示实际结果:
plt.scatter(y_test, y_pred)
plt.plot([0,50], [0,50], '--k')
plt.xlabel('True Price')
plt.ylabel('Predicted Price')
结果可以看到,预测结果与真实结果之间存在一定的相关性。
总结
本文演示了如何使用Python构建一个简单的线性回归模型,包括数据预处理、将数据集分为训练集和测试集、训练模型、使用测试集进行预测,以及可视化预测结果。还可以使用其他工具来改进模型性能,例如特征选择和模型优化技术,以提高预测精度。
