轉載:豆-Metcalf
1)SVM-LinearSVC.ipynb-線性分類SVM,iris數據集分類,正確率100%
1 """ 2 功能:實現線性分類支持向量機 3 說明:可以用於二類分類,也可以用於多類分類 4 作者:唐天澤 5 博客:http://write.blog.csdn.net/mdeditor#!postId=76188190 6 日期:2017-08-09 7 """ 8 9 # 導入本項目所需要的包 10 import pandas as pd 11 import numpy as np 12 13 from sklearn import datasets 14 15 from sklearn import svm 16 17 # 使用交叉驗證的方法,把數據集分為訓練集合測試集 18 from sklearn.model_selection import train_test_split 19 20 # 加載iris數據集 21 def load_data(): 22 iris = datasets.load_iris() 23 """展示數據集的形狀 24 diabetes.data.shape, diabetes.target.shape 25 """ 26 27 # 將數據集拆分為訓練集和測試集 28 X_train, X_test, y_train, y_test = train_test_split( 29 iris.data, iris.target, test_size=0.10, random_state=0) 30 return X_train, X_test, y_train, y_test 31 32 # 使用LinearSVC考察線性分類SVM的預測能力 33 def test_LinearSVC(X_train,X_test,y_train,y_test): 34 35 # 選擇模型 36 cls = svm.LinearSVC() 37 38 # 把數據交給模型訓練 39 cls.fit(X_train,y_train) 40 41 print('Coefficients:%s, intercept %s'%(cls.coef_,cls.intercept_)) 42 print('Score: %.2f' % cls.score(X_test, y_test)) 43 44 if __name__=="__main__": 45 X_train,X_test,y_train,y_test=load_data() # 生成用於分類的數據集 46 test_LinearSVC(X_train,X_test,y_train,y_test) # 調用 test_LinearSVC
2) SVM-LinearSVC-kaggle.ipynb-線性分類SVM,手寫數字數據集分類,正確率85%
1 """ 2 功能:實現線性分類支持向量機 3 說明:可以用於二類分類,也可以用於多類分類 4 作者:唐天澤 5 博客:http://write.blog.csdn.net/mdeditor#!postId=76188190 6 日期:2017-08-09 7 """ 8 9 # 導入本項目所需要的包 10 import pandas as pd 11 import numpy as np 12 13 from sklearn import datasets 14 15 from sklearn import svm 16 17 # 使用交叉驗證的方法,把數據集分為訓練集合測試集 18 from sklearn.model_selection import train_test_split 19 20 # The competition datafiles are in the directory ../input 21 # 加載數據集 22 def load_data(): 23 dataset = pd.read_csv("~/Desktop/knn/input/train.csv") 24 label = dataset.values[:,0] 25 train = dataset.values[:,1:] 26 testdata = pd.read_csv("~/Desktop/knn/input/test.csv").values 27 return label,train,testdata 28 # 使用LinearSVC考察線性分類SVM的預測能力 29 def test_LinearSVC(label,train,testdata): 30 31 # 選擇模型 32 cls = svm.LinearSVC() 33 34 # 把數據交給模型訓練 35 cls.fit(train,label) 36 37 # 預測數據 38 #print(cls.predict(testdata)) 39 results=cls.predict(testdata) 40 return results 41 42 if __name__=="__main__": 43 label,train,testdata = load_data() 44 result = test_LinearSVC(label,train,testdata) 45 pd.DataFrame({"ImageId": list(range(1,len(testdata)+1)),"Label": result}).to_csv( 46 '~/Desktop/knn/output/Digit_recogniser_SVM_LinearSVC.csv', index=False,header=True)
補充:
1 from sklearn import svm 2 3 from sklearn.datasets import load_iris 4 5 from sklearn.model_selection import train_test_split 6 7 datas = load_iris() 8 # print(datas) 9 data_x = datas.data 10 data_y = datas.target 11 # print(data_x) 12 13 #print(data_y) 14 15 x_train,x_test,y_train,y_test = train_test_split(data_x,data_y,test_size=0.3) 16 17 clf = svm.SVC()#默認核函數是高斯核 18 # print(clf) 19 clf = clf.fit(x_train,y_train) 20 print(clf.predict(x_test)) 21 print(y_test)