簡體   English   中英

從Sklearn SVM模型獲得奇怪的結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM