SVM的sklearn實現


轉載:豆-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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM