一.线性回归

LinearRegression类就是我们平时所说的普通线性回归,它的损失函数如下所示:

对于这个损失函数,一般有梯度下降法和最小二乘法两种极小化损失函数的优化方法,而scikit-learn中的LinearRegression类使用的是最小二乘法。通过最小二乘法,可以解出线性回归系数θ为:
验证方法:LinearRegression类并没有用到交叉验证之类的验证方法,需要我们自己把数据集分成训练集和测试集,然后进行训练优化。
使用场景:一般来说,只要我们觉得数据有线性关系,LinearRegression类就是我们的首选。如果发现拟合或者预测的不好,再考虑用其它线性回归类库。

from sklearn.linear_model import LinearRegression
lr=LinearRegression()
lr.fit(train_x,train_y)
print lr.intercept_
print lr.coef_

二.岭回归

由于LinearRegression没有考虑过拟合的问题,有可能导致泛化能力较差,这时损失函数可以加入正则化项,如果加入的是L2范数的正则化项,就是Ridge回归的损失函数,如下所示:
其中α是常数系数,需要进行调优,是L2范数。
Ridge回归在不抛弃任何一个特征的情况下,缩小了回归系数(是一种缩放的模型),使得模型相对而言比较稳定,不至于过拟合。
对于这个损失函数,一般有梯度下降法和最小二乘法两种极小化损失函数的优化方法,而scikit-learn中的Ridge类使用的是最小二乘法。通过最小二乘法,可以解出线性回归系数θ为:

其中E是单位矩阵。
验证方法:Ridge类并没有用到交叉验证之类的验证方法,需要我们自己把数据集分成训练集和测试集,需要自己设置好超参数α,然后进行训练优化。
使用场景:一般来说,只要我们觉得数据有线性关系,并且使用LinearRegression类拟合的不是特别好,需要正则化时,可以考虑用Ridge类。但是这个类最大的缺点是每次我们要自己指定一个超参数α,然后自己评估α的好坏,比较麻烦,一般都会使用下面将会讲到的RidgeCV类来跑Ridge回归,不推荐直接用这个Ridge类,除非你只是为了学习Ridge回归。
from sklearn.linear_model import Ridge
from sklearn.model_selection import cross_val_score
alphas=np.logspace(-3,2,50)
test_scores =[]
for alpha in alphas:
clf=Ridge(alpha)
test_score=np.sqrt(-cross_val_score(clf,X_train,Y_train,cv=10,scoring='neg_mean_squared_error'))
test_scores.append(np.mean(test_score))
plt.plot(alphas,test_scores)

  RidgeCV类的损失函数和损失函数的优化方法与Ridge类完全相同,区别在于验证方法。

验证方法:RidgeCV类对超参数α使用了交叉验证,来帮助我们选择一个合适的α值。在初始化RidgeCV类时,我们可以提供一组备选的α值。RidgeCV类会帮我们选择一个合适的α值,免去了我们自己去一轮轮筛选α值的苦恼。
from sklearn.linear_model import RidgeCV
# 在初始化RidgeCV类时, 提供一组备选的α值, RidgeCV类会帮我们选择一个合适的α值.
ridgecv = RidgeCV(alphas=[0.01, 0.1, 0.5, 1, 3, 5, 7, 10, 20, 100], cv=5)
# 拟合训练集
ridgecv.fit(train_X, train_Y)
# 打印最优的α值
print "最优的alpha值: ", ridgecv.alpha_
# 打印模型的系数
print ridgecv.intercept_
print ridgecv.coef_

三.lasso回归

线性回归的L1正则化通常称为Lasso回归,它和Ridge回归的区别是在损失函数上增加的是L1正则化项,而不是L2正则化项。L1正则化项也有一个常数系数α来调节损失函数的均方差项和正则化项的权重,具体的Lasso回归的损失函数如下所示:
其中m是样本个数,α是常数系数,需要进行调优。是L1范数。
Lasso回归可以使得一些特征的系数变小,甚至一些绝对值非常小的系数直接变为0,增强模型的泛化能力

Lasso回归的损失函数的优化方法常用的有两种,分别是坐标轴下降法和最小角回归法。Lasso类采用的是坐标轴下降法,后面讲到的LassoLars类采用的是最小角回归法

from sklearn.linear_model import LassoCV
# 在初始化LassoCV类时, 提供一组备选的α值, LassoCV类会帮我们选择一个合适的α值.
lassocv = LassoCV(alphas=[0.01, 0.1, 0.5, 1, 3, 5, 7, 10, 20, 100], cv=5)
# 拟合训练集
lassocv.fit(train_X, train_Y.values.ravel())
# 打印最优的α值
print "最优的alpha值: ", lassocv.alpha_
# 打印模型的系数
print lassocv.intercept_
print lassocv.coef_

 三.多项式回归

当我们拟合的是一个曲线的时候我们就不能只考虑线性拟合了,我们可以考虑多项式拟合,通过加入高次的特征来来得到总的特征样本,然后在进行线性的拟合

#多项式拟合
from sklearn.preprocessing import PolynomialFeatures
poly_features = PolynomialFeatures(degree=5, include_bias=False)#其中的degree就是指的最高次项的个数
X_poly = poly_features.fit_transform(X)
print(X_poly.shape)
lin_reg = LinearRegression()
lin_reg.fit(X_poly, y)
print(lin_reg.intercept_, lin_reg.coef_)

四.逻辑回归

逻辑回归之所以被分为线性回归的一种,只因为其本质也是线性回归,只不过得到的线性相加求和之后加上了sigmod函数将其二值化

