回归 好坏 机器学习_python机器学习线性回归

python机器学习--线性回归

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

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

针对线性回归算法在之前的数模案例也有涉及喔,欢迎去看看上一篇博客数学建模预测模型实例--大学生体测数据模型
d636df1f61ec67680088dcab8cffe1b7.png
在这里插入图片描述

OLS线性回归

Ordinary Least Squares 最小二乘法

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

df10325f1f3ee7a738b47baab0d81b42.png
在这里插入图片描述

线性回归模型通常使用MSE(均方误差)作为损失函数,假设有m个样本,均方损失函数为:==(所有实例预测值与实际值误差平方的均值)==
f0aeeac72035d60dc19317d72a18081a.png
在这里插入图片描述

由于模型的训练目标为找到使得损失函数最小化的w,经过一系列变换解得使损失函数达到最小值的w为:
fd4e85dd3a141dd751c556ee6db016e3.png
在这里插入图片描述

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

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计算损失函数梯度a40564eaaf9fc4f9484789776bc446f4.png
(2)沿着梯度反方向ad5cb0031d57615e0015b55fc88e1319.png调整w,调整的大小称之为步长,由学习率控制d518ac6602de39a1a875eab5bd989e30.png
(3)反复执行该过程,直到梯度为0或损失函数降低小于阈值,此时称算法收敛。==

f86c3d98b21a223266555ef9018bea38.png
在这里插入图片描述

GDLinearRegression代码实现

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

多项式回归分析

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

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

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

多项式回归的代码实现

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线性回归就到这里啦,如果喜欢这篇内容欢迎与我们多多交流 ! 奇趣多多,数模多多!

6b7dec09668e7bb5fe7bcd7ae7ccde76.png
在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值