几种回归的方法 和区别 基础知识可参考
https://www.jianshu.com/p/aadad14db00e
https://blog.csdn.net/mr_hhh/article/details/79567687
Lasso回归:压缩变量,起降维作用;模处理
Lasso回归等于线性回归 + L1范数(L1是拉普拉斯分布)
岭回归:消除共线性;模的平方处理
岭回归等于线性回归 + L2范数 (L2是高斯分布。)
弹性网络在很多特征互相联系的情况下是非常有用的。Lasso 很可能只随机考虑这些特征中的一个,而弹性网络更倾向于选择两个。
线性回归算法一般选择顺序:Ridge Regression(L2正则化)、ElasticNet(即包含L1又包含L2)、Lasso Regression(L1正则化)
超参数alpha在Rideg类中是L2正则的权重、在Lasso类中是L1正则的权重、在ElasticNet和SGDRegressor里面是损失函数里面的alpha
超参数l1_ration在ElasticNet和SGDRegressor中是损失函数的p
多项式回归:PolynomialFeatures(多项式特征)不是做拟合的算法是做预处理的方法,转换数据继续升维(维度的次幂,通过degree超参数在原有的维度基础上增加高阶次幂维度),是为了让线性模型去拟合非线性的数据,就是你是非线性数据,想用线性模型怎么办,把数据处理一下 所以他叫features
原来是 y^=x1 x2
变成
y^=x1 x2 x1 ^2 x2 ^2 x1*x2 升维
升维是增加多个影响Y结果的因素,这样考虑的更全面,最终目的是要增加准确率
如果数据是非线性的变化可以使用非线性的算法生成的模型进行拟合,也可以使用PolynomialFeatures将非线性的数据进行变化,变成类似线性的变化,然后使用线性的模型进行拟合
#线性回归简单代码
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名: linear_regression_1.py
import numpy as np
from sklearn.linear_model import LinearRegression
__author__ = 'yasaka'
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)
lin_reg = LinearRegression()
lin_reg.fit(X, y)
print(lin_reg.intercept_, lin_reg.coef_)
X_new = np.array([[0], [2]])
print(lin_reg.predict(X_new))
#linear_regression2
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名: linear_regression_0.py
import numpy as np
import matplotlib.pyplot as plt
__author__ = 'yasaka'
# 这里相当于是随机X维度X1,rand是随机均匀分布
X = 2 * np.random.rand(100, 1)
# 人为的设置真实的Y一列,np.random.randn(100,