热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

机器学习算法线性回归

线性回归线性回归解决问题基本形式线性回归目的模型计算梯度下降法求最优解代码演示--波士顿房价预估(python)线性回归算法学习记录,方便后期复习线性回归解决问题对


线性回归

    • 线性回归解决问题
    • 基本形式
    • 线性回归目的
    • 模型计算
    • 梯度下降法求最优解
    • 代码演示--波士顿房价预估(python)


线性回归算法学习记录,方便后期复习



线性回归解决问题

对大量的观测数据进行处理,从而得到比较符合事物内部规律的数学表达式。也就是说寻找到数据与数据之间的规律所在,从而就可以模拟出结果,也就是对结果进行预测。解决的就是通过已知的数据得到未知的结果。例如:对房价的预测、判断信用评价、电影票房预估等。


基本形式

给定由d个属性描述的示例X=(x1;x2;…;xd),其中xi是X在第i个属性上的取值,线性模型想要通过一个属性的线性组合来得到一个预测的函数,即:
f(x)=w1x1+w2x2+…+wdxd+b
一般用向量的形式可以写成:
f(x)=wTX+b
其中w=(w1;w2;…;wd),,当w和b学得之后,模型就得以确定。


线性回归目的

在这里插入图片描述
线性回归的目的就是求解出合适的θ,在一元的情况下拟合出一条直线(多元情况下是平面或者曲面),可以近似的代表各个数据样本的标签值。所以最好的直线要距离各个样本点都很接近
在这里插入图片描述
那么应该如何求得这条直线呢?


模型计算

为了计算出这条直线,我们引入损失函数的概念。损失函数表示的是预测值与实际值之间的不一致程度。表达式如下:
在这里插入图片描述
还有另一种表达式:
在这里插入图片描述
其中hθ(x(i))代表每个样本通过我们模型的预测值,y(i)代表每个样本标签的真实值,m为样本个数。
我们要做的就是找到一组值,将其带入损失函数后使得该损失函数的值最小。


梯度下降法求最优解

梯度下降方法就是沿着梯度下降的方向通过迭代逐步求取一个函数的最小值
通常情况下,数据不可能完全符合我们的要求,所以很难用矩阵去求解,所以机器学习就应该用学习的方法,因此我们采用梯度下降,不断迭代,沿着梯度下降的方向来移动,求出极小值。梯度下降法包括批量梯度下降法和随机梯度下降法(SGD)以及二者的结合mini批量下降法(通常与SGD认为是同一种,常用于深度学习中)。
图示如下:
在这里插入图片描述
在这里插入图片描述


代码演示–波士顿房价预估(python)

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_boston# 加载波士顿数据集
boston = load_boston()# 将数据转为pandas,方便处理
boston_pd = pd.DataFrame(boston.data, columns=boston.feature_names)
boston_pd['price'] = boston.target
print(boston_pd)# 绘制各属性与房屋价格的散点图,分析数据相关性
for i in range(0, 9):X = boston_pd.iloc[:, i:i+1]y = boston_pd['price']plt.subplot(3, 3, i+1)plt.scatter(X, y)plt.xlabel(u'{}'.format(boston.feature_names[i]))plt.ylabel(u'price')plt.title(u'{} for price'.format(boston.feature_names[i]))plt.show()# 简单线性回归数据集划分
X = np.array(boston_pd.iloc[:, 5:6])
y = np.array(boston_pd['price'])
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25)# 多元线性回归数据集划分
X_train, X_test, y_train, y_test = train_test_split(boston.data, boston.target, test_size=0.25)# 模型训练
lr = LinearRegression()
lr.fit(X_train, y_train)
print("权重:", lr.coef_)
print("截距:", lr.intercept_)
print("拟合函数:",'y={}x1+{}x2+{}x3+{}x4+{}'.format(lr.coef_[0], lr.coef_[1], lr.coef_[2],lr.coef_[3], lr.intercept_))# 预测
price_predict = lr.predict(X_test)# 模型评估
plt.figure(figsize=(10, 6))
t = np.arange(len(X_test))
plt.plot(t, y_test, 'r', linewidth=2, label='y_test')
plt.plot(t, price_predict, 'g', linewidth=2, label='price_predict')
plt.legend()
plt.xlabel('test data')
plt.ylabel('price')
plt.show()

推荐阅读
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • 我用Tkinter制作了一个图形用户界面,有两个主按钮:“开始”和“停止”。请您就如何使用“停止”按钮终止“开始”按钮为以下代码调用的已运行功能提供建议 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
  • [echarts] 同指标对比柱状图相关的知识介绍及应用示例
    本文由编程笔记小编为大家整理,主要介绍了echarts同指标对比柱状图相关的知识,包括对比课程通过率最高的8个课程和最低的8个课程以及全校的平均通过率。文章提供了一个应用示例,展示了如何使用echarts制作同指标对比柱状图,并对代码进行了详细解释和说明。该示例可以帮助读者更好地理解和应用echarts。 ... [详细]
author-avatar
涅槃WB
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有