欢迎访问宙启技术站
智能推送

使用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构建一个简单的线性回归模型,包括数据预处理、将数据集分为训练集和测试集、训练模型、使用测试集进行预测,以及可视化预测结果。还可以使用其他工具来改进模型性能,例如特征选择和模型优化技术,以提高预测精度。