【机器学习】自定义数据集使用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_:输出模型的截距。
  • 可以根据实际需求修改特征矩阵的维度和样本数量,以及标签生成的方式,来适应不同的自定义数据集。
相关推荐
LateFrames1 小时前
用 【C# + Winform + MediaPipe】 实现人脸468点识别
python·c#·.net·mediapipe
人工干智能4 小时前
科普:Python 中,字典的“动态创建键”特性
开发语言·python
开心-开心急了7 小时前
主窗口(QMainWindow)如何放入文本编辑器(QPlainTextEdit)等继承自QWidget的对象--(重构版)
python·ui·pyqt
moshumu18 小时前
局域网访问Win11下的WSL中的jupyter notebook
ide·python·深度学习·神经网络·机器学习·jupyter
大饼酥9 小时前
吴恩达机器学习笔记(10)—支持向量机
机器学习·支持向量机·吴恩达·高斯核函数
计算机毕设残哥9 小时前
基于Hadoop+Spark的人体体能数据分析与可视化系统开源实现
大数据·hadoop·python·scrapy·数据分析·spark·dash
芒果量化9 小时前
ML4T - 第7章第8节 利用LR预测股票价格走势Predicting stock price moves with Logistic Regression
算法·机器学习·线性回归
编程指南针11 小时前
2026新选题-基于Python的老年病医疗数据分析系统的设计与实现(数据采集+可视化分析)
开发语言·python·病历分析·医疗病历分析
lisw0511 小时前
数据科学与AI的未来就业前景如何?
人工智能·机器学习·软件工程
王哥儿聊AI12 小时前
告别人工出题!PromptCoT 2.0 让大模型自己造训练难题,7B 模型仅用合成数据碾压人工数据集效果!
人工智能·深度学习·算法·机器学习·软件工程