当前位置: 首页 > article >正文

【机器学习】自定义数据集使用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_:输出模型的截距。
  • 可以根据实际需求修改特征矩阵的维度和样本数量,以及标签生成的方式,来适应不同的自定义数据集。

http://www.kler.cn/a/519043.html

相关文章:

  • 第二十一周:Mask R-CNN
  • 通过配置核查,CentOS操作系统当前无多余的、过期的账户;但CentOS操作系统存在共享账户r***t
  • 破解浏览器渲染“死锁”:CSS与JS如何影响页面加载速度?
  • MongoDB 备份与恢复综述
  • Vue入门(Vue基本语法、axios、组件、事件分发)
  • 使用python-docx包进行多文件word文字、字符批量替换
  • 浅谈贪心算法
  • 【PySide6快速入门】PySide6构建Qt项目
  • Java Web-Request与Response
  • Spring MVC (三) —— 实战演练
  • 什么是Pytest Fixtures作用域及如何为Pytest Fixtures设置合适的作用域
  • Arduino大师练成手册 -- PCF8574T I2C控制LCD1602
  • 【云安全】云原生-Docker(五)容器逃逸之漏洞利用
  • GMP底层
  • Web3 与数据隐私:如何让用户掌控个人信息
  • Vue组件开发-使用 html2canvas 和 jspdf 库实现PDF文件导出 设置页面大小及方向
  • 国自然数学与医疗健康交叉重点专项|基于多组学大数据的鼻咽癌个体化临床智能决策算法与支持系统|基金申请·25-01-23
  • 导航的 “精确之误“:道路拥堵的 SPF 成因与解决
  • 如何跨互联网adb连接到远程手机-蓝牙电话集中维护
  • 深度学习|表示学习|卷积神经网络|离散卷积的操作详细|10
  • DBSCAN密度聚类
  • 批量创建ES索引
  • 【Rust自学】14.5. cargo工作空间(Workspace)
  • Commander 一款命令行自定义命令依赖
  • 国自然重点项目|代谢影像组学只能预测肺癌靶向耐药的关键技术与应用|基金申请·25-01-25
  • 10.片元