Python 从Sklearn-SVM模型中得到奇怪的结果
我正在尝试从scikit学习中训练支持向量机,但我似乎没有得到任何结果,我想知道是否有支持向量机或scikit学习专家知道原因。下面是我正在运行的示例。我有一些手写数字数据,我想训练一个分类器来区分“a”和“b”。我使用的数据在这里,所以你也可以测试它。培训文件和测试文件都在该归档文件中。任何帮助理解结果(svm说一切都是“a”)都将不胜感激 这是我的剧本:Python 从Sklearn-SVM模型中得到奇怪的结果,python,svm,image-recognition,scikit-learn,Python,Svm,Image Recognition,Scikit Learn,我正在尝试从scikit学习中训练支持向量机,但我似乎没有得到任何结果,我想知道是否有支持向量机或scikit学习专家知道原因。下面是我正在运行的示例。我有一些手写数字数据,我想训练一个分类器来区分“a”和“b”。我使用的数据在这里,所以你也可以测试它。培训文件和测试文件都在该归档文件中。任何帮助理解结果(svm说一切都是“a”)都将不胜感激 这是我的剧本: #!/usr/bin/env python import os import re from sklearn import svm d
#!/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,则无法获得有意义的结果。是否在
培训\u数据中拾取了任何元素?看起来在re.search(“^(\S+)(\d+”,line)
中可能有问题-正则表达式可能应该是r“^(\S+)(\d+”
。是的,它们是这样的。如果您想,可以尝试代码并打印值。您没有链接到任何数据文件。