前六列代表乙個卒和兩個國外所在的位置(特徵值)最後一列draw代表和棋,其他代表只需對應的步數必然會分出勝負(目標值)
總樣本數28056,其中正樣本2796,負樣本25260。隨機取5000個樣本訓練,其餘測試。
樣本標準化,在訓練樣本上,求出每個維度的均值和方差,在訓練和測試樣本上同時標準化。
高斯核:
cscale= [2 ^ (-5), 2 ^ 15]; gamma = [2 ^ (-15), 2 ^ 3];
遍歷求識別率的最大值(利用網格搜尋)。
import pandas as pd
from sklearn.preprocessing import standardscaler
from sklearn.model_selection import train_test_split,gridsearchcv
from sklearn.metrics import classification_report
from sklearn.svm import svc
defsvm_test()
:# 讀取資料
data = pd.read_csv(
"./krkopt.data"
)# 刪除無效行
data = data.dropna(axis=0)
# 輸出資料的基本資訊
# print(data.info())
# 資料處理(使其滿足特徵處理的要求)
data[
"draw"
].replace(
"draw",1
,inplace=
true
) data.draw[data[
"draw"]!=
1]=-
1 data.replace(
"a",
1, inplace=
true
) data.replace(
"b",
2, inplace=
true
) data.replace(
"c",
3, inplace=
true
) data.replace(
"d",
4, inplace=
true
) data.replace(
"e",
5, inplace=
true
) data.replace(
"f",
6, inplace=
true
) data.replace(
"g",
7, inplace=
true
) data.replace(
"h",
8, inplace=
true
) data[
"1"]
= data[
"1"]
.astype(
int)
data[
"2"]
= data[
"2"]
.astype(
int)
data[
"3"]
= data[
"3"]
.astype(
int)
# 分離特徵值和目標值
x = data.iloc[:,
0:6]
y = data[
"draw"
]# 分割訓練集和測試集
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=
0.75
)# 特徵預處理-特徵工程(標準化)
std = standardscaler(
) x_train = std.fit_transform(x_train)
x_test = std.transform(x_test)
# 用svm訓練資料集
svm_svc = svc(kernel=
'rbf'
)# 設定引數的取值用於網格搜尋
ga_param =[2
**i for i in
range(-
5,15)
] c_param =[2
**i for i in
range(-
15,3)
]# ga_param = [0.0825]
# c_param = [16]
param =
# 設定網格搜尋的引數和5折交叉驗證
gc = gridsearchcv(svm_svc, param_grid=param, cv=5)
# 進行訓練
gc.fit(x_train,y_train)
# 檢視**結果
y_predict = gc.predict(x_test)
# 準確率和召回率
(classification_report(y_test,y_predict)
)# **準確率
("在測試集上準確率: "
,gc.score(x_test,y_test)
("在交叉驗證當中最好的結果: "
,gc.best_score_)
("選擇最好的模型是: "
,gc.best_estimator_)
("每個超引數每次交叉驗證的結果: "
,gc.cv_results_)
return
none
if __name__==
"__main__"
: svm_test(
)
svm 問題整理
答 幾何間隔與樣本的誤分次數間存在關係 其中的分母就是樣本到分類間隔距離,分子中的r是所有樣本中的最長向量值 答 會,超平面會靠近樣本少的類別。因為使用的是軟間隔分類,而如果對所有類別都是使用同樣的懲罰係數,則由於優化目標裡面有最小化懲罰量,所以靠近少數樣本時,其懲罰量會少一些。比如 假設理想的分隔...
SVM相關問題
應聘資料探勘工程師或機器學習工程師,面試官經常會考量面試者對svm的理解。以下是我自己在準備面試過程中,基於個人理解,總結的一些svm面試常考問題 想到會再更新 如有錯漏,請批評指正。大神請忽視 svm的原理是什麼?svm是一種二類分類模型。它的基本模型是在特徵空間中尋找間隔最大化的分離超平面的線性...
SVM相關問題
1.為什麼要通過求解與原問題等價的對偶問題 dual problem 來得到原問題的解?原因主要有 1 對偶問題更容易求解 2 在對偶問題下可以很容易引入核函式,進而擴充套件到線性不可分的場景。詳見 理解svm的三層境界 2.lagrange duality與wolfe duality的區別何在?常...