学习scikit learn 1

ubuntu下安装scikit learn模块

1.ubuntu 12.04
2.python2.7
3.输入指令
sudo apt-get install python-sklearn
系统就能自动安装上scikit learn所需要的所有模块。


一般线性回归

1.普通的最小二乘法
知道一些点的坐标,用最小二乘法拟合出一条残差最小的直线来预测这些点未来的走势。

\hat{y}(w, x) = w_0 + w_1 x_1 + ... + w_p x_p

我们需要计算是x系数的值。
>>> from sklearn import linear_model
>>> clf = linear_model.LinearRegression()
>>> clf.fit ([[0, 0], [1, 1], [2, 2]], [0, 1, 2])
LinearRegression(copy_X=True, fit_intercept=True, normalize=False)
>>> clf.coef_
array([ 0.5,  0.5])
首先导入线性模块,然后生成最小二乘法的对象,其中[1,1]这些都是代表x1,x2的取值,[0,1,2]代表y的取值。
coef_会返回得到的w1,w2等系数,intercept_会返回常数项。

2.岭回归分析
因为本身不是学统计出身的,而且数学一直是自己的弱项,所以只能尝试着讲讲自己的理解了。
岭回归是为了改进最小二乘法的某些缺项而改进的一种算法,比如说:
当我们用最小二乘法来拟合一个二元的线性方程时,拟合得到的参数w1和w2间存在这复共线性,也就是说这两个值之间的样本相关性非常高。
但是最小乘法的公式是
参数的复共线性使XTX非常接近于0,造成了很大的误差。

岭回归对这个问题的处理方法是把XTX的主对角线都加上一个参数k,公式就变成了

这样就避免了之前的问题。
大概讲了一点统计的知识,接下来该结合程序看一下这个岭回归算法到底该怎么编。
scikit learn的官方网站上给出对岭回归的解释是

Ridge  regression addresses some of the problems of  Ordinary Least Squares  by imposing a penalty on the size of coefficients. The ridge coefficients minimize a penalized residual sum of squares,

\underset{w}{min\,} {​{|| X w - y||_2}^2 + \alpha {||w||_2}^2}

大体意思就是岭回归获得的系数能最小化以上这个式子。
>>> from sklearn import linear_model
>>> clf = linear_model.Ridge (alpha = .5)
>>> clf.fit ([[0, 0], [0, 0], [1, 1]], [0, .1, 1]) 
Ridge(alpha=0.5, copy_X=True, fit_intercept=True, max_iter=None,
      normalize=False, solver='auto', tol=0.001)
>>> clf.coef_
array([ 0.34545455,  0.34545455])
>>> clf.intercept_ 
0.13636...
先导入模块,生成最小二乘法的对象,并设置好权值a的值,接下来的步骤就和最小二乘法一样,没什么变化。
我感觉w就是公式中的单位矩阵I,而a就是那个参数k的值。
但是a的值是我们自己设置的,到底应该设置为多少才是合适的,才能有效避免最小二乘法的缺陷呢。
scikit learn里提供了一个叫做交叉验证的方法,帮我们选出合适的a值:
>>> from sklearn import linear_model
>>> clf = linear_model.RidgeCV(alphas=[0.1, 1.0, 10.0])
>>> clf.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)
>>> clf.alpha_                                      
0.1
这里生成了一个RidgeCV对象,并且设置了测试的a候选集合[0.1,1.0,10.0],然后把训练集输入到fit函数中,最后输出的alpha_就代表了交叉验证后得到的候选集中的最优的a。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值