python机器学习库scikit-learn简明教程之:SVM支持向量机

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hanss2/article/details/53437756

1.获得样例数据

scikit-learn库有一些标准的数据集,例如分类的数字集,波士顿房价回归数据集。

在下面,我们启动Python解释器,然后载入数据集。我们可以认为,美元符号后输入python然后会启动以> > >开头的 Python解释器,提示我们输入python表达语句:

$ python
>>> from sklearn import datasets
>>> iris = datasets.load_iris()
>>> digits = datasets.load_digits()

例如,拿数字数据集这个事例来说,调用digits.data方法可以获得数字样本进行分类:

>>> print(digits.data)  
[[  0.   0.   5. ...,   0.   0.   0.]
 [  0.   0.   0. ...,  10.   0.   0.]
 [  0.   0.   0. ...,  16.   9.   0.]
 ...,
 [  0.   0.   1. ...,   6.   0.   0.]
 [  0.   0.   2. ...,  12.   0.   0.]
 [  0.   0.  10. ...,  12.   1.   0.]]
而digits.target对于每一个数据集来说就是它们的种类,对应每个数字图像,希望它被划分的具体类别:

>>> digits.target
array([0, 1, 2, ..., 8, 9, 8])

数据集的维度:

数据集通常是一个二维数组,格式是(n_samples,n_features),尽管原始的数据可能有不一致的维度。在数字化表示下,每个原始为形状(8,8)的图像样本可以表示为:

>>> digits.images[0]
array([[  0.,   0.,   5.,  13.,   9.,   1.,   0.,   0.],
       [  0.,   0.,  13.,  15.,  10.,  15.,   5.,   0.],
       [  0.,   3.,  15.,   2.,   0.,  11.,   8.,   0.],
       [  0.,   4.,  12.,   0.,   0.,   8.,   8.,   0.],
       [  0.,   5.,   8.,   0.,   0.,   9.,   8.,   0.],
       [  0.,   4.,  11.,   0.,   1.,  12.,   7.,   0.],
       [  0.,   2.,  14.,   5.,  10.,  12.,   0.,   0.],
       [  0.,   0.,   6.,  13.,  10.,   0.,   0.,   0.]])

2.训练学习和预测

在给定数据集的情况下,我们的任务是预测,对于给定图像,其所属的是哪个数字指代的种类。 我们手头有10个可能的类(数字0到9)中的每一个的样本,其中我们拟合预测器经过训练后可以预测未知的样本所属的类。
在scikit-learn中,分类预测器是实现方法fit(X,y)<代表拟合>和predict(T)<代表预测>的Python对象。
预测器的一个示例是实现支持向量机模块的类sklearn.svm.SVC。 预测器的构造函数使用模型的参数作为参数,但暂时,我们将把估计器视为一个黑盒:

(译者注:虽然scikit-learn库拥有诸多预测模型,但接口尤其工整,全部以方法fit(X,y)<代表拟合>和predict(T)<代表预测>命名!)

>>> from sklearn import svm
>>> clf = svm.SVC(gamma=0.001, C=100.)
拟合过程:

>>> clf.fit(digits.data[:-1], digits.target[:-1])  
SVC(C=100.0, cache_size=200, class_weight=None, coef0=0.0,
  decision_function_shape=None, degree=3, gamma=0.001, kernel='rbf',
  max_iter=-1, probability=False, random_state=None, shrinking=True,
  tol=0.001, verbose=False)
预测模型:

>>> clf.predict(digits.data[-1:])
array([8])
预测结果(分类结果):

../../_images/sphx_glr_plot_digits_last_image_001.png

3.扩展知识:持久化存储你的预测模型:pickle模块

在scikit的特定实例下,使用joblib的pickle模块(joblib.dump&joblib.load)可能更有趣,这对大数据更有效,但只能转化为pickle存储在磁盘上而不是字符串表达:

存储:

>>> from sklearn.externals import joblib
>>> joblib.dump(clf, 'filename.pkl') 
加载:

>>> clf = joblib.load('filename.pkl') 





展开阅读全文

没有更多推荐了,返回首页