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

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') 





  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是一个使用Python中的scikit-learn对筛选后的特征进行训练,并构建SVM分类器的例子: 首先,我们需要导入需要的: ```python import pandas as pd from sklearn.model_selection import train_test_split from sklearn.svm import SVC from sklearn.metrics import accuracy_score ``` 然后,我们可以从CSV文件中读取数据集: ```python data = pd.read_csv('data.csv') ``` 接下来,我们将数据集中的特征和标签分开: ```python X = data.drop('label', axis=1) y = data['label'] ``` 然后,我们将数据集分成训练集和测试集: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) ``` 现在,我们可以使用scikit-learn中的SVM分类器进行训练: ```python clf = SVC() clf.fit(X_train, y_train) ``` 最后,我们可以使用测试集对分类器进行评估: ```python y_pred = clf.predict(X_test) accuracy = accuracy_score(y_test, y_pred) print("Accuracy:", accuracy) ``` 完整代码如下: ```python import pandas as pd from sklearn.model_selection import train_test_split from sklearn.svm import SVC from sklearn.metrics import accuracy_score # 从CSV文件中读取数据集 data = pd.read_csv('data.csv') # 将特征和标签分开 X = data.drop('label', axis=1) y = data['label'] # 将数据集分成训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 使用SVM分类器进行训练 clf = SVC() clf.fit(X_train, y_train) # 使用测试集对分类器进行评估 y_pred = clf.predict(X_test) accuracy = accuracy_score(y_test, y_pred) print("Accuracy:", accuracy) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值