机器学习(5)--回归

目录

一、回归

1、七种常见回归方式

1.1线性回归(Linear Regression)

1.2逻辑回归(Logistic Regression)

1.3多项式回归(Polynomial Regression)

1.4逐步回归(Stepwise Regression)

1.5岭回归(Ridge Regression)

1.6套索回归(Lasso Regression)

1.7ElasticNet回归

2、三种规范化范式

二、sklearn中的回归举例

 1、导入库

 2、数据处理

 3、训练模型


一、回归

1、七种常见回归方式

1.1线性回归(Linear Regression)

        线性回归使用最佳拟合直线,在因变量Y和自变量X中建立一种关系。

        多元线性回归和一元线性回归的区别在于,多元线性回归存在多个自变量,而一元线性回归只有一个自变量。

        拟合回归线方法:最小二乘法

1.2逻辑回归(Logistic Regression)

        逻辑回归是用来计算事件真或假的概率,当因变量类型属于二元变量时,使用逻辑回归最优。一般用来处理分类问题。

        拟合回归线方法:极大似然估计法。

1.3多项式回归(Polynomial Regression)

        区别于线性回归,自变量的指数大于1所形成的回归方程为多项式回归方程。

        过高次多项式会出现过拟合现象,可以通过检验测试集的拟合情况来判断是否过拟合。

1.4逐步回归(Stepwise Regression)

        处理多个自变量时,使用该形式的回归,通过同时添加或删除基于指定标准的协变量来拟合模型。一般用来处理高维数据集。

1.5岭回归(Ridge Regression)

        岭回归是用于存在多重共线性(自变量高度相关)数据的技术。

        岭回归技术通过给回归估计上增加一个偏差度,来降低标准误差。             

                              Loss(w)=\sum_{i=1}^{N}(y_{i}-w^{T}x^{_{i}})^{2}+\lambda\left \| w \right \| _{2}^{2}

        其中\left \| w \right \|_{2}为L2范数。

1.6套索回归(Lasso Regression)

        套索回归会惩罚回归系数的绝对值大小并通过减少变化程度来提高线性回归模型的精度。

1.7ElasticNet回归

        ElasticNet是Lasso和Ridge回归技术的混合体。对于多个相关特征的数据集来说,ElasticNet回归更有效。

2、三种规范化范式

        L0范数是指向量中非零元素的个数。如果用L0规则化一个参数矩阵W,就是希望W中大部分元素是零,实现稀疏。

        L1范数是指向量中各个元素的绝对值之和。L1范数也可以实现稀疏,通过将无用特征对应的参数W置为零实现。

        L2范数​​是指向量各元素的平方和然后开方,用在回归模型中也称为岭回归。

二、sklearn中的回归举例

 1、导入库

from sklearn.linear_model import LinearRegression as LR             #导入线性回归
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from sklearn.datasets import fetch_california_housing as fch        #导入加利福尼亚房价数据集
import pandas as pd

2、数据处理

housevalue=fch()                                    
X=pd.DataFrame(housevalue.data)                      #特征值作为自变量
Y=housevalue.target                                  #房价作为因变量
X.columns=housevalue.feature_names                   #恢复列索引


Xtrain,Xtest,Ytrain,Ytest=train_test_split(X,Y,test_size=0.3,random_state=30)  #注意四个值的顺序

for i in [Xtrain,Xtest]:                            #修改训练集的index值为有序排列
    i.index=range(i.shape[0])

3、训练模型

reg=LR().fit(Xtrain,Ytrain)        #训练模型
yhat=reg.predict(Xtest)            #yhat值
print(yhat)
print(reg.coef_)                                #线性回归方程中对不同特征估计出的系数
print([*zip(Xtrain.columns,reg.coef_)])         #将列索引结合特征比重系数
print(reg.intercept_)                           #多项式截距

你可能感兴趣的:(机器学习小白,机器学习,回归,python,人工智能)