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

本文涉及的产品
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
简介: 机器学习:线性回归梯度下降预测波士顿房价

线性回归

分类: 目标值离散

回归: 目标值连续

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

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

线性关系定义

屏幕截图 2021-11-23 121746.png

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

参数k,权重

屏幕截图 2021-11-23 121826.png

线性回归定义:

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

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

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

通用公式:屏幕截图 2021-11-23 124533.png

其中w,x为矩阵

屏幕截图 2021-11-23 124600.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,使得损失函数最小

迭代的算法

损失函数(误差大小)

屏幕截图 2021-11-23 125206.png

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

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

最小二乘法之正规方程

屏幕截图 2021-11-23 125315.png

X 为特征矩阵

y 为目标值矩阵

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

XT 转置

X1求逆 ->X*?=

单位矩阵

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

最小二乘法之梯度下降

方向

屏幕截图 2021-11-23 125555.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

yi预测值

y真实值

梯度下降和正规方程区别

梯度下降 正规方程
需要选择学习率a 不需要
需要多次迭代 一次运算得出
当特征数据量n大时能较好适用 如果特征数量n较大则运算代价较大

适用于各种类型的模型

只适用于线性模型,不适合逻辑回归模型
大规模数据 小规模数据,过拟合

代码示例

# -*- 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


相关文章
|
机器学习/深度学习 计算机视觉
深度学习常见的损失函数
深度学习常见的损失函数
606 1
深度学习常见的损失函数
|
安全 Linux iOS开发
Anaconda下载及安装保姆级教程(详细图文)
Anaconda下载及安装保姆级教程(详细图文)
34760 1
Anaconda下载及安装保姆级教程(详细图文)
|
安全 测试技术 Windows
RAMOS(全内存操作系统)初识----仅供测试
RAMOS(全内存操作系统)初识----仅供测试
3113 0
RAMOS(全内存操作系统)初识----仅供测试
|
SQL 存储 数据库
基于Web技术的在线考试系统的设计与实现(论文+源码)_kaic
基于Web技术的在线考试系统的设计与实现(论文+源码)_kaic
|
机器学习/深度学习 算法 数据处理
《零基础实践深度学习》波士顿房价预测任务1.3.3.4训练过程
这篇文章详细阐述了如何使用线性回归对波士顿房价进行预测,包括构建神经网络模型、数据处理、模型设计、训练过程、梯度下降法以及随机梯度下降法(SGD)的应用,并提供了完整的Python代码实现。
|
机器学习/深度学习 算法 TensorFlow
【Python机器学习】梯度下降法的讲解和求解方程、线性回归实战(Tensorflow、MindSpore平台 附源码)
【Python机器学习】梯度下降法的讲解和求解方程、线性回归实战(Tensorflow、MindSpore平台 附源码)
434 0
|
机器学习/深度学习 数据采集 人工智能
《零基础实践深度学习》基于线性回归实现波士顿房价预测任务1.3.3
这篇文章详细介绍了如何使用线性回归算法实现波士顿房价预测任务,包括数据读取、形状变换、集划分、归一化处理、模型设计、前向计算以及损失函数的计算等步骤,并提供了相应的Python代码实现。
 《零基础实践深度学习》基于线性回归实现波士顿房价预测任务1.3.3
|
机器学习/深度学习 算法 前端开发
《零基础实践深度学习》波士顿房价预测任务1.3.3.5 总结
使用Numpy实现梯度下降算法来构建和训练线性模型进行波士顿房价预测的过程,并提供了模型保存的方法,同时提出了几个关于梯度计算、参数更新和神经网络训练的作业题目。
 《零基础实践深度学习》波士顿房价预测任务1.3.3.5 总结
|
数据采集 数据处理 计算机视觉
4.3 图像分类ResNet实战:眼疾识别
这篇文章介绍了使用ResNet网络进行眼疾识别的实战流程,涵盖了计算机视觉任务研发的全流程,包括数据处理、数据预处理、数据读取器的定义,以及如何利用iChallenge-PM数据集进行模型训练和评估。
|
机器学习/深度学习 算法 程序员
《零基础实践深度学习》波士顿房价预测任务 02
这篇文章通过"波士顿房价预测"任务,介绍了使用Python和Numpy构建神经网络模型的基本思路和操作,首先以线性回归模型为例,解释了神经网络中损失函数的选择和模型的构建过程。

热门文章

最新文章