从Sklearn SVM模型中得到奇怪的结果



我正试图从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内核。没有设置/交叉验证伽马和C,你就不能期望有意义的结果。

相关内容

  • 没有找到相关文章

最新更新