【机器学习】自定义数据集使用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_:输出模型的截距。
  • 可以根据实际需求修改特征矩阵的维度和样本数量,以及标签生成的方式,来适应不同的自定义数据集。
相关推荐
魔障阿Q12 分钟前
华为310P3模型转换及python推理
人工智能·python·深度学习·yolo·计算机视觉·华为
悟乙己42 分钟前
译|生存分析Survival Analysis案例入门讲解(一)
人工智能·机器学习·数据挖掘·生存分析·因果推荐
都叫我大帅哥1 小时前
决策树:从零开始的机器学习“算命大师”修炼手册
python·机器学习
这里有鱼汤1 小时前
首个支持A股的AI多智能体金融系统,来了
前端·python
loopdeloop1 小时前
机器学习、深度学习与数据挖掘:核心技术差异、应用场景与工程实践指南
深度学习·机器学习·数据挖掘
loopdeloop1 小时前
机器学习、深度学习与数据挖掘:三大技术领域的深度解析
深度学习·机器学习·数据挖掘
云霄IT1 小时前
python使用ffmpeg录制rtmp/m3u8推流视频并按ctrl+c实现优雅退出
python·ffmpeg·音视频
都叫我大帅哥1 小时前
我给大模型装上“记忆黄金券”:LangChain的ConversationSummaryBufferMemory全解析
python·langchain·ai编程
桃子叔叔1 小时前
28天0基础前端工程师完成Flask接口编写
前端·python·flask