「'」 SVMを: サポートベクターマシンの原理を: 分類の原則は:最適な分類境界を見つける 1.正しい:ほとんどのサンプルが正しくカテゴリに分けることができるため。 2.一般化:サポートベクター間隔を最大化します。 3.株式:サポートベクターアイソメトリック。 4.単純:線形、線または平面、超平面を分割します。 基づきリットル次元変換カーネル関数は:直鎖状低次元空間を高次元空間への線形分離問題の問題を分離することはできませんように新機能を追加、変換と呼ばれるカーネル関数によって特徴づけられます。 1>線形カーネル:リニアではなく、核の大きさによっては、スペースのみの元の寸法に線形分類境界を求め、機能を強化します。 2>多項式カーネル:ポリ、元のサンプルは、高い増加によって特徴付け-パワー多項式関数 Y = X_1 + X_2 Y = X_1 + X_2 ^ 2 ^ 2 + 2x_1x_2 Y = X_1 ^^ 2x_2 3x_1 + 2 + 3 ^ + 3x_1x_2。 ^ 3 X_2。 3>カーネル関数:RBFに、元のサンプルのガウス分布特性の確率分布関数を増加させることによって、 API関連の線形カーネルSVM分類に基づい: モデル= svm.SVC(カーネル=「線形」を model.fit(train_x、train_y) ケース、トレーニングsample2.txtのカーネル関数に基づいて、サンプル・データ。 手順: 1.ファイルを読むには、サンプル点の分布をプロット 2.スプリットテストトレーニングセットセット 3 SVMは、分類モデルに基づく訓練 、境界描画分類を4.出力分類結果を '「」 インポートNP AS numpyのを インポートAS sklearn.model_selection MS インポートSVM AS sklearn.svm インポートsklearn.metrics SM AS インポートはMP AS matplotlib.pyplot データ = np.loadtxt(' ./ml_data/multiple2.txt '、区切り文字が= ' '、アンパックは= Falseを、DTYPE = ' F8 ' = DATA [:、:-1) X ] Y = DATA [:、-1 ] #Caifenトレーニングセットとテストセット 。train_x、test_x、train_y、test_y ms.train_test_split =(X、Y、test_size = 0.25、random_state = 5 ) #のトレーニングモデルSVM - -線形カーネルに基づいて #のモデル= svm.SVC(カーネル= 'リニア') #1 model.fit(train_x、train_y) #のトレーニングSVM多項式カーネルベースのモデル--- #モデル= svm.SVC(カーネル= 'ポリ' 、度= 3) #1 model.fit(train_x、train_y) #のトレーニングモデルSVM ---多項式カーネルベース モデル= svm.SVC(カーネル= ' RBF '、C = 600 ) model.fit(train_x、train_y) #予報 pred_test_y = model.predict(test_x) #の計算モデルの精度 BG = sm.classification_report(test_y、pred_test_y) 印刷(' カテゴリーレポート:'、BG、9月には= ' \ N- ' ) #は、境界線の分類描く L、R = Xを[:、 0] .min() - 1、X [0:。、] .MAX()+ 1。 Bは、T = Xを[:1] .min() - 1、X [:1] .MAX()+ 1。 N- = 500 grid_x、grid_y = np.meshgrid(np.linspace(L、R&LT)、N-、np.linspace(B、T、N-)) bg_x = np.column_stack((grid_x.ravel()、grid_y.ravel( ))) bg_y = model.predict(bg_x) grid_z = bg_y.reshape(grid_x.shape) #1描画は、サンプルデータを示します mp.figure(' SVM分類'、のFaceColor = ' ライトグレー' ) mp.title(' SVM分類'、フォントサイズ= 16 ) mp.xlabel(' X '、フォントサイズ= 14 ) mp.ylabel(' Y '、フォントサイズ= 14 ) mp.tick_params(labelsize = 10 ) mp.pcolormesh(grid_x、grid_y、grid_z、CMAP = ' グレー' ) mp.scatter(test_x [:, 0]、test_x [:, 1]、S = 80、C = test_y、CMAP = ' ジェット'、ラベル=' サンプル' ) mp.legend() ()mp.show 出力: カテゴリー報告 精密リコールF1 - スコアサポート 0.0 0.91 0.87 100 45 1.0 30 0.81 0.87 0.84 精度 0.87 75 マクロAVG 0.86 0.87 0.86 75 加重AVG 0.87 0.87 0.87 75