from sklearn.linear_model import LogiticRegression
lr==Logiticregression()
lr.fit(x,y)
 
 
 
 
 

sklearn--回归的更多相关文章

  1. sklearn——回归评估指标

    sklearn中文文档:http://sklearn.apachecn.org/#/ https://www.cnblogs.com/nolonely/p/7009001.html https://w ...

  2. Sklearn库例子3:分类——岭回归分类(Ridge Regression )例子

    为了解决数据的特征比样本点还多的情况,统计学家引入了岭回归. 岭回归通过施加一个惩罚系数的大小解决了一些普通最小二乘的问题.回归系数最大限度地减少了一个惩罚的误差平方和. 这里是一个复杂的参数,用来控 ...

  3. sklearn使用——梯度下降及逻辑回归

    一:梯度下降: 梯度下降本质上是对极小值的无限逼近.先求得梯度,再取其反方向,以定步长在此方向上走一步,下次计算则从此点开始,一步步接近极小值.需要注意的是步长的取值,如果过小,则需要多次迭代,耗费大 ...

  4. Sklearn中的回归和分类算法

    一.sklearn中自带的回归算法 1. 算法 来自:https://my.oschina.net/kilosnow/blog/1619605 另外,skilearn中自带保存模型的方法,可以把训练完 ...

  5. 第十三次作业——回归模型与房价预测&第十一次作业——sklearn中朴素贝叶斯模型及其应用&第七次作业——numpy统计分布显示

    第十三次作业——回归模型与房价预测 1. 导入boston房价数据集 2. 一元线性回归模型,建立一个变量与房价之间的预测模型,并图形化显示. 3. 多元线性回归模型,建立13个变量与房价之间的预测模 ...

  6. sklearn逻辑回归

    sklearn逻辑回归 logistics回归名字虽然叫回归,但实际是用回归方法解决分类的问题,其形式简洁明了,训练的模型参数还有实际的解释意义,因此在机器学习中非常常见. 理论部分 设数据集有n个独 ...

  7. sklearn中各种分类器回归器都适用于什么样的数据呢?

    作者:匿名用户链接:https://www.zhihu.com/question/52992079/answer/156294774来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...

  8. sklearn中的回归器性能评估方法(转)

    explained_variance_score() mean_absolute_error() mean_squared_error() r2_score() 以上四个函数的相同点: 这些函数都有一 ...

  9. sklearn中的回归器性能评估方法

    explained_variance_score() mean_absolute_error() mean_squared_error() r2_score() 以上四个函数的相同点: 这些函数都有一 ...

  10. Sklearn实现逻辑回归

    方法与参数 LogisticRegression类的各项参数的含义 class sklearn.linear_model.LogisticRegression(penalty='l2', dual=F ...

随机推荐

  1. 12-1 TCP/IP协议栈

    TCP/IP协议栈 有限状态机FSM:Finite State Machine CLOSED 没有任何连接状态 LISTEN 侦听状态,等待来自远方TCP端口的连接请求 SYN-SENT 在发送连接请 ...

  2. outlook寻找/删除指定日期范围内的邮件

    总是收到很多系统预警邮件,时间久了攒了好多垃圾邮件.实际上只需保存近期预警邮件,之前的完全可以删除. 上网找了一圈也没找到方法,然后自己想到了一种,步骤如下: 使用outlook规则,将指定日期范围内 ...

  3. Spring 视图层如何显示验证消息提示

    1.示例 <p th:if="${#fields.hasErrors('name')}" th:errors="*{name}" ></p&g ...

  4. 冲刺Noip2017模拟赛3 解题报告——五十岚芒果酱

    题1  素数 [问题描述] 给定一个正整数N,询问1到N中有多少个素数. [输入格式]primenum.in 一个正整数N. [输出格式]primenum.out 一个数Ans,表示1到N中有多少个素 ...

  5. codevs 1048/洛谷 1880:石子归并

    题目描述 Description 有n堆石子排成一列,每堆石子有一个重量w[i], 每次合并可以合并相邻的两堆石子,一次合并的代价为两堆石子的重量和w[i]+w[i+1].问安排怎样的合并顺序,能够使 ...

  6. 洛谷 题解 CF903B 【The Modcrab】

    如果它在接下来一回合能一下就将你KO了,那么,你就十分需要回血(一直回到它一下敲不死你),否则你就一直打它就好了. #include<iostream> using namespace s ...

  7. [转帖]windows CIFS sabma协议识

    windows CIFS sabma协议识别 https://www.cnblogs.com/tcicy/p/9992871.html 公司的一个共享服务器就是 win2003的 mount 的时候 ...

  8. 对称加密、非对称加密、数字签名、数字证书、SSL是什么

    非对称密钥加解密 对于一份数据,通过一种算法,基于传入的密钥(一串由数字或字符组成的字符串,也称key),将明文数据转换成了不可阅读的密文,这就是“加密”,同样的,密文到达目的地后,需要再以相应的算法 ...

  9. 二叉查找树 & B(B-)树 & B+树 & B*树

    一 二叉查找树 1 特点 (1)所有非叶子结点至多拥有两个子节点, left和right (2)一个结点存储一个关键字 (3)非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树 2 ...

  10. Python实现八大排序(基数排序、归并排序、堆排序、简单选择排序、直接插入排序、希尔排序、快速排序、冒泡排序)

    目录 八大排序 基数排序 归并排序 堆排序 简单选择排序 直接插入排序 希尔排序 快速排序 冒泡排序 时间测试 八大排序 大概了解了一下八大排序,发现排序方法的难易程度相差很多,相应的,他们计算同一列 ...