Python线性回归学习的知识点有哪些,怎么实现线性回归
Admin 2022-06-27 群英技术资讯 304 次浏览
线性回归是最简单的机器学习模型,其形式简单,易于实现,同时也是很多机器学习模型的基础。
对于一个给定的训练集数据,线性回归的目的就是找到一个与这些数据最吻合的线性函数。
一般情况下,线性回归假设模型为下,其中w为模型参数
线性回归模型通常使用MSE(均方误差)作为损失函数,假设有m个样本,均方损失函数为:(所有实例预测值与实际值误差平方的均值)
由于模型的训练目标为找到使得损失函数最小化的w,经过一系列变换解得使损失函数达到最小值的w为:
此时求得的w即为最优模型参数
#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或损失函数降低小于阈值,此时称算法收敛。
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]
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)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了Python小波变换去噪,对于去噪效果好坏的评价,常用信号的信噪比(SNR)与估计信号同原始信号的均方根误差(RMSE)来判断,需要的朋友可以参考下
pyqtSignal的基本使用,一些朋友可能会遇到这方面的问题,对此在下文小编向大家来讲解一下,内容详细,易于理解,希望大家阅读完这篇能有收获哦,有需要的朋友就往下看吧!
今天给大伙分享一下 Python 爬虫的教程,这次主要涉及到的是关于某 APP 的逆向分析并抓取数据,关于 APP 的反爬会麻烦一些,比如 Android 端的代码写完一般会进行打包并混淆加密加固,所以除了抓包之外,还需要对 APP 进行查壳脱壳反编译等操作。
这篇文章主要为大家介绍了python人工智能tensorflow构建循环神经网络RNN,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
这篇文章主要为大家介绍了python unicodedata模块用法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008