使用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}')
相关推荐
仰望星空的凡人3 小时前
【JS逆向基础】数据库之MongoDB
javascript·数据库·python·mongodb
F_D_Z4 小时前
【PyTorch】图像多分类项目部署
人工智能·pytorch·python·深度学习·分类
pingzhuyan5 小时前
python入门篇12-虚拟环境conda的安装与使用
python·ai·llm·ocr·conda
香蕉可乐荷包蛋5 小时前
排序算法 (Sorting Algorithms)-Python示例
python·算法·排序算法
Aronup7 小时前
NLP学习开始01-线性回归
学习·自然语言处理·线性回归
菜鸟学Python7 小时前
Python web框架王者 Django 5.0发布:20周年了!
前端·数据库·python·django·sqlite
旧时光巷8 小时前
【机器学习-4】 | 集成学习 / 随机森林篇
python·随机森林·机器学习·集成学习·sklearn·boosting·bagging
Ice__Cai9 小时前
Django + Celery 详细解析:构建高效的异步任务队列
分布式·后端·python·django
MediaTea9 小时前
Python 库手册:doctest 文档测试模块
开发语言·python·log4j
2025年一定要上岸9 小时前
【pytest高阶】源码的走读方法及插件hook
运维·前端·python·pytest