机器学习:线性回归梯度下降预测波士顿房价

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 机器学习:线性回归梯度下降预测波士顿房价

线性回归

分类: 目标值离散

回归: 目标值连续


线性回归:寻找一种能预测的趋势


线性关系:
    -二维:直线关系
    -三维:平面

线性关系定义

image.png

参数b,偏置项,为了对于单个特征的情况更加通用

参数k,权重

image.png


image.png


线性回归定义:

线性回归通过一个或多个自变量与因变量之间进行建模的回归分析


一元线性回归:变量只有一个

多元线性回归:变量两个或以上


通用公式:


image.pngimage.pngimage.pngimage.png

image.png


其中w,x为矩阵


image.png

image.png


属性和权重的组合来预测结果


矩阵

        数组              矩阵
0维      1
1维      [1, 2, 3]
2维      [               必须是二维的
          [1, 2, 3],     满足了特定的运算要求
          [4, 5, 6]      
         ]
3维      [[
           [1, 2, 3],
           [4, 5, 6]
          ],[
           [1, 2, 3],
           [4, 5, 6]
         ]]

数组的运算:加法,乘法

numpy.ndarray


矩阵乘法:

(m行,l列) * (l行,n列) = (m行,n列)


特征值                 权重              目标值
[[1, 2, 3, 4]]   [[1], [2], [3], [4]]   一个样本一个值
(1, 4)              (4, 1)              (1,1)
(100, 4)              (4, 1)              (100,1)

数组相乘

import numpy as np
a = [
  [1, 2, 3, 4], 
  [5, 6, 7, 8], 
  [1, 4, 3, 5]
]
b = [2, 2, 2, 2]
np.multiply(a, b)
Out[5]: 
array([[ 2,  4,  6,  8],
       [10, 12, 14, 16],
       [ 2,  8,  6, 10]])

矩阵相乘

import numpy as np
a = [
  [1, 2, 3, 4], 
  [5, 6, 7, 8], 
  [1, 4, 3, 5]
]
c = [
  [2], 
  [2], 
  [2], 
  [2]
]
np.dot(a, c)
Out[9]: 
array([[20],
       [52],
       [26]])

线性回归

求函数中的参数w,使得损失函数最小


迭代的算法


损失函数(误差大小)


image.png

image.png

y i为第i个训练样本的真实值

h w ( x i ) h_w(x_i)h w (x i ) 为第i个训练赝本特征值组合预测函数

又称为最小二乘法


尽量去减少损失,算法的自我学习过程

算法      策略(损失函数) 优化
线性回归     误差平方和    正规方程
            最小二乘法    梯度下降

最小二乘法之正规方程


image.png

image.png

X XX 为特征矩阵

y yy 为目标值矩阵

缺点:当特征过于复杂,求解速度太慢

X T X^TX T 转置X − 1 X^-1X − 1 求逆 -> X ∗ ? = 单 位 矩 阵 X * ? = 单位矩阵X∗?=单位矩阵

单位矩阵

[
 [1, 0, 0], 
 [0, 1, 0], 
 [0, 0, 1]
]

最小二乘法之梯度下降

方向

image.png

a是学习速率


沿着这个函数下降的方向找,最后就能找到山谷的最低点,然后更新w值


使用:面对训练数据规模十分庞大的任务


线性回归API

普通最小二乘线性回归

sklearn.linear_model.LinearRegression

coef_ 回归系数


使用SGD最小线性模型

sklearn.linear_model.SGDRegressor

coef_ 回归系数


scikit-learn

优点:封装好,建立模型简单,预测简单

缺点:算法过程,参数都在算法内部优化


v0.18

v0.19 转换器 estimator 要求数据必须是二维数据

reshape(-1, 1)


TensorFlow

封装高低都有,自己实现线性回归


回归性能评估

均方误差(Mean Squared Error)MSE评价机制


image.png

image.png

预测值


真实值


梯度下降和正规方程区别

image.png

代码示例

