支持向量机

 

In [5]:​

from sklearn import svm
import numpy as np
import matplotlib.pyplot as plt
​#准备训练样本
x=[[1,8],[3,20],[1,15],[3,35],[5,35],[4,40],[7,80],[6,49]]
y=[1,1,-1,-1,1,-1,-1,1]
 
##开始训练
#clf=svm.SVC() ##默认参数:kernel='rbf'
clf=svm.SVC(kernel='linear')
clf.fit(x,y)
##根据训练出的模型绘制样本点
for i in x:
  res=clf.predict(np.array(i).reshape(1, -1))
  if res > 0:
    plt.scatter(i[0],i[1],c='r',marker='*')
  else :
    plt.scatter(i[0],i[1],c='g',marker='*')
 
print (clf)  # target 
print (clf.support_vectors_)  #support vectors
print (clf.support_)  # indeices of support vectors
print (clf.n_support_)
​
##生成随机实验数据(15行2列)
rdm_arr=np.random.randint(1, 25, size=(15,2))
##回执实验数据点
for i in rdm_arr:
  res=clf.predict(np.array(i).reshape(1, -1))
  if res > 0:
    plt.scatter(i[0],i[1],c='r',marker='.')
  else :
    plt.scatter(i[0],i[1],c='g',marker='.')
##显示绘图结果
plt.show()
SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
  decision_function_shape='ovr', degree=3, gamma='auto', kernel='linear',
  max_iter=-1, probability=False, random_state=None, shrinking=True,
  tol=0.001, verbose=False)
[[ 1. 15.]
 [ 4. 40.]
 [ 1.  8.]
 [ 6. 49.]]
[2 5 0 7]
[2 2]

支持向量机