【机器学习】自定义数据集使用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_:输出模型的截距。
  • 可以根据实际需求修改特征矩阵的维度和样本数量,以及标签生成的方式,来适应不同的自定义数据集。
相关推荐
专注API从业者14 分钟前
Python/Java 代码示例:手把手教程调用 1688 API 获取商品详情实时数据
java·linux·数据库·python
java1234_小锋21 分钟前
[免费]基于Python的协同过滤电影推荐系统(Django+Vue+sqlite+爬虫)【论文+源码+SQL脚本】
python·django·电影推荐系统·协同过滤
看海天一色听风起雨落1 小时前
Python学习之装饰器
开发语言·python·学习
小憩-1 小时前
【机器学习】吴恩达机器学习笔记
人工智能·笔记·机器学习
XiaoMu_0011 小时前
基于Python+Streamlit的旅游数据分析与预测系统:从数据可视化到机器学习预测的完整实现
python·信息可视化·旅游
THMAIL2 小时前
深度学习从入门到精通 - 生成对抗网络(GAN)实战:创造逼真图像的魔法艺术
人工智能·python·深度学习·神经网络·机器学习·生成对抗网络·cnn
无风听海2 小时前
神经网络之深入理解偏置
人工智能·神经网络·机器学习·偏置
我没想到原来他们都是一堆坏人3 小时前
(未完待续...)如何编写一个用于构建python web项目镜像的dockerfile文件
java·前端·python
总有刁民想爱朕ha4 小时前
车牌模拟生成器:Python3.8+Opencv代码实现与商业应用前景(C#、python 开发包SDK)
开发语言·python·数据挖掘
人衣aoa4 小时前
Python编程基础(八) | 类
开发语言·python