首页 > 文章列表 > Python中的多变量线性回归实例

Python中的多变量线性回归实例

Python 线性回归 多变量
345 2023-06-10

在机器学习的领域中,线性回归是一种常用的方法。多变量线性回归是一种可以预测一个或多个自变量与因变量之间的线性关系的方法,通常用于预测房产、股票价格等市场趋势。

Python是一门十分流行的编程语言,具有简单易学、易于编写和调试的特点。在Python中,使用Scikit-learn库可以很容易地实现多变量线性回归模型。

在本文中,我们将通过一个房价预测的实例来介绍Python中的多变量线性回归。

导入库和数据

为了进行多变量线性回归模型的实现,我们需要导入一些Python库:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

这里使用的数据来自于Kaggle网站的Boston房产数据集。我们可以使用Pandas库中的read_csv函数从数据文件中读取数据:

data = pd.read_csv('Boston.csv')

数据的探索和可视化

在建立模型之前,我们应该对数据进行探索,了解每个特征的分布和特征之间的关系。

我们可以使用Pandas库中的describe函数和corr函数来了解数据的特征分布和特征之间的相关性。其中,corr函数返回每个特征与其他特征的相关系数矩阵。

print(data.describe())
print(data.corr())

我们还可以使用Matplotlib库对数据进行可视化。例如,绘制两个特征之间的散点图:

plt.scatter(data['RM'], data['Price'])
plt.title('House Price vs Number of Rooms')
plt.xlabel('Number of Rooms')
plt.ylabel('Price')
plt.show()

数据的预处理和模型训练

为了训练多变量线性回归模型,我们需要将数据分成两部分:训练集和测试集。我们可以使用Scikit-learn库中的train_test_split函数将数据集随机划分成训练集和测试集:

X = data.drop(['Price'], axis=1)
y = data['Price']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

接下来,我们可以使用Scikit-learn库中的LinearRegression函数来初始化多变量线性回归模型,并使用训练集来拟合该模型:

model = LinearRegression()
model.fit(X_train, y_train)

模型的评估和预测

为了评估模型的表现,我们可以使用测试集来预测房价,并使用平均方差(Mean Squared Error, MSE)来衡量预测结果与实际结果之间的差异。我们可以使用Scikit-learn库中的mean_squared_error函数来计算预测结果的平均方差:

y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print(mse)

如果平均方差的值较小,则说明模型预测的结果较为准确。

最后,我们可以使用模型预测新的房屋价格。例如,我们想要预测一个房屋的价格,该房屋有6个房间、2个卫生间、距离商业区的距离为4.5英里等特征。我们可以将这些特征的值输入到模型中,并使用模型的predict函数来预测房屋的价格:

new_data = np.array([[6, 2, 4.5, 0, 0.4, 6, 79, 6.1, 5, 331, 17, 385, 11.3]])
new_prediction = model.predict(new_data)
print(new_prediction)

这个房屋的预测价格为约23.9万美元。

总结

在本文中,我们介绍了如何在Python中使用Scikit-learn库的LinearRegression函数实现多变量线性回归模型。我们使用Boston房产数据集作为例子,说明了数据的导入、探索、可视化、预处理和模型的训练、评估和预测等步骤。希望这篇文章能够帮助读者更好地掌握Python中的多变量线性回归方法。