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

一、scikit-learn简介

二、什么是现线性回归

线性回归是一种用于建立自变量与因变量之间关系的统计方法。

它假设因变量(或响应变量)与一个或多个自变量(或预测变量)之间的关系是线性的。

其主要目标是通过拟合一个线性模型来预测因变量的数值。
线性回归示例图

二、实现方法

1、代码示例:

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

# 自定义数据集
# 特征矩阵,这里简单创建一个二维特征矩阵,有100个样本,每个样本有一个特征
X = np.random.rand(100, 1)
# 标签向量,根据特征生成对应的标签,添加一些噪声模拟真实情况
y = 2 * X + 1 + 0.5 * np.random.randn(100, 1)

# 将数据集划分为训练集和测试集,测试集占比20%
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

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

# 使用训练集对模型进行拟合
model.fit(X_train, y_train)

# 在测试集上进行预测
y_pred = model.predict(X_test)

# 计算均方误差,评估模型性能
mse = mean_squared_error(y_test, y_pred)
print(f"模型在测试集上的均方误差: {mse}")

# 输出模型的系数和截距
print(f"模型系数: {model.coef_[0][0]}")
print(f"模型截距: {model.intercept_[0]}")

2、代码解释及使用说明

①数据生成

  • X = np.random.rand(100, 1):生成一个包含 100 个样本,每个样本有一个特征的特征矩阵,特征值是在[0, 1)范围内的随机数。
  • y = 2 * X + 1 + 0.5 * np.random.randn(100, 1):根据特征生成对应的标签,真实关系是y = 2x + 1,并添加了一些符合正态分布的噪声,模拟真实数据的情况。

②数据集划分

train_test_split(X, y, test_size=0.2, random_state=42):将数据集按照 80% 和 20% 的比例划分为训练集和测试集,random_state用于保证每次划分结果的一致性。

③模型创建与拟合

  • model = LinearRegression():创建一个线性回归模型对象。
  • model.fit(X_train, y_train):使用训练集的数据对模型进行拟合,即通过最小化误差来确定线性回归模型的系数和截距。

④模型预测与评估

  • y_pred = model.predict(X_test):使用训练好的模型对测试集进行预测。
  • mean_squared_error(y_test, y_pred):计算模型在测试集上的均方误差,均方误差越小,说明模型的预测性能越好。

⑤模型参数输出

  • model.coef_:输出模型的系数,这里由于只有一个特征,所以系数是一个一维数组。
  • model.intercept_:输出模型的截距。
  • 可以根据实际需求修改特征矩阵的维度和样本数量,以及标签生成的方式,来适应不同的自定义数据集。
相关推荐
X_Cosmic2 小时前
从零开始:YOLO11 训练 DOTA OBB 遥感数据旋转框目标检测
python·yolo·目标检测
Hello.Reader2 小时前
PyFlink 向量化 UDF(Vectorized UDF)Arrow 批传输原理、pandas 标量/聚合函数、配置与内存陷阱、五种写法一网打尽
python·flink·pandas
曲幽2 小时前
FastAPI + SQLite:从基础CRUD到安全并发的实战指南
python·sqlite·fastapi·web·jwt·form·sqlalchemy·oauth2
用户4303510250682 小时前
Python 中除 Ecception 外的三类系统异常
python
搂着猫睡的小鱼鱼2 小时前
基于Python的淘宝评论爬虫
开发语言·爬虫·python
小途软件2 小时前
基于深度学习的人脸属性增强器
java·人工智能·pytorch·python·深度学习·语言模型
audyxiao0012 小时前
自动驾驶论文分享|TrajVAE:无需强约束即可灵活生成高质量行车轨迹
人工智能·机器学习·自动驾驶·neurocomputing
ai_top_trends2 小时前
AI 生成工作计划 PPT 是否适合年初规划与年度汇报
人工智能·python·powerpoint
天才测试猿2 小时前
自动化测试基础知识总结
自动化测试·软件测试·python·测试工具·程序人生·职场和发展·测试用例
Niuguangshuo2 小时前
理解MCMC、Metropolis-Hastings和Gibbs采样:从随机游走到贝叶斯推断
人工智能·神经网络·机器学习