from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn import svm
import pandas as pd
from matplotlib import pyplot as plt
import matplotlib as mpl
import numpy as np
data = load_iris()
X,Y = data['data'],data['target']
X = X[:,:2]# shape (150, 2)
# print(X)
print(X.shape)
train_x,test_x,train_y,test_y = train_test_split(X,Y,test_size=0.3)
# print(label)
# print(test_x.shape)
clf = svm.SVC(gamma='auto')
clf.fit(train_x,train_y)
predit_test = clf.predict(test_x)
acc_test = 1.0* sum(predit_test==test_y)/len(predit_test)
predict_train = clf.predict(train_x)
acc_train = 1.0* sum(predict_train==train_y)/len(predict_train)
# print('acc_train',acc_train)
# print('acc_test',acc_test)
# print(Y.shape)
# print(X[0].shape)
# print(Y)
# print('predict',predit)
# print('test_y: ',test_y)
# plt.scatter(X[:,0],X[:,1],c=Y)
x0_min,x1_min = X.min(0)# X有两列,返回每列的最小值
x0_max,x1_max = X.max(0)
x0 = np.linspace(x0_min-0.5,x0_max+0.5,500)
x1 = np.linspace(x1_min-0.5,x1_max+0.5,500)
# print('x0,x1')
# print(x0)
# print(x1)
xx0,xx1 = np.meshgrid(x0,x1)#
test_grid = np.stack((xx0.flat,xx1.flat),axis=1)# 拉平.flat
# print('xx0,xx1')
# print(xx0)
# print(xx1)
# print('grid')
# print(test_grid)
cm_light = mpl.colors.ListedColormap(['#A0FFA0', '#FFA0A0', '#A0A0FF'])
cm_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])
predict_grid = clf.predict(test_grid)
plt.pcolormesh(xx0,xx1,predict_grid.reshape(xx0.shape),cmap=cm_light)
plt.scatter(train_x[:,0],train_x[:,1],c=train_y,cmap=cm_dark,marker='o',edgecolors ='k')
plt.scatter(test_x[:,0],test_x[:,1],c=test_y,cmap=cm_dark,marker='^')
plt.show()
SVM实践
最新推荐文章于 2022-07-30 22:35:49 发布