使用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}')
相关推荐
alvin_200531 分钟前
python之OpenGL应用(二)Hello Triangle
python·opengl
铁蛋AI编程实战40 分钟前
通义千问 3.5 Turbo GGUF 量化版本地部署教程:4G 显存即可运行,数据永不泄露
java·人工智能·python
jiang_changsheng1 小时前
RTX 2080 Ti魔改22GB显卡的最优解ComfyUI教程
python·comfyui
0思必得02 小时前
[Web自动化] Selenium处理滚动条
前端·爬虫·python·selenium·自动化
沈浩(种子思维作者)2 小时前
系统要活起来就必须开放包容去中心化
人工智能·python·flask·量子计算
2301_790300962 小时前
Python数据库操作:SQLAlchemy ORM指南
jvm·数据库·python
m0_736919102 小时前
用Pandas处理时间序列数据(Time Series)
jvm·数据库·python
getapi2 小时前
实时音视频传输与屏幕共享(投屏)
python
java干货3 小时前
为什么 “File 10“ 排在 “File 2“ 前面?解决文件名排序的终极算法:自然排序
开发语言·python·算法
机器懒得学习3 小时前
智能股票分析系统
python·深度学习·金融