Я пытаюсь обучить машину векторной поддержки с помощью scikit, используя these docs, но я получаю сообщение об ошибке. Я не понимаю. Я делаю что-то неправильно?Cryptic Error Message от Scikit Learn Svm Fit
Вот мой сценарий. Идея заключается в том, что у меня есть файл, где каждая строка имеет форму «данные метки». Данные представляют собой строку нулей и единиц.
svm-learn.py
import os
import re
from sklearn import svm
classifier = svm.SVC()
data = open("sd19-train-binary.txt", "r")
labels = []
training_data = []
i = 0
for line in data:
match = re.search("^(\S+) (\d+)", line)
label = match.group(1)
vector = list(match.group(2))
vector = [int(x) for x in vector]
labels.append(label)
training_data.append([vector])
i += 1
if i > 100:
break
classifier.fit(training_data, labels)
Когда я запускаю его, это происходит:
$ python svm-learn.py
Traceback (most recent call last):
File "svm-learn.py", line 26, in <module>
classifier.fit(training_data, labels)
File "/Library/Python/2.7/site-packages/scikit_learn-0.14_git-py2.7-macosx-10.8-intel.egg/sklearn/svm/base.py", line 184, in fit
fit(X, y, sample_weight, solver_type, kernel)
File "/Library/Python/2.7/site-packages/scikit_learn-0.14_git-py2.7-macosx-10.8-intel.egg/sklearn/svm/base.py", line 228, in _dense_fit
max_iter=self.max_iter)
File "libsvm.pyx", line 53, in sklearn.svm.libsvm.fit (sklearn/svm/libsvm.c:1660)
ValueError: Buffer has wrong number of dimensions (expected 2, got 3)
Одна строка в моей входной файл выглядит следующим образом:
W 1111111111111100001111111100011111111111100011111110011111000111111111110111111111
Этот для распознавания знаков в специальной базе данных nist 19