使用scikit-learn实现线性回归对自定义数据集进行拟合

1. 引入必要的库

首先,需要引入必要的库。scikit-learn提供了强大的机器学习工具,pandas和numpy则用于数据处理,matplotlib用于结果的可视化。

python 复制代码
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
import matplotlib.pyplot as plt

2. 加载自定义数据集

假设有一个CSV文件custom_dataset.csv,其中包含特征(自变量)和标签(因变量)。使用pandas来加载数据。

python 复制代码
# 加载自定义数据集
data = pd.read_csv('custom_dataset.csv')

# 假设数据集中有两列:'feature'为特征,'target'为标签
X = data[['feature']].values  # 特征需要是二维数组
y = data['target'].values     # 标签

3. 数据集划分

为了评估模型的性能,需要将数据集划分为训练集和测试集。这样可以确保模型在未见过的数据上进行测试,从而评估其泛化能力。

python 复制代码
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

4. 创建并训练线性回归模型

使用scikit-learn中的LinearRegression类,可以轻松地创建并训练线性回归模型。

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

# 训练模型
model.fit(X_train, y_train)

5. 模型预测与评估

在模型训练完成后,使用测试集进行预测,并评估模型的性能。常用的评估指标包括均方误差(MSE)和决定系数(R²)。

python 复制代码
# 进行预测
y_pred = model.predict(X_test)

# 计算均方误差和决定系数
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)

print(f'Mean Squared Error: {mse:.2f}')
print(f'R² Score: {r2:.2f}')

6. 结果可视化

为了更好地理解模型的拟合效果,可以绘制真实值和预测值的散点图,以及拟合的直线。

python 复制代码
# 可视化结果
plt.scatter(X_test, y_test, color='black', label='实际数据')
plt.plot(X_test, y_pred, color='blue', linewidth=3, label='拟合线')

plt.xlabel('特征')
plt.ylabel('目标值')
plt.title('线性回归拟合')
plt.legend()
plt.show()

7. 进一步讨论

在线性回归中,模型的系数(权重)表示特征对目标值的影响。可以通过以下方式查看模型的系数:

python 复制代码
# 打印模型系数和截距
print(f'Coefficient: {model.coef_[0]:.2f}')
print(f'Intercept: {model.intercept_:.2f}')
相关推荐
love530love7 小时前
OpenClaw Windows Companion 桌面客户端 连接 LM Studio 完整配置指南
人工智能·windows·python·openclaw
cui_ruicheng9 小时前
Python从入门到实战(十六):多进程编程
开发语言·python
_Jimmy_10 小时前
FastAPI + SQLAlchemy全局事务管理
python·fastapi
用户83562907805110 小时前
如何使用 Python 在 Excel 中添加、编辑和删除超链接
后端·python
AC赳赳老秦12 小时前
企业工商公开信息采集分析:OpenClaw 批量查询企业工商信息,生成企业画像报告
大数据·开发语言·python·自动化·php·deepseek·openclaw
FoldWinCard13 小时前
D6 Python 基础语法 --- 保留关键字
开发语言·python
暮暮祈安13 小时前
Celery 新手入门指南
java·数据库·python·flask·httpx
JustNow_Man13 小时前
每日高频场景英文口语
python
风吹心凉14 小时前
python3基础2026.7.22
开发语言·python
小猴子爱上树15 小时前
一站式解决图片视频翻译难题的高效AI工具
人工智能·python·音视频