python机器学习之线性回归详解

 更新时间:2021年04月20日 08:49:53   作者:佩瑞  
这篇文章主要介绍了python机器学习之线性回归详解,文中有非常详细的代码示例,对正在学习python的小伙伴们有很好的帮助,需要的朋友可以参考下

一、python机器学习–线性回归

线性回归是最简单的机器学习模型,其形式简单,易于实现,同时也是很多机器学习模型的基础。

对于一个给定的训练集数据,线性回归的目的就是找到一个与这些数据最吻合的线性函数。

在这里插入图片描述

二、OLS线性回归

2.1 Ordinary Least Squares 最小二乘法

一般情况下,线性回归假设模型为下,其中w为模型参数

在这里插入图片描述

线性回归模型通常使用MSE(均方误差)作为损失函数,假设有m个样本,均方损失函数为:(所有实例预测值与实际值误差平方的均值)

在这里插入图片描述

由于模型的训练目标为找到使得损失函数最小化的w,经过一系列变换解得使损失函数达到最小值的w为:

在这里插入图片描述

此时求得的w即为最优模型参数

2.2 OLS线性回归的代码实现

#OLS线性回归
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
%matplotlib inline
data = pd.DataFrame(pd.read_excel(r'C:/Users/15643/Desktop/附件1.xlsx'))
feature_data = data.drop(['企业信誉评估'],axis=1)
target_data = data['企业信誉评估']
X_train,X_test,y_train, y_test = train_test_split(feature_data, target_data, test_size=0.3)
from statsmodels.formula.api import ols
from statsmodels.sandbox.regression.predstd import wls_prediction_std
df_train = pd.concat([X_train,y_train],axis=1)
lr_model = ols("企业信誉评估~销项季度均值+有效发票比例+是否违约+企业供求关系+行业信誉度+销项季度标准差",data=df_train).fit()
print(lr_model.summary())
# 预测测试集
lr_model.predict(X_test)

三、梯度下降算法

很多机器学习算法的最优参数不能通过像最小二乘法那样的“闭式”方程直接计算,此时需要使用迭代优化方法。

梯度学习算法可被描述为:

(1)根据当前参数w计算损失函数梯度∇J( w )

(2)沿着梯度反方向−∇J( w )调整w,调整的大小称之为步长,由学习率η控制w:= w−η∇J( w )

(3)反复执行该过程,直到梯度为0或损失函数降低小于阈值,此时称算法收敛。

在这里插入图片描述

3.1 GDLinearRegression代码实现

from linear_regression import GDLinearRegression
gd_lr = GDLinearRegression(n_iter=3000,eta=0.001,tol=0.00001)
#梯度下降最大迭代次数n_iter
#学习率eta
#损失降低阈值tol

四、多项式回归分析

多项式回归是研究一个因变量与一个或者多个自变量间多项式的回归分析方法。

多项式回归模型方程式如下:

hθ(x)=θ0+θ1x+θ2x2+...+θmxm

简单来说就是在阶数=k的情况下将每一个特征转换为一个k阶的多项式,这些多项式共同构成了一个矩阵,将这个矩阵看作一个特征,由此多项式回归模型就转变成了简单的线性回归。以下为特征x的多项式转变:

x−>[1,x,x2,x3...xk]

4.1 多项式回归的代码实现

python的多项式回归需要导入PolynomialFeatures类实现

#scikit-learn 多项式拟合(多元多项式回归)
#PolynomialFeatures和linear_model的组合 (线性拟合非线性)
#[x1,x2,x3]==[[1,x1,x1**2],[1,x2,x2**2],[1,x3,x3**2]]
import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression,Perceptron
from sklearn.metrics import mean_squared_error,r2_score
from sklearn.model_selection import train_test_split
target = std_df_female['总分']
data_complete_ = std_df_female.loc[:,['1000/800','50m','立定跳远','引仰']]
x_train, x_test, y_train, y_test = train_test_split(data_complete_,target, test_size=0.3)
# 多项式拟合
poly_reg  =PolynomialFeatures(degree=2)
x_train_poly = poly_reg.fit_transform(x_train)
model = LinearRegression()
model.fit(x_train_poly, y_train)
#print(poly_reg.coef_,poly_reg.intercept_) #系数及常数
# 测试集比较
x_test_poly = poly_reg.fit_transform(x_test)
y_test_pred = model.predict(x_test_poly)
#mean_squared_error(y_true, y_pred) #均方误差回归损失,越小越好。
mse = np.sqrt(mean_squared_error(y_test, y_test_pred))
# r2 范围[0,1],R2越接近1拟合越好。
r2 = r2_score(y_test, y_test_pred)
print(r2)

到此这篇关于python机器学习之线性回归详解的文章就介绍到这了,更多相关python线性回归内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • pytorch中LN(LayerNorm)及Relu和其变相的输出操作

    pytorch中LN(LayerNorm)及Relu和其变相的输出操作

    这篇文章主要介绍了pytorch中LN(LayerNorm)及Relu和其变相的输出操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • Django中如何用xlwt生成表格的方法步骤

    Django中如何用xlwt生成表格的方法步骤

    这篇文章主要介绍了Django中如何用xlwt生成表格的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Python实现多项式拟合正弦函数详情

    Python实现多项式拟合正弦函数详情

    这篇文章主要介绍了Python实现多项式拟合正弦函数详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • torch.optim优化算法理解之optim.Adam()解读

    torch.optim优化算法理解之optim.Adam()解读

    这篇文章主要介绍了torch.optim优化算法理解之optim.Adam()解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • 简单谈谈Python中的几种常见的数据类型

    简单谈谈Python中的几种常见的数据类型

    Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。
    2017-02-02
  • Python3.x中自定义比较函数

    Python3.x中自定义比较函数

    这篇文章主要介绍了Python3.x中自定义比较函数,本文给出了自定义对象的比较、字典值value的比较实现方法,需要的朋友可以参考下
    2015-04-04
  • Python利用matplotlib.pyplot.boxplot()绘制箱型图实例代码

    Python利用matplotlib.pyplot.boxplot()绘制箱型图实例代码

    相信大家应该都知道Python绘制箱线图主要用matplotlib库里pyplot模块里的boxplot()函数,下面这篇文章主要给大家介绍了关于Python利用matplotlib.pyplot.boxplot()绘制箱型图的相关资料,需要的朋友可以参考下
    2022-08-08
  • 详细分析Python collections工具库

    详细分析Python collections工具库

    这篇文章主要介绍了详解Python collections工具库的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • Pycharm中运行程序在Python console中执行,不是直接Run问题

    Pycharm中运行程序在Python console中执行,不是直接Run问题

    这篇文章主要介绍了Pycharm中运行程序在Python console中执行,不是直接Run问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Python保存dict字典类型数据到Mysql并自动创建表与列

    Python保存dict字典类型数据到Mysql并自动创建表与列

    这篇文章主要介绍了Python保存dict字典类型数据到Mysql并自动创建表与列,字典是另一种可变容器模型,且可存储任意类型对象,想了解更多内容的小伙伴可以和小编一起进入下面文章学习更多内容,希望对你有所帮助
    2022-02-02

最新评论