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

线性回归示例 代码篇

机器学习 - 建模

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))}") # 效果同上
相关推荐
空堂与归1 分钟前
RNN记不住长序列怎么办?用 LSTM 三门一通道接旁路
人工智能·rnn·nlp·lstm
小白的后端世界4 分钟前
跨境电商数据分析与 AI Agent 自动化:从指标体系到决策闭环
人工智能·深度学习·数据分析·自动化
leihefeng5 分钟前
邮件文本分类:CountVectorizer / TF-IDF + 朴素贝叶斯
python·分类·数据挖掘·tf-idf·sklearn
码艺-Alimjan6 分钟前
维吾尔语数字转文本
java·javascript·python·算法·go
AI服务老曹9 分钟前
算法任务配置完整流程:明厨亮灶项目从0到1怎么做 | AI视频分析算法实践
人工智能·算法·音视频
LUSTER凌云光11 分钟前
工业AI视觉检测系统设计:传统视觉与深度学习如何融合?
人工智能·深度学习·视觉检测
AI创界者12 分钟前
【开源实战】FaceFusionFree 5.3 部署与进阶:修复内存模式条纹 Bug 与帧率对齐逻辑解析
人工智能·aigc·音视频
huashengzsj13 分钟前
绝缘陶瓷电极材料怎么选?绝缘陶瓷电极厂家推荐
人工智能
IT_陈寒21 分钟前
JavaScript的隐式转换太坑了,我的==比较怎么就炸了?
前端·人工智能·后端
流浪00121 分钟前
大模型技术全景(四):国内外大语言模型格局,技术路线与能力图谱
人工智能·llm