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

线性回归示例 代码篇

机器学习 - 建模

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))}") # 效果同上
相关推荐
无敌的黑星星10 分钟前
Java8 CompletableFuture 实战指南
linux·前端·python
KG_LLM图谱增强大模型17 分钟前
Palantir 本体论与知识图谱深度分析及实现路径
人工智能·知识图谱
yzx99101318 分钟前
项目名称:灵犀——基于大模型与知识图谱的全栈智慧创作与协同平台
人工智能·知识图谱
RAG专家19 分钟前
【KG²RAG】结合知识图谱解决RAG 文本块孤立问题
人工智能·知识图谱·rag·检索增强生成
小袁进化之路20 分钟前
黎跃春讲AI智能体运营工程师核心知识图谱(2026完整版)
人工智能·知识图谱
CyberwayTech21 分钟前
赛博威线上营销费用管理:咨询+系统,双轮驱动ROI增长
大数据·人工智能
StockTV21 分钟前
印度股票实时数据 NSE和BSE的实时行情、K 线及指数数据
java·开发语言·spring boot·python
一粒黑子21 分钟前
【实测】GitNexus实测:拖入GitHub链接秒出代码知识图谱,今天涨了857星
人工智能·gpt·安全·ai·大模型·ai编程
chaofan98021 分钟前
GPT-5.5 领衔 Image 2.0:像素级控制时代,AI 绘图告别开盲盒
开发语言·人工智能·python·gpt·自动化·api
秋说22 分钟前
【知识图谱】大模型驱动多模态健康智能问诊深度剖析
人工智能·大模型·知识图谱·同态加密·差分隐私·智慧医疗