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

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

线性回归

分类: 目标值离散

回归: 目标值连续


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


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

线性关系定义

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实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
1月前
|
机器学习/深度学习 人工智能 算法
探索机器学习:从线性回归到深度学习
本文将带领读者从基础的线性回归模型开始,逐步深入到复杂的深度学习网络。我们将通过代码示例,展示如何实现这些算法,并解释其背后的数学原理。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和知识。让我们一起踏上这段激动人心的旅程吧!
|
2月前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的线性回归模型
本文深入探讨了机器学习中广泛使用的线性回归模型,从其基本概念和数学原理出发,逐步引导读者理解模型的构建、训练及评估过程。通过实例分析与代码演示,本文旨在为初学者提供一个清晰的学习路径,帮助他们在实践中更好地应用线性回归模型解决实际问题。
|
2月前
|
机器学习/深度学习 自然语言处理 算法
深入理解机器学习算法:从线性回归到神经网络
深入理解机器学习算法:从线性回归到神经网络
|
3月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
探索机器学习:从线性回归到深度学习
在这篇文章中,我们将一起踏上一场激动人心的旅程,穿越机器学习的广阔天地。我们将从最基本的线性回归开始,逐步深入到复杂的深度学习模型。无论你是初学者还是有经验的开发者,这篇文章都将为你提供新的视角和深入的理解。让我们一起探索这个充满无限可能的世界吧!
|
2月前
|
机器学习/深度学习 数据采集 算法
探索机器学习中的线性回归
【10月更文挑战第25天】本文将深入浅出地介绍线性回归模型,一个在机器学习领域中广泛使用的预测工具。我们将从理论出发,逐步引入代码示例,展示如何利用Python和scikit-learn库实现一个简单的线性回归模型。文章不仅适合初学者理解线性回归的基础概念,同时也为有一定基础的读者提供实践指导。
|
3月前
|
机器学习/深度学习 API
机器学习入门(七):线性回归原理,损失函数和正规方程
机器学习入门(七):线性回归原理,损失函数和正规方程
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
探索机器学习:从线性回归到深度学习
【9月更文挑战第4天】在这篇文章中,我们将深入探讨机器学习的世界,从基础的线性回归模型开始,逐步深入到复杂的深度学习网络。我们将通过实际的代码示例,揭示这些模型背后的数学原理,以及如何在现实世界的问题中应用它们。无论你是初学者还是有经验的数据科学家,这篇文章都将为你提供新的视角和深入的理解。
|
5月前
|
机器学习/深度学习 数据采集 数据可视化
基于python 机器学习算法的二手房房价可视化和预测系统
文章介绍了一个基于Python机器学习算法的二手房房价可视化和预测系统,涵盖了爬虫数据采集、数据处理分析、机器学习预测以及Flask Web部署等模块。
178 2
基于python 机器学习算法的二手房房价可视化和预测系统
|
6月前
|
机器学习/深度学习 数据采集 人工智能
AI技术实践:利用机器学习算法预测房价
人工智能(Artificial Intelligence, AI)已经深刻地影响了我们的生活,从智能助手到自动驾驶,AI的应用无处不在。然而,AI不仅仅是一个理论概念,它的实际应用和技术实现同样重要。本文将通过详细的技术实践,带领读者从理论走向实践,详细介绍AI项目的实现过程,包括数据准备、模型选择、训练和优化等环节。
600 3
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
探索机器学习的奥秘:从线性回归到深度学习
【8月更文挑战第26天】本文将带领读者走进机器学习的世界,从基础的线性回归模型开始,逐步深入到复杂的深度学习网络。我们将探讨各种算法的原理、应用场景以及实现方法,并通过代码示例加深理解。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供有价值的知识和技能。让我们一起揭开机器学习的神秘面纱,探索这个充满无限可能的领域吧!