# -*- coding: utf-8 -*-
from sklearn.datasets import load_boston
from sklearn.linear_model import LinearRegression, SGDRegressor
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
# 加载数据
boston = load_boston()
# 训练集,测试集拆分
X_train, X_test, y_train, y_test = train_test_split(
    boston.data, boston.target, test_size=0.25)
# 数据标准化处理
# 特征值 标准化
std_x = StandardScaler()
X_train = std_x.fit_transform(X_train)
X_test = std_x.transform(X_test)
# 目标值 标准化
std_y = StandardScaler()
y_train = std_y.fit_transform(y_train.reshape(-1, 1))
y_test = std_y.transform(y_test.reshape(-1, 1))
# 正规方程 线性回归预测
lr = LinearRegression()
lr.fit(X_train, y_train)
print(lr.coef_)
y_lr_predict = std_y.inverse_transform(lr.predict(X_test))
print(y_lr_predict)
# 梯度下降 线性回归预测
sgd = SGDRegressor()
sgd.fit(X_train, y_train)
print(sgd.coef_)
y_sgd_predict = std_y.inverse_transform(sgd.predict(X_test))
print(y_sgd_predict)
# 性能评估 均方误差
lr_mse = mean_squared_error(std_y.inverse_transform(y_test), y_lr_predict)
sgd_mse = mean_squared_error(std_y.inverse_transform(y_test), y_sgd_predict)
print(lr_mse)  # 28.97
print(sgd_mse)  # 31.36

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
30天前
|
机器学习/深度学习 算法 TensorFlow
机器学习算法简介:从线性回归到深度学习
【5月更文挑战第30天】本文概述了6种基本机器学习算法:线性回归、逻辑回归、决策树、支持向量机、随机森林和深度学习。通过Python示例代码展示了如何使用Scikit-learn、statsmodels、TensorFlow库进行实现。这些算法在不同场景下各有优势,如线性回归处理连续值,逻辑回归用于二分类,决策树适用于规则提取,支持向量机最大化类别间隔,随机森林集成多个决策树提升性能,而深度学习利用神经网络解决复杂模式识别问题。理解并选择合适算法对提升模型效果至关重要。
192 4
|
9天前
|
机器学习/深度学习 数据采集 算法
【机器学习】线性回归:以房价预测为例
【机器学习】线性回归:以房价预测为例
47 1
|
11天前
|
机器学习/深度学习 人工智能 算法
【机器学习】深度探索:从基础概念到深度学习关键技术的全面解析——梯度下降、激活函数、正则化与批量归一化
【机器学习】深度探索:从基础概念到深度学习关键技术的全面解析——梯度下降、激活函数、正则化与批量归一化
21 3
|
15天前
|
机器学习/深度学习 数据可视化 算法
【阿旭机器学习实战】【29】产品广告投放实战案例---线性回归
【阿旭机器学习实战】【29】产品广告投放实战案例---线性回归
|
8天前
|
机器学习/深度学习 算法 数据格式
机器学习线性回归——概念梳理及非线性拟合
机器学习线性回归——概念梳理及非线性拟合
5 0
|
1月前
|
机器学习/深度学习 Python
利用Python实现一个简单的机器学习模型:线性回归详解
利用Python实现一个简单的机器学习模型:线性回归详解
41 2
|
14天前
|
机器学习/深度学习 存储 算法
【机器学习】深入探索机器学习:线性回归算法的原理与应用
【机器学习】深入探索机器学习:线性回归算法的原理与应用
23 0
|
15天前
|
机器学习/深度学习 算法
【阿旭机器学习实战】【31】股票价格预测案例--线性回归
【阿旭机器学习实战】【31】股票价格预测案例--线性回归
|
1月前
|
机器学习/深度学习 数据采集 人工智能
【机器学习】非线性回归与线性回归有何不同?
【5月更文挑战第19天】【机器学习】非线性回归与线性回归有何不同?
|
1月前
|
机器学习/深度学习 数据采集 人工智能
【机器学习】怎样检测到线性回归模型中的过拟合?
【5月更文挑战第17天】【机器学习】怎样检测到线性回归模型中的过拟合?

热门文章

最新文章