sklearn光速入门实践[1]——实现一个简单的SVM分类器

python的sklearn库封装了许多常用的机器学习算法,而且入门简单,调用方便。下面我们用sklearn库和简单的几个点作为数据集,来实现一个简单的SVM分类器。

首先,准备好数据。我们把(2,0),(0,2),(0,0)这三个点当作类别1;(3,0),(0,3),(3,3)这三个点当作类别2,训练好SVM分类器之后,我们预测(-1,-1),(4,4)这两个点所属的类别。示意图如下:
在这里插入图片描述

1、组装数据集。

在组装数据集的时候,这里最重要的就是要注意数据的组合格式。data中每行元素作为一个样本,各列分别是该样本的各个属性,比如上边的几个点,封装成如下格式:x = np.array([[2,0],[0,2],[0,0],[3,0],[0,3],[3,3]]) 。label排成一行,与data中的数据相对应即可:y = np.array([1,1,1,2,2,2])

【注】:这里利用Pandas进行封装也可以。

import pandas as pd
data = np.array([[2,0,1],[0,2,1],[0,0,1],[3,0,2],[0,3,2],[3,3,2]])
data = pd.DataFrame(data,column = [0,1,2])
x = data[[0,1]]
y = data[2]

2、设置SVM分类器的属性

model = SVC(kernel='linear', probability=True)
当probability=False时,没办法调用 model.predict_proba()函数
可选的属性列表:

  • 待完善1
  • 待完善2

3、执行SVM分类器

model.fit(x,y)

4、预测

pre = model.predict_proba(C)

最后,附完整代码如下:

from sklearn.svm import SVC
import numpy as np
x = np.array([[2,0],[0,2],[0,0],[3,0],[0,3],[3,3]])
y = np.array([1,1,1,2,2,2])
model = SVC(kernel='linear', probability=True)#probability=False时,没办法调用 model.predict_proba()函数
model.fit(data,label)
C = [[-1,-1],[4,4]]
pre = model.predict_proba(C)
print(pre)
pre1 = model.predict(C)
print(pre1)

结果如下:

[[0.62507004 0.37492996]
 [0.33332917 0.66667083]]
[1 2]

可以看到,预测(-1,-1)的标签是1的概率为0.62507004,2的概率为0.37492996。最终预测为类别1。
预测(4,4)的标签是1的概率为0.33332917,2的概率为0.66667083。最终预测为类别2。这个结果与我们在图中直观看到的结果相符。

官方文档地址:sklearn.svm.SVC

发布了63 篇原创文章 · 获赞 189 · 访问量 27万+

猜你喜欢

转载自blog.csdn.net/u013044310/article/details/87397510
今日推荐