1、回归分析概括
目标值(因变量)是连续型数据,通过某种函数关系找到因变量和自变量之间的关系,进而预测目标。
常见的回归:线性回归、岭回归、非线性回归
回归拟合目标:计算自变量与因变量关系的函数参数
通过不断拟合缩小预测值与真实值的差距:最终使得这个差距(误差项)成为一组均值为0,方差为1的随机数。
2、损失函数
3、优化算法
使得损失函数值达到最小的方法。
方法:
正规方程
梯度下降
4、python的API
4.1.1 statsmodels.formula.api.OLS():普通最小二乘模型拟合- - 常用
4.1.2 scipy.stats.linregress(): 线性拟合
4.1.3 scipy.optimize.curve_fit():回归函数拟合
使用参考:https://blog.csdn.net/weixin_41685388/article/details/104346268
5、python机器学习线性模型API
1、·sklearn.linear_model.LinearRegressiont(fit_intercept=True)
。通过正规方程优化
。fitintercept:是否计算偏置
。LinearRegression.coef_:返回回归系数
。LinearRegression.intercept_:返回偏置
2、·sklearn.linear model.SGDRegressor(loss=“squared loss”,fit intercept=True,learning_rate =‘invscaling’,eta0=0.01)
。SGDRegressor类实现了随机梯度下降学习优化,它支持不同的loss函数和正则化悉罚项来拟合线性回归模型。
。loss:损失类型
·loss="squared_loss”:普通最小二乘法
。fit_intercept:是否计算偏置 True/False
。eta0=0.01 :起始设定学习率
。learning_rate: 迭代过程中学习率的计算方式
· 学习率填充
·"constant":eta=eta0
·"optimal":eta=1.0/(alpha*(t+to))[default]
·"invscaling":eta=eta0/pow(t,power_t),
·power_t=0.25:存在父类当中
·对于一个常数值的学习率来说,可以使用learning_rate='constant',并使用eta0来指定学习率。
。SGDRegressor.coef_:返回回归系数
。SGDRegressor.intercept_:返回偏置
6、机器学习中回归性能评估
均方误差越小,模型相对越好。
7、欠拟合和过拟合
欠拟合:模型拟合欠佳,多加些数据及特征变量
过拟合:模型过于复杂,训练集上准确率很高,一拿到测试集上效果就不理想了。
。原因:原始特征过多,存在一些嘈杂特征,模型过于复杂是因为模型尝试去兼顾各个测试数据点
。线性模型解决办法:
·正则化:L1正则化,L2正则化
8、线性回归的改进–岭回归
岭回归,其实也是一种线性回归。只不过在筛法建立回归方程时候,加上L2正则化的限制,从而达到解决过拟合的效果。
API: ·sklearn.linear_model.Ridge(alpha=1.0,fit_intercept=True,solver=“auto”,nomalize=False)
。具有L2正则化的线性回归
。alpha:正则化力度,惩罚项系数 入。正则化力度越大,权重系致会越小,正则化力度越小,权重系数会越大。
·取值:0~1,1~10
。solver:会根据数据自动选择优化方法
·sag:如果数据集、特征都比较大,选择该随机梯度下降优化
。normalize:数据是否进行标准化
·normalize=False:可以在fit之前调用preprocessing.StandardScaler标准化数据,自动对数据进行标准化
。Ridge.coef-:回归权重
。Ridge.intercept_:回归偏置
9、案例代码
from sklearn.datasets import load_boston #sklearn波士顿房价预测数据接口
from sklearn.model_selection import train_test_split #划分数据集
from sklearn.preprocessing import StandardScaler #数据标准化
from sklearn.linear_model import LinearRegression, SGDRegressor, Ridge #预估器(正规方程)、预估器(梯度下降学习)、岭回归
from sklearn.metrics import mean_squared_error #均方误
from sklearn