支持向量机
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]