2013-04-07 1 views
0

Я пытаюсь обучить машину векторной поддержки с помощью 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

ответ

0

Исправлено, проблема была в добавлении. Должно быть

training_data.append(vector) 

вместо

training_data.append([vector]) 
Смежные вопросы