我正试图从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,你就不能期望有意义的结果。