[英]Getting Weird Results From Sklearn SVM Models
我試圖從scikit-learn訓練一個支持向量機,但我似乎沒有得到任何結果,我想知道是否有任何svm或scikit學習專家可能知道為什么。 這是我正在運行的示例。 我有一些手寫的數字數據,我想訓練一個分類器來區分'a'和'b'。 我使用的數據在這里,所以你也可以測試它。 這兩個文件,培訓文件和測試文件都在該存檔中。 任何幫助理解結果(svm說一切都是'a')將不勝感激。
這是我的腳本:
#!/usr/bin/env python
import os
import re
from sklearn import svm
def get_record(line):
match = re.search("^(\S+) (\d+)", line)
label = match.group(1)
vector = list(match.group(2))
vector = [int(x) for x in vector]
return label, vector
def train_classifier():
classifier = svm.SVC()
data = open("sd19-train-binary.txt", "r")
labels = []
training_data = []
i = 0
for line in data:
label, vector = get_record(line)
if label == 'a' or label == 'b':
labels.append(label)
training_data.append(vector)
i += 1
if i > 100:
break
classifier.fit(training_data, labels)
return classifier
def test_classifier(classifier):
data = open("sd19-test-binary.txt", "r")
i = 0
for line in data:
label, vector = get_record(line)
if label == 'a' or label == 'b':
print label, classifier.predict(vector)
i += 1
if i > 100:
break
def main():
classifier = train_classifier()
test_classifier(classifier)
main()
默認情況下,SVC使用RBF內核。 如果不設置/交叉驗證gamma和C,則無法獲得有意義的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.