資源簡介
實現svm對鳶尾花進行分類,3個不同品種的花每個50個數據進行分類,鳶尾花數據:archive.ics.uci.edu/ml/datasets/Ilis
代碼片段和文件信息
#!/usr/bin/env?python
#?-*-?coding:utf-8?-*-
#?@Time??:?2020/3/2?13:57
#?@Author:?HanBingru
#?@File??:?ywh.py
import?numpy?as?np
from?matplotlib?import?colors
from?sklearn?import?svm
from?sklearn.svm?import?SVC
from?sklearn?import?model_selection
import?matplotlib.pyplot?as?plt
import?matplotlib?as?mpl
def?load_data():
????#?導入數據
????data?=?np.loadtxt(r‘H:\開學\章永來\鳶尾花\iris.data‘?dtype=float?delimiter=‘‘?converters={4:?iris_type})
????return?data
def?iris_type(s):
????#?數據轉為整型,數據集標簽類別由string轉為int
????it?=?{b‘Iris-setosa‘:?0?b‘Iris-versicolor‘:?1?b‘Iris-virginica‘:?2}
????return?it[s]
????#?定義分類器
def?classifier():
????clf?=?svm.SVC(C=0.5??#?誤差項懲罰系數
??????????????????kernel=‘linear‘??#?線性核?kenrel=“rbf“:高斯核
??????????????????decision_function_shape=‘ovr‘)??#?決策函數
????return?clf
def?train(clf?x_train?y_train):
????#?x_train:訓練數據集
????#?y_train:訓練數據集標簽
????#?訓練開始
????clf.fit(x_train?y_train.ravel()?sample_weight=None)??#?同flnumpy.ravelatten將矩陣拉平
def?show_accuracy(a?b?tip):
????acc?=?a.ravel()?==?b.ravel()
????print(a)
????print(b)
????print(acc)
????print(‘%s?Accuracy:%.3f‘?%?(tip?np.mean(acc)))
def?print_accuracy(clf?x_train?y_train?x_test?y_test):
????#?print(x_train)
????show_accuracy(clf.predict(x_train)?y_train?‘traing?data‘)
????show_accuracy(clf.predict(x_test)?y_test?‘testing?data‘)
????#?print(x_train)
????#?print(y_train.ravel())
????#?print(clf.predict(x_train))
def?draw(clf?x):??#?寫完一個函數要運行,否則報錯:函數未定義
????‘‘‘
????print(x.shape)
????(150?2)
????‘‘‘
????iris_feature?=?‘sepal?length‘?‘sepal?width‘?‘petal?lenght‘?‘petal?width‘
????x1_min?x1_max?=?x[:?0].min()?x[:?0].max()??#?第0列的范圍
????x2_min?x2_max?=?x[:?1].min()?x[:?1].max()??#?第1列的范圍
????x1?x2?=?np.mgrid[x1_min:x1_max:200j?x2_min:x2_max:200j]??#?生成網格采樣點
????grid_test?=?np.stack((x1.flat?x2.flat)?axis=1)??#?測試點
????‘‘‘
????print(grid_test.shape)
????(40000?2)
????‘‘‘
????#?print(‘grid_test:\n‘?grid_test)
????z?=?clf.decision_function(grid_test)
????#?print(‘the?distance?to?decision?plane:\n‘?z)
????grid_hat?=?clf.predict(grid_test)??#?預測分類值?得到【00.。。。22
評論
共有 條評論