Scikit Learn 模块使用

Scikit Learn 模块使用

回归

1. Linear Regression

y p r e d i c t ( w , x ) = w 0 + w 1 x 1 + w 2 x 2 + . . . w p x p y^{predict}(w,x) = w_0+w_1x_1+w_2x_2+...w_px_p ypredict(w,x)=w0+w1x1+w2x2+...wpxp
w = ( w 1 , w 2 , w 3 . . w p ) w=(w_1,w_2,w_3..w_p) w=(w1,w2,w3..wp)为系数(coef_), w 0 w_0 w0为常数项(intercept_)。

要解决的问题是 m i n ∣ ∣ X w − y ∣ ∣ 2 2 min||Xw-y||_2^2 minXwy22

from sklearn import linear_model
#匹配常数项
reg = linear_model.LinearRegression(fit_intercept=True)
reg.fit([[0,0],[1,1],[2,2]],[0.5,1.5,2.5])
print('系数:',reg.coef_)
print('常数项',reg.intercept_)
#系数: [0.5 0.5]
#常数项 0.5000000000000001

不过最小二乘法要求特征之间是独立的,因为最小二乘法估计误差的时候就要求误差符合高斯分布。

2. Ridge regression and classification 岭回归

岭回归其实就是最小二乘法加上了l2正则化系数。
m i n ∣ ∣ X w − y ∣ ∣ 2 2 + α ∣ ∣ w ∣ ∣ 2 2 min||Xw-y||_2^2+\alpha||w||_2^2 minXwy22+αw22

reg = linear_model.Ridge(alpha=0.5)
reg.fit([[0,0],[1,1],[2,2]],[0.5,1.5,2.5])
print('系数:',reg.coef_)
print('常数项',reg.intercept_)
#系数: [0.44444444 0.44444444]
#常数项 0.6111111111111112
设置正则化参数:广义交叉验证

RidgeCV 通过内置的关于的 alpha 参数的交叉验证来实现岭回归。 该对象与 GridSearchCV 的使用方法相同,只是它默认为 Generalized Cross-Validation(广义交叉验证 GCV),这是一种有效的留一验证方法:

from sklearn import linear_model
reg = linear_model.RidgeCV(alphas=[0.1, 1.0, 10.0])
reg.fit([[0, 0], [0, 0], [1, 1]], [0, .1, 1])       
RidgeCV(alphas=[0.1, 1.0, 10.0], cv=None, fit_intercept=True, scoring=None,
 normalize=False)
print(reg.alpha_)                                    
#0.1

Lasso 回归

Lasso 是拟合稀疏系数的线性模型。 它在一些情况下是有用的,因为它倾向于使用具有较少参数值的情况,有效地减少给定解决方案所依赖变量的数量。
最小化目标函数
m i n ∣ ∣ X w − y ∣ ∣ 2 2 + α ∣ ∣ w ∣ ∣ 1 min||Xw-y||_2^2+\alpha||w||_1 minXwy22+αw1

from sklearn import linear_model
reg = linear_model.Lasso(alpha = 0.1)
reg.fit([[0, 0], [1, 1]], [0, 1])
reg.predict([[1, 1]])
# array([ 0.8])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值