机器学习 —— 线性回归(实例)

线性回归示例 代码篇

机器学习 - 建模

1.获取数据 (pandas、numpy)

2.数据预处理 (训练集:特征、标签,测试集:特征、标签)

3.特征工程 (量纲问题、归一化/标准化)

4.模型训练 (正规方程模型、梯度下降 回归模型)

5.模型预测 (预测值、权重、偏置)

6.模型评估 (MAE、MSE、RMSE)

参考之前 机器学习-浅析:https://blog.csdn.net/i_k_o_x_s/article/details/159696090?spm=1001.2014.3001.5501

python 复制代码
from sklearn.model_selection import train_test_split #切分数据集
from sklearn.preprocessing import StandardScaler #特征处理 标准化
from sklearn.linear_model import LinearRegression #正规方程模型
from sklearn.metrics import (
    mean_squared_error ,        #MSE  均方误差
    mean_absolute_error,        #MAE  平均绝对误差
    root_mean_squared_error)    #RMSE 均方根误差

import numpy as np
import pandas as pd

# 1. 获取数据
# 直接从原始地址下载波士顿数据集
# 从第 1 行开始,每隔一行取一行,并且只取前 2 列
data_url = "http://lib.stat.cmu.edu/datasets/boston"
raw_df = pd.read_csv(data_url, sep="\s+", skiprows=22, header=None)
data = np.hstack([raw_df.values[::2, :], raw_df.values[1::2, :2]])
target = raw_df.values[1::2, 2]

'''   
原始数据  第一行 + 第二行  前2个是特征。 第二行的第3个 是标签

# 特征名
feature_names = [
    'CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE',
    'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT'
]
          0      1      2    3      4      5     6       7    8      9     10
0    0.00632  18.00   2.31  0.0  0.538  6.575  65.2  4.0900  1.0  296.0  15.3
1  396.90000   4.98  24.00  NaN    NaN    NaN   NaN     NaN  NaN    NaN   NaN
2    0.02731   0.00   7.07  0.0  0.469  6.421  78.9  4.9671  2.0  242.0  17.8
3  396.90000   9.14  21.60  NaN    NaN    NaN   NaN     NaN  NaN    NaN   NaN
'''
print(f'训练集数据->特征值:{data[:4]}')
print(f'训练集数据->标签值:{target[:4]}')

# 2. 数据预处理
'''
    参数1 -> 训练集特征
    参数2 -> 训练集标签
    参数3 -> 测试集占比 一般是 0.2 - 0.3  8:2, 7:3
    参数4 -> 随机种子 22 随便写多少都可以
    
    结果1 -> 训练集用的特征
    结果2 -> 训练集用的标签
    结果3 -> 测试集用的特征
    结果4 -> 测试集用的标签
'''
x_train, x_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=22)


# 3.特征工程 标准化  量纲问题 _ 特征单位不统一  为什么用标准化   因为归一化受极值影响
    #3.1 创建标准化对象
transfer = StandardScaler()
    #3.2 对训练集数据和测试集数据进行标准化处理
    #fit_transform 拿训练集 进行训练+转换 算出一套数据
x_train = transfer.fit_transform(x_train)
    #3.3 transform 直接转换即可 .不用在进行训练 因为是测试集
x_test = transfer.transform(x_test)


# 4.模型训练
    # 4.1 实例化模型
    # 参1 是否计算偏置 默认true   正规方程模型
model = LinearRegression(fit_intercept=True)

    # 梯度下降方法
    # 参1: 是否计算截距
    # 参2: 学习率值设置:常量 固定
    # 参3: 学习率值
# model=SGDRegressor(fit_intercept=True,learning_rate='constant',eta0=0.01)

    # 4.2 模型训练
model.fit(x_train, y_train)


# 5.模型预测
y_predict = model.predict(x_test)
print(f"预测值为:{y_predict}")
print(f"权重:{model.coef_}")
print(f"偏置:{model.intercept_}")

# 6.模型评估
# MAE MSE RMSE
#参1:真实值    参2:预测值
'''
    越小模型预测越准确
'''
print(f"MAE 平均绝对误差{mean_absolute_error(y_test, y_predict)}")
print('=' * 50)
print(f"MSE 均方误差{mean_squared_error(y_test, y_predict)}")
print('=' * 50)
print(f"RMSE 均方根误差{root_mean_squared_error(y_test, y_predict)}")

#如果没有这个方法root_mean_squared_error 可以采用如下方法解决问题
print(f"RMSE 均方根误差:{np.sqrt(mean_squared_error(y_test,y_predict))}") # 效果同上
相关推荐
天天进步20152 小时前
[架构篇] 解构项目蓝图:Toonflow 的模块化设计与 AI 管道流转
人工智能·架构
龙文浩_2 小时前
AI中NLP的深入浅出注意力机制 Seq2Seq 模型
人工智能·pytorch·深度学习·神经网络·自然语言处理
小饕2 小时前
RAG 学习之-向量数据库与 FAISS 索引完全指南:从原理到选型实战
人工智能·rag·大模型应用
北京耐用通信2 小时前
CC-Link IE转Modbus TCP集成实战:耐达讯自动化网关在五星级酒店节能改造中的应用
人工智能·物联网·网络协议·自动化·信息与通信
小超同学你好2 小时前
面向 LLM 的程序设计 9:系统提示中的「能力边界」——减少越权与幻觉调用
人工智能·深度学习·语言模型
黑金IT2 小时前
从“抽卡”到“工业化”:多模态 Harness 如何重塑 AI 内容生产的反馈闭环
人工智能·prompt·harness工程
笨笨饿2 小时前
# 52_浅谈为什么工程基本进入复数域?
linux·服务器·c语言·数据结构·人工智能·算法·学习方法
架构师老Y2 小时前
007、微服务架构设计与服务拆分策略
python·微服务·架构
dtsola2 小时前
小遥搜索生态新成员:一键导出钉钉文档,实现本地AI搜索
人工智能·ai编程·知识库·ai创业·独立开发者·个人开发者·一人公司