首页 > 其他 > 详细

scikit-learn学习日记(1)

时间:2015-12-05 01:46:57      阅读:505      评论:0      收藏:0      [点我收藏+]

最近开始学习使用scikit-learn,每天都写一下学到的东西,既能提示自己一天学了什么东西,也方便回顾。

在我的虚拟机Ubuntu上安装了scikit-learn,安装流程很简单 。由于我常用python所以我的Ubuntu虚拟机早就安装了pip、numpy、scipy、matplotlib、Cython依赖库。

源码地址:https://github.com/scikit-learn/scikit-learn

安装完依赖库后,在github上下载scikit-learn源码,cd到源码目录python setup.py install。然后进入python交互界面,import sklearn不报错即安装完成。

先体验一下用scikit-learn做SVM分类,推荐在用scikit-learn之前还是要对机器学习的方法有基本了解,这样才能改变参数来改进训练模型。

1 from sklearn import datasets
2 from sklearn import svm
3 iris=datasets.load_iris()
4 digits=datasets.load_digits()
5 clf=svm.SVC(gamma=0.001,C=100.)    #C为惩罚参数的误差项,gamma为学习速率
6 clf.fit(digits.data[:-1],digits.target[:-1])    #训练SVM模型
7 clf.predict(digits.data[:-1])    #使用SVM模型预测

iris与digits为scikit-learn自带的数据集,digits.data是手写数字0-9的图像特征,digits.target是数字0-9,最后训练的SVM模型就是利用手写数字的图像特征来预测所表示的数字。模型训练完可能不只用一次,参数可以用来作多次的预测,所以在训练完模型之后需要记录参数以便以后的预测,记录参数有两种方法,第一种是字符串储存参数:

 1 from sklearn import svm
 2 from sklearn import datasets
 3 clf=svm.SVC()
 4 iris=datasets.load_iris()
 5 X,y=iris.data,iris.target
 6 clf.fit(X,y)
 7 import pickle
 8 s=pickle.dumps(clf)
 9 clf2=pickle.loads(s)
10 clf2.predict(X[0:1])
11 print y[0]

将clf的参数存入s中,clf2载入s后取得了clf的参数,使用clf2和clf预测的效果是一样的。第二种方法是使用文件储存参数:

1 from sklearn.externals import joblib
2 joblib.dump(clf,filename.pkl)
3 clf=joblib.load(filename.pkl‘)

在scikit-learn中一般输入的数组中的数据都要求是float64位的,如果不是的话应该用如下程序转化成float64

 1 import numpy as np
 2 from sklearn import random_projection
 3 
 4 rng=np.random.RandomState(0)
 5 X=rng.rand(10,2000)
 6 X=np.array(X,dtype=float32)
 7 print X.dtype
 8 #dtype(‘float32‘)
 9 transformer=random_projection.GaussianRandomProject()
10 X_new=transformer.fit_transform(X)
11 print X_new.dtype
12 #dtype(‘float64‘)

改变和更新参数 下面的代码是示范在SVM训练模型中改变核空间,先是从rbf改变成linear再改变回来

 1 import numpy as np
 2 from sklearn.svm import SVC
 3 
 4 rng=np.random.RandomState(0)
 5 X=rng.rand(100,10)
 6 y=rng.binomial(1,0.5,100)
 7 #binomial生成两项分布,参数分别是n、p、size
 8 X_test=rng.rand(5,10)
 9 clf=SVC()
10 clf.set_params(kernal=linear).fit(X,y)
11 clf.predict(X_test)
12 clf.set_params(kernel=rbf).fit(X,y)
13 clf.predict(X_test)

 

scikit-learn学习日记(1)

原文:http://www.cnblogs.com/heyijiang666/p/5020911.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!