1. 程式人生 > >SVM模型應用(一)sklearn進行svm簡單應用

SVM模型應用(一)sklearn進行svm簡單應用

from sklearn import svm, datasets    
class Dataset:            #定義一個類
    def __init__(self,name):
        self.name=name

    def download_data(self):        #確定資料集是iris或digits
        if self.name=='iris':
            self.download_data=datasets.load_iris()
        elif self.name=='digits':
            self.download_data=datasets.load_digits()
        else
: print('Dataset Error: No named datasets') def generate_xy(self): #取得原始資料集 self.download_data() x=self.download_data.data y=self.download_data.target print('\nOriginal data looks like this: \n',x) print('\nLabels looks like this: \n',y) return
x,y def get_train_test_set(self,ratio): #根據比例分配訓練集和測試集 x,y=self.generate_xy() n_samples=len(x) n_train=int(n_samples*ratio) X_train=x[:n_train] y_train=y[:n_train] X_test=x[n_train:] y_test=y[n_train:] return X_train,y_train,X_test,y_test
data=Dataset('digits')
X_train,y_train,X_test,y_test=data.get_train_test_set(0.7)
('\nOriginal data looks like this: \n', array([[  0.,   0.,   5., ...,   0.,   0.,   0.],
       [  0.,   0.,   0., ...,  10.,   0.,   0.],
       [  0.,   0.,   0., ...,  16.,   9.,   0.],
       ..., 
       [  0.,   0.,   1., ...,   6.,   0.,   0.],
       [  0.,   0.,   2., ...,  12.,   0.,   0.],
       [  0.,   0.,  10., ...,  12.,   1.,   0.]]))
('\nLabels looks like this: \n', array([0, 1, 2, ..., 8, 9, 8]))
clf=svm.SVC()# 分類器Classfier採用了svm的經典classification版本
clf.fit(X_train,y_train)#訓練模型
SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
  decision_function_shape=None, degree=3, gamma='auto', kernel='rbf',
  max_iter=-1, probability=False, random_state=None, shrinking=True,
  tol=0.001, verbose=False)
y_predictions=clf.predict(X_test)#模型應用
k=0
for i in range(len(y_test)):
    if y_predictions[i]==y_test[i]:
        k+=1

P=float(k)/float(len(y_test))#評價模型
P
0.37222222222222223