百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

机器学习之线性回归,模型训练、保存和加载

toyiye 2024-04-27 03:47 38 浏览 0 评论

什么是线性回归?

线性回归就是自变量和因变量之间为线性关系。比如你的存款和贷款额度,你有 1 万存款,可以贷款 999 元,10 万存款可以贷款 99998 元,20 万存款可以贷款 200001 元。那么,如果你作为一名金融公司工作人员,给客户发放贷款,这个客户的存款证明有 50 万,你应该批多少额度呢?

显然,你大概已经发现了规律,f(x) ≈ 0.1 x。实际上这个过程一般都是程序自动完成的。真实情况更加复杂,不仅仅要考虑你的存款,还包括固定资产、消费水平、消费方向、职业、芝麻信用分等等,多变量共同决定你的贷款额度。

如果要人工评估,一方面工作量过大,另一方面,评估带有很多主观因素,未必能够选择较为合适的方案。

线性回归定义

线性回归(Linear regression)是利用回归方程(函数)一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式。

只有一个自变量的情况称为一元回归,多于一个自变量情况的叫做多元回归。

损失函数

在预测过程中,结果几乎不会和真实数据完全匹配。

我们只考虑最简单情况,一元回归,预测曲线为 f(w) = wx+b。

那么,真实坐标点距离预测方程线的竖直距离便是误差,由于误差包括正负,因此,我们将其平方处理。

目标是找到模型中合适的 w,使得损失最小。其中 w 是矩阵。

正规方程

在多元回归中,使用正规方程可以直接得到最好的结果。

其中,X 为特征值矩阵,y 为目标值矩阵。缺点是,当特征过多时,求解速度会非常慢。

梯度下降法

基本思想是通过沿着损失函数梯度的反方向,逐步调整模型参数,使损失函数逐渐减小。梯度表示了函数变化最快的方向,而负梯度方向即是函数值下降最快的方向。

假设这样一个场景:一个人被困在山上,需要从山上下来(找到山的最低点,也就是山谷)。但此时山上的浓雾很大,导致可视度很低;因此,下山的路径就无法确定,必须利用自己周围的信息一步一步地找到下山的路。这个时候,便可利用梯度下降算法来帮助自己下山。怎么做呢,首先以他当前的所处的位置为基准,寻找这个位置最陡峭的地方,然后朝着下降方向走一步,然后又继续以当前位置为基准,再找最陡峭的地方,再走直到最后到达最低处。

Python程序实战

import numpy as np
import sklearn.linear_model as lm
import matplotlib.pyplot as plt

train_x = np.array([[0.5], [0.6], [0.8], [1.1], [1.4]])
train_y = np.array([5.0, 5.5, 6.0, 6.8, 7.1])

# 创建线性回归器
model = lm.LinearRegression()
# 训练回归器
model.fit(train_x, train_y)
pre_y = model.predict(train_x)

print(pre_y)
print("系数 coef_ =", model.coef_)
print("截距 intercept_=", model.intercept_)

plt.plot(train_x, pre_y)
plt.scatter(train_x, train_y)
plt.show()

输出:
[5.20072993 5.43211679 5.89489051 6.58905109 7.28321168]
系数 coef_ = [2.31386861]
截距 intercept_= 4.043795620437956

模型评价指标

1.平均绝对误差:单个观测值与预测值的偏差的绝对值的平均。

2.均方误差:单个样本到平均值差值的平方均值。

3.MAD中位数绝对偏差:与数据中值绝对偏差的中值。

4.R2决定系数:趋向于 1,模型越好;趋向于 0,模型越差。

import sklearn.metrics as sm  # 模型评估

# 平均绝对误差
print(sm.mean_absolute_error(train_y, pre_y))
# 平均平方误差(均方误差)
print(sm.mean_squared_error(train_y, pre_y))
# 中位数绝对偏差
print(sm.median_absolute_error(train_y, pre_y))
# R2得分
print(sm.r2_score(train_y, pre_y))

输出:
0.15357664233576643
0.026802919708029154
0.18321167883211587
0.9563185793545809

保存和加载模型

保存模型:

