使用 scikit-learn 实现简单的线性回归案例

1. 什么是线性回归?

线性回归是一种预测模型,它通过拟合数据点到一条直线上,来预测一个因变量(目标值)与一个或多个自变量(特征)之间的关系。它的数学表达式通常为:

​

其中,y 是目标值,x1​,x2​,...,xn​ 是特征,而 β0​,β1​,...,βn​ 是模型的参数。

在实际应用中,线性回归可以帮助我们解决许多问题,比如房价预测、销售量预测等。

2. scikit-learn 简介

scikit-learn 是一个开源的 Python 机器学习库,它提供了简单而高效的工具用于数据挖掘和数据分析。它支持多种机器学习算法,包括线性回归、逻辑回归、决策树等。今天,我们将重点使用它的 LinearRegression 模块。

3. 实现线性回归的步骤

接下来,我们将通过一个简单的示例,展示如何使用 scikit-learn 实现线性回归。我们将从数据准备开始,逐步完成模型的训练、评估和可视化。

3.1 准备数据

首先,我们需要准备数据。为了简单起见,我们将生成一组简单的线性数据,并加入一些随机噪声。

python 复制代码
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, r2_score

# 生成数据
np.random.seed(0)  # 设置随机种子,确保结果可复现
X = np.random.rand(100, 1) * 10  # 生成 100 个随机数,范围在 0 到 10 之间
y = 3 * X + 2 + np.random.randn(100, 1) * 2  # 线性关系 y = 3x + 2,加入噪声

3.2 划分数据集

为了评估模型的性能,我们需要将数据集划分为训练集和测试集。scikit-learn 提供了 train_test_split 函数,可以轻松完成这一任务。

python 复制代码
# 2. 划分数据集(测试集30%,训练集70%)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

这里,我们将 30% 的数据用作测试集,其余用作训练集。

3.3 创建线性回归模型

接下来,我们使用 LinearRegression 创建一个线性回归模型,并使用训练集数据对其进行拟合。

python 复制代码
# 3. 创建线性回归模型
model = LinearRegression()

# 4. 拟合模型
model.fit(X_train, y_train)

3.4 评估模型

模型训练完成后,我们需要使用测试集对其进行评估,这里我们使用均方误差(MSE)来评估。

python 复制代码
# 5. 使用模型进行预测
y_pred = model.predict(X_test)

# 6. 评估模型
mse = mean_squared_error(y_test, y_pred)
print(f"均方误差 (MSE): {mse}")

MSE 越小,模型的预测误差越小,模型的拟合效果越好。

3.5 可视化结果

最后,我们使用 matplotlib 绘制拟合结果,直观展示模型的性能。

python 复制代码
# 7. 可视化结果
plt.scatter(X, y, color='blue', label='point')
plt.plot(X_test, y_pred, color='red', label='line')
plt.xlabel('X')
plt.ylabel('y')
plt.title('show')
plt.legend()
plt.show()

运行上述代码后,你会得到下图:

3.6完整代码:

python 复制代码
# 导入所需库
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

'''自定义数据集使用scikit-learn中的包实现线性回归方法对其进行拟合'''


# 1. 创建自定义数据集
# 生成一些线性数据,加入一些噪声
np.random.seed(0)  # 设置随机种子,确保结果可复现
X = np.random.rand(100, 1) * 10  # 生成10个随机数,范围在0到10之间
y = 3 * X + 2 + np.random.randn(100, 1) * 2  # 线性关系 y = 3x + 2,加入噪声

# 2. 划分数据集(测试集30%,训练集70%)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 3. 创建线性回归模型
model = LinearRegression()

# 4. 拟合模型
model.fit(X_train, y_train)

# 5. 使用模型进行预测
y_pred = model.predict(X_test)

# 6. 评估模型
mse = mean_squared_error(y_test, y_pred)
print(f"均方误差 (MSE): {mse}")

# 7. 可视化结果
plt.scatter(X, y, color='blue', label='point')
plt.plot(X_test, y_pred, color='red', label='line')
plt.xlabel('X')
plt.ylabel('y')
plt.title('show')
plt.legend()
plt.show()

4. 总结

通过以上步骤,我们成功地使用 scikit-learn 实现了一个简单的线性回归模型。我们从数据准备开始,逐步完成了模型的训练、评估和可视化。线性回归虽然简单,但它为理解更复杂的机器学习算法奠定了基础。

如果你对线性回归感兴趣,可以尝试以下扩展:

  • 调整模型参数,观察对结果的影响。

  • 学习其他回归算法

希望这篇文章对你有所帮助!

相关推荐
4SAPI1 小时前
多模型请求路由怎么设计?成本、速度和能力如何平衡
人工智能·python·gateway·php
XCDoris3 小时前
郴州logo设计机构
大数据·人工智能·python
gCode Teacher 格码致知4 小时前
Pandas教学-17:Series与Dataframe的关系
开发语言·python·pandas
马良神笔5 小时前
2026 年Rag最近技术前沿总结
后端·python·django
不像程序员的程序媛5 小时前
maven基础
python·pycharm·maven
xiaogai_gai7 小时前
仅查询策略实战:从金蝶云·星空旗舰版定时拉取收料通知单
大数据·数据库·python
benchmark_cc7 小时前
Python 量化系统如何设计统一的数据访问接口:从策略解耦到数据层架构
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
const_qiu7 小时前
第四章 00:开篇 —— 从「会聊天」到「记得住、会干活、能协作」
java·开发语言·人工智能·python
估值探索者8 小时前
【Python量化选股流水线 #04】选股器好不好用?「昨日候选→今日表现」回看验收
开发语言·python·股票数据·股票数据api接口
田里的水稻8 小时前
PyTorch_Dataloader\TensorBoard---数据加载与可视化
人工智能·pytorch·python·神经网络·机器学习