天天看點

【educoder 機器學習】支援向量機第1關:線性可分支援向量機第2關:線性支援向量機第3關:非線性支援向量機

支援向量機 (Support Vector Machine) 是由Vapnik等人于1995年提出來的,之後随着統計理論的發展,支援向量機 SVM 也逐漸受到了各領域研究者的關注,在很短的時間就得到了很廣泛的應用。

支援向量機是被公認的比較優秀的分類模型。同時,在支援向量機的發展過程中,其理論方面的研究得到了同步的發展,為支援向量機的研究提供了強有力的理論支撐。

本實訓項目主要圍繞支援向量機的原理和技術進行介紹,并基于實際案例進行實戰實訓。

第1關:線性可分支援向量機

1.B
2.B
3.C
4.B
5.D
6.A C
           

第2關:線性支援向量機

任務描述

本關任務:複習課本及網絡教學平台教學資源,使用sklearn實作線性支援向量機,并通過癌細胞資料中訓練集對模型進行訓練,再對測試集癌細胞資料進行識别。

#encoding=utf8
from sklearn.svm import LinearSVC

def linearsvc_predict(train_data,train_label,test_data):
    '''
    input:train_data(ndarray):訓練資料
          train_label(ndarray):訓練标簽
    output:predict(ndarray):測試集預測标簽
    '''
    #********* Begin *********# 
    '''
    dual : bool, (default=True) 選擇算法以解決雙優化或原始優化問題。 
    當n_samples> n_features時,首選dual = False
    '''
    lsvc = LinearSVC(dual = False)
    lsvc.fit(train_data,train_label)
    predict = lsvc.predict(test_data)
    #********* End *********# 
    return predict
           

第3關:非線性支援向量機

任務描述

本關任務:複習教材及網絡教學平台資源,使用sklearn實作非線性支援向量機,并通過鸢尾花資料中訓練集對模型進行訓練,再對測試集鸢尾花資料進行分類。

#encoding=utf8
from sklearn.svm import SVC

def svc_predict(train_data,train_label,test_data,kernel):
    '''
    input:train_data(ndarray):訓練資料
          train_label(ndarray):訓練标簽
          kernel(str):使用核函數類型:
              'linear':線性核函數
              'poly':多項式核函數
              'rbf':徑像核函數/高斯核
    output:predict(ndarray):測試集預測标簽
    '''
    #********* Begin *********# 
    clf =SVC(kernel=kernel)
    clf.fit(train_data,train_label)
    predict = clf.predict(test_data)
    #********* End *********# 
    return predict
           

繼續閱讀