import pickle

with open('catmodel.pickle','wb') as f:
    pickle.dump(model, f)

加载模型:

import pickle

with open('./catmodel.pickle','rb') as f:
    model = pickle.load(f)

print(model.predict([[1.1],[2.2]]))

输出:
[6.58905109 9.13430657]

相关推荐

Python爬虫Scrapy库的使用入门?(python scrapy爬虫)

Scrapy是一个开源的并且支持高度可扩展的Python爬虫框架,主要被用来实现从网站提取数据。出现之初就是为网页抓取而设计,但是现在它也可以被用于从APIs中抓取数据或通用的Web抓取任务。Sc...

Python3 标准库概览(python标准库有什么)

操作系统接口os模块提供了不少与操作系统相关联的函数。>>>importos>>>os.getcwd()#返回当前的工作目录'C:\\Python34...

零基础入门学习Python(三):变量和字符串

分享兴趣,传播快乐,增长见闻,留下美好!亲爱的您,这里是LearningYard新学苑。今天小编为大家带来的是...

Python读写docx文件(python读写word)

Python读写docx文件Python读写word文档有现成的库可以处理pipinstallpython-docx安装一下。https://python-docx.readthedocs.io/...

如何利用Xpath抓取京东网商品信息

前几小编分别利用Python正则表达式和BeautifulSoup爬取了京东网商品信息,今天小编利用Xpath来为大家演示一下如何实现京东商品信息的精准匹配~~HTML文件其实就是由一组尖括号构成的标...

如何利用Xpath选择器抓取京东网商品信息

前几小编分别利用Python正则表达式和BeautifulSoup爬取了京东网商品信息,今天小编利用Xpath来为大家演示一下如何实现京东商品信息的精准匹配~~HTML文件其实就是由一组尖括号构成的标...

python之Scrapy爬虫案例:豆瓣(python爬虫书籍豆瓣评分)

python模块之Scrapy爬虫框架...

Python编程入门学习:最常见加密方式和Python实现

前言我们所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的Bytes。所以当我们在Python中进行加密操作的时候,要确保我们操作的是Bytes,否则就会报错。将字符串...

一日一技:Python中的string.rindex()方法

string.rindex()方法string.rindex()方法返回字符串内子字符串的最高索引(如果找到)。如果未找到子字符串,则会引发异常。rindex()的语法为:...

Asterisk-ARI对通道中的DTMF事件处理

Asterisk通道中关于DTMF处理是一个非常重要的功能。通过DTMF可以实现很多的业务处理。现在我们介绍一下关于ARI对通道中的DTMF处理,我们通过自动话务员实例来说明Asterisk如何创建一...

PyQt5 初次使用(pyqt5下载官网)

本篇文章默认已安装Python3,本篇文章默认使用虚拟环境。安装pipinstallPyQt5PyQt一些图形界面开发工具QtDesigner、国际化翻译工具Liguist需要另外...

Qt开发,使用Qt for Python还是Qt C++ Qt开发,使用Qt for

Qt开发使用QtforPython还是QtC++?1.早些年写过一个PyQt5的项目,最近几年重构成QtC++了,其中有个人原因,如早期代码写得烂,...

最简单方法!!用python生成动态条形图

最近非常流行动态条形图,在B站等视频网站上,此类视频经常会有上百万的播放量,今天我们通过第三方库:bar_chart_race(0.2版本)来实现动态条形图的生成;生成的效果如图:问题:...

Asterisk通道和ARI接口的通信(aau通道数)

Asterisk通道和ARI详解什么是通道Asterisk中,通道是介于终端和Asterisk自己本身的一个通信媒介。它包含了所有相关信息传递到终端,或者从终端传递到Asterisk服务器端。这些信...

Python GUI-长链转短链(长链接转化成短链接java)

当我们要分享某一个链接给别人,或是要把某个链接放入帖子中时,如果链接太长,则会占用大量空间,而且很不美观。这时候,我们可以结束长链转短链工具进行转换。当然可以直接搜索在线的网站进行转换,但我们可以借此...

取消回复欢迎 发表评论:

请填写验证码