您的位置:首页 > 编程语言 > Python开发

Python_sklearn_回归

2016-10-23 11:19 197 查看
所用模块:

sklearn,numpy,time

实现功能:

这里只给出一般的应用方法,参数说明,源文档翻译将在后期提供。

(1)一般回归

(2)岭回归

(3)Lasso回归

(4)lars回归

(5)贝叶斯回归

(6)ARD回归

(7)RBF的逼近

一、一般的回归
http://blog.csdn.net/zhangweiguo_717/article/details/52821267
二、岭回归

岭回归使用的最小误差与一般回归中有差别,尤其注意的是,多了一个alpha参数,这个参数可人工选取,也可选用算法智能截取,常用的截取办法有交叉验证,alpha默认取1,当取alpha为0时,就是一般的回归。

#-*-coding:utf-8-*-
'''
created by zwg in 2016-10-21
'''
#岭回归
from sklearn import linear_model as lm
from matplotlib import pyplot as pl
import numpy
import time
x=numpy.random.rand(100,2)
y=0.2*x[:,0]+x[:,1]*0.1+1
t0=time.time()
F1=lm.RidgeCV()
F1.fit(x,y)
y1=F1.predict(x)
t1=time.time()
F2=lm.Ridge()#alpha=0时就是普通的回归,默认alpha=1
F2.fit(x,y)
y2=F1.predict(x)
t2=time.time()
print 'CV交叉验证岭回归的alpha、误差和时间:',F1.alpha_,numpy.mean(numpy.abs(y1-y)),t1-t0
print '一般岭回归的alpha、误差和时间:',F2.alpha,numpy.mean(numpy.abs(y2-y)),t2-t1


三、lasso回归
lasso回归于岭回归类似,也有一个截断参数alpha

#-*-coding:utf-8-*-
'''
created by zwg in 2016-10-22
'''
#lasso回归
import time
from sklearn import linear_model as lm
import numpy
x=numpy.random.rand(100,2)
y=0.2*x[:,0]+x[:,1]*0.1+1
t0=time.time()
clf=lm.Lasso()#默认alpha=1
clf.fit(x,y)
t1=time.time()
print '默认alpha=1下的平均绝对误差和时间:',numpy.mean(numpy.abs(clf.predict(x)-y)),t1-t0
clf_lasso1=lm.LassoCV()
clf_lasso1.fit(x,y)
t2=time.time()
print 'CV交叉验证alpha下的平均绝对误差和时间:',numpy.mean(numpy.abs(clf_lasso1.predict(x)-y)),t2-t1
clf_lasso2=lm.LassoLarsIC(criterion='aic')
clf_lasso2.fit(x,y)
t3=time.time()
print 'AIC验证alpha下的平均绝对误差和时间:',numpy.mean(numpy.abs(clf_lasso2.predict(x)-y)),t3-t2
clf_lasso3=lm.LassoLarsIC(criterion='bic')
clf_lasso3.fit(x,y)
t4=time.time()
print 'BIC验证alpha下的平均绝对误差和时间:',numpy.mean(numpy.abs(clf_lasso3.predict(x)-y)),t4-t3
clf_lasso4=lm.LassoLarsCV()
clf_lasso4.fit(x,y)
t5=time.time()
print 'CV交叉验证+lars的alpha下的平均绝对误差和时间:',numpy.mean(numpy.abs(clf_lasso4.predict(x)-y)),t5-t4


四、Lars回归

#-*-coding:utf-8-*-
'''
created by zwg in 2016-10-22
'''
#least angle regression method(LARS)回归
import time
from sklearn import linear_model as lm
import numpy
x=numpy.random.rand(100,2)
y=0.2*x[:,0]+x[:,1]*0.1+1
t0=time.time()
clf=lm.Lars()
clf.fit(x,y)
t1=time.time()
print '默认下的平均绝对误差和时间:',numpy.mean(numpy.abs(clf.predict(x)-y)),t1-t0
clf_lars1=lm.LarsCV()
clf_lars1.fit(x,y)
t2=time.time()
<pre name="code" class="python">print 'CV交叉验证alpha下的平均绝对误差和时间:',numpy.mean(numpy.abs(clf_lars1.predict(x)-y)),t2-t1



五、Bayesian回归

#贝叶斯岭回归
from sklearn import linear_model as lm
import numpy
clf=lm.BayesianRidge()
x=numpy.random.rand(10,2)*10
y=x[:,0]*0.1+x[:,1]*0.5+2
clf.fit(x,y)
print clf.predict([[2,2]])


六、ARD回归

#ARD回归(自动确定相关回归)
from sklearn import linear_model as lm
import numpy
import time
t0=time.time()
clf=lm.ARDRegression()
x=numpy.random.rand(100,2)
y=0.2*x[:,0]+x[:,1]*0.1+1
clf.fit(x,y)
t1=time.time()
print '平均绝对误差和时间:',numpy.mean(numpy.abs(clf.predict(x)-y)),t1-t0


七、RBF逼近

参见上一期博客
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 回归