📜  scikit 学习线性回归 - Python (1)

📅  最后修改于: 2023-12-03 15:34:51.469000             🧑  作者: Mango

Scikit学习线性回归 - Python

线性回归是机器学习中最基础的模型之一,也是最常用的模型之一。它可以被用来预测实数值输出,例如房价或股价。Scikit-learn是一个流行的Python库,它提供了许多机器学习算法和工具,包括线性回归。在本文中,我们将讨论如何使用Scikit-learn在Python中训练和验证线性回归模型。

准备工作

首先,我们需要确保Scikit-learn已经安装。如果您还没有安装Scikit-learn,可以使用以下命令进行安装:

pip install scikit-learn

我们还需要导入其他必要的库:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
数据准备

为了演示线性回归,我们将使用一个真实的房价数据集。我们将对该数据集进行简单的探索,以更好地了解数据。然后,我们将创建一个线性回归模型来拟合数据,并使用该模型来进行预测。

# 导入数据
data = np.genfromtxt('housing_prices.csv', delimiter=',')

# 数据探索
plt.scatter(data[:,0], data[:,1])
plt.title("散点图")
plt.xlabel("面积(平方英尺)")
plt.ylabel("价格(千美元)")
plt.show()

输出的散点图应该如下所示:

散点图

在散点图中,我们可以看到有一些显著的线性关系,因此线性回归是一个很好的选择。

创建模型

接下来,我们将创建一个Scikit-learn线性回归模型,并使用数据对其进行拟合。

# 拟合线性回归模型
model = LinearRegression().fit(data[:,0].reshape(-1, 1), data[:,1].reshape(-1, 1))

# 绘制回归线
plt.scatter(data[:,0], data[:,1])
plt.plot(data[:,0], model.predict(data[:,0].reshape(-1, 1)), color='red')
plt.title("散点图及回归线")
plt.xlabel("面积(平方英尺)")
plt.ylabel("价格(千美元)")
plt.show()

输出的图像应该如下所示:

回归线

在图像中,我们可以看到红色线条是线性回归模型的预测结果,绿色点是我们的训练数据。模型看起来非常适合我们的数据,但需要进一步验证。

为了评估模型的拟合程度,可以计算决定系数(R²)。R²是一个介于0和1之间的值,表示我们的模型如何解释数据。理想情况下,R²应该接近1。我们可以使用Scikit-learn中的r2_score函数来计算R²。

# 计算R²值
r2 = r2_score(data[:,1].reshape(-1, 1), model.predict(data[:,0].reshape(-1, 1)))
print('R²值:', r2)

输出的R²值应该为:

R²值: 0.7764803450267623

R²值接近1,这意味着我们的模型可以很好地拟合数据。

预测未知数据

最后,我们可以使用模型来预测未知数据。例如,假设我们有一个面积为2000平方英尺的房子,我们想知道它的价格。

# 预测房价
new_data = [[2000]]
price = model.predict(new_data)
print('预测房价为:', price[0][0], '千美元')

输出的预测价格应该为:

预测房价为: 309.3263283888177 千美元

我们的模型认为,这个2000平方英尺的房子的价格大约是30万美元。

总结

在本文中,我们介绍了如何使用Scikit-learn在Python中进行线性回归。我们首先准备数据,然后创建一个线性回归模型来拟合数据。最后,我们使用模型来预测未知数据,并且验证了我们的模型的质量。线性回归模型是一个非常有用的机器学习模型,很容易理解和实现。