进入机器学习阶段后第一次接触线性回归,感觉线性回归其实就是通过有限的离散型数据,找到一条直线,使得尽可能多的离散点,分布在线附近的区域(理想状态是所有的点都在线上,但是一般是无法满足的),以此来预测出现在未知位置的点的分布情况,从而预测出你要评估的目标值。
首先,什么是回归, 回归分析研究的是多个变量之间的关系。它是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。这种技术通常用于预测分析,时间序列模型以及发现变量之间的因果关系。
其次,
回归分析的好处比较多,主要有以下几点:
(1)它表明自变量和因变量之间的显著关系
(2)它表明多个自变量对一个因变量的影响强度。
(3)允许我们去比较那些衡量不同尺度的变量之间的相互影响,如价格变动与促销活动数量之间联系
最后:
3、回归与拟合的区别
拟合的概念更广泛,拟合包含回归,还包含插值和逼近。拟合是一种数据处理的方式,不特指哪种方法.简单的说就是你有一组数据,觉得这组数据和一个已知的函数(这个函数的参数未定)很相似,为了得到最能表示这组数据特征的这个函数,通过拟合这种方式(具体的数学方法很多)求得参数.而回归是一种特定的数学方法,它可以实现数据拟合,得到函数的参数.也有些拟合得到的参数并非是函数的参数,如神经网络,得到的是这个神经网络的参数。
三大步:
一、准备数据,将得到的数据进行初步的处理,使得其满足,下一步操作需要的类型
这一步可能会用到的操作就是标准化和归一化处理,而这一操作在sklearn库里介绍的很详细,也很简单,不做赘述
二、创建模型,进行数据集的训练,通常也会分为训练集和测试集两种,训练集就是通过不停地数据代入,不停地探索出最合理的直线,测试值就是对这条直线预测性能的评判
三、新数据导入,得出预测结果。
机器学习其实就是计算机通过大量数据来模拟人脑的思考分析能力的体现,我们思考这些,是通过感性和理性的双重认知得出结果,但是机器只能通过数据模拟我们理性认知的这部分,而机器学习的性能评分就是对机器的这种行为做出的评价,评分高的说明预测的结果更偏向于真实,反之,说明预测值和真实值之间差距较大。
线性回归只是回归里最常见最基本的一种,主要用于离散的数据,表现出线性关系的时候运用比较有意义,当然其他的回归模型也是能够广泛运用的,会根据数据的表现形式选择合适的模型。
def boston_liner():#获取数据lb=load_boston()#分割数据集到训练集和测试集x_train,x_test,y_train,y_test=train_test_split(lb.data,lb.target,test_size=0.25)#特征值和目标值都必须进行标准化处理,实例两个标准APIstd_x=StandardScaler()x_train=std_x.fit_transform(x_train)#用转化训练集的标准归一化测试集x_test=std_x.transform(x_test)#目标值std_y=StandardScaler()y_train=std_y.fit_transform(y_train.reshape(-1,1))y_test=std_y.transform(y_test.reshape(-1,1))#正规方程求解方式预测结果lr=LinearRegression()lr.fit(x_train,y_train)print(lr.coef_)#保存训练好的模型joblib.dump(lr,'./test.pkl')print('orgin value;;;;;',std_y.inverse_transform(y_test[7]))#预测测试集的房子价格y_lr_predict=std_y.inverse_transform(lr.predict(x_test))print('正规方程测试集里面的每个房子的预测价格',y_lr_predict)print('正规方程R2评分',r2_score(std_y.inverse_transform(y_test),y_lr_predict))boston_liner()
以上理解仅是个人见解,不到之处,欢迎指正!
关于更多回归模型可以参考一下几种:
回归模型重要的基础或者方法就是回归分析,回归分析是研究一个变量(被解释变量)关于另一个(些)变量(解释变量)的具体依赖关系的计算方法和理论, [2] 是建模和分析数据的重要工具。在这里,我们使用曲线/线来拟合这些数据点,在这种方式下,从曲线或线到数据点的距离差异最小。下面是回归分析的几种常用方法 [3] :
1. Linear Regression线性回归
它是最为人熟知的建模技术之一。线性回归通常是人们在学习预测模型时首选的技术之一。在这种技术中,因变量是连续的,自变量可以是连续的也可以是离散的,回归线的性质是线性的。
线性回归使用最佳的拟合直线(也就是回归线)在因变量(Y)和一个或多个自变量(X)之间建立一种关系。
用一个方程式来表示它,即
其中a表示截距,b表示直线的斜率,e是误差项。这个方程可以根据给定的预测变量(s)来预测目标变量的值。
2.Logistic Regression逻辑回归
逻辑回归是用来计算“事件=Success”和“事件=Failure”的概率。当因变量的类型属于二元(1 / 0,真/假,是/否)变量时,我们就应该使用逻辑回归。这里,Y的值从0到1,它可以用下方程表示。
上述式子中,p表述具有某个特征的概率。
3. Polynomial Regression多项式回归
对于一个回归方程,如果自变量的指数大于1,那么它就是多项式回归方程。如下方程所示:
在这种回归技术中,最佳拟合线不是直线。而是一个用于拟合数据点的曲线。
4. Stepwise Regression逐步回归
在处理多个自变量时,我们可以使用这种形式的回归。在这种技术中,自变量的选择是在一个自动的过程中完成的,其中包括非人为操作。
这一壮举是通过观察统计的值,如R-square,t-stats和AIC指标,来识别重要的变量。逐步回归通过同时添加/删除基于指定标准的协变量来拟合模型。下面列出了一些最常用的逐步回归方法:
-
标准逐步回归法做两件事情。即增加和删除每个步骤所需的预测。
-
向前选择法从模型中最显著的预测开始,然后为每一步添加变量。
-
向后剔除法与模型的所有预测同时开始,然后在每一步消除最小显着性的变量。
这种建模技术的目的是使用最少的预测变量数来最大化预测能力。这也是处理高维数据集的方法之一。
5. Ridge Regression岭回归
岭回归分析是一种用于存在多重共线性(自变量高度相关)数据的技术。在多重共线性情况下,尽管最小二乘法(OLS)对每个变量很公平,但它们的差异很大,使得观测值偏移并远离真实值。岭回归通过给回归估计上增加一个偏差度,来降低标准误差。
6. Lasso Regression套索回归
它类似于岭回归,Lasso (Least Absolute Shrinkage and Selection Operator)也会惩罚回归系数的绝对值大小。此外,它能够减少变化程度并提高线性回归模型的精度。看看下面的公式:
7.ElasticNet回归
ElasticNet是Lasso和Ridge回归技术的混合体。它使用L1来训练并且L2优先作为正则化矩阵。当有多个相关的特征时,ElasticNet是很有用的。Lasso 会随机挑选他们其中的一个,而ElasticNet则会选择两个。
Lasso和Ridge之间的实际的优点是,它允许ElasticNet继承循环状态下Ridge的一些稳定性。