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

线性回归示例 代码篇

机器学习 - 建模

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))}") # 效果同上
相关推荐
郝学胜-神的一滴5 分钟前
干货版《算法导论》17:二叉树核心原理、遍历逻辑与高阶实操全解
数据结构·c++·python·算法·计算机·编程
weixin_397574096 分钟前
当AI的思考过程第一次被看见
人工智能
WangY_ZQ9 分钟前
【无标题】
windows·python
北风toto12 分钟前
从提示词到工程化:大模型时代的AI工程实战指南
人工智能
CV-杨帆15 分钟前
DeepSeek Harness入门教程实操 从零开始安装与使用 DeepSeek-V4-Pro基座5毛完成任务
人工智能
m0_5791466519 分钟前
大模型 API 的范式转移:Responses API vs Chat Completions API
人工智能·response api·agnetic loop
桐桐桐22 分钟前
PDF 翻译工具横评与自建批量方案:从在线工具到 Python 自动化
python·pdf·自动化
西安小哥30 分钟前
破局与重生:大厂前端如何借力 AI 转型“超级全栈“
前端·人工智能
evans在进步34 分钟前
LeetCode 33:搜索旋转排序数组——Java 两阶段二分查找详解
java·python·leetcode