ValueError: найдены массивы с несовместимым количеством выборок [6 1786]

Вот мой код:

from sklearn.svm import SVC
from sklearn.grid_search import GridSearchCV
from sklearn.cross_validation import KFold
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn import datasets
import numpy as np

newsgroups = datasets.fetch_20newsgroups(
                subset='all',
                categories=['alt.atheism', 'sci.space']
         )
X = newsgroups.data
y = newsgroups.target

TD_IF = TfidfVectorizer()
y_scaled = TD_IF.fit_transform(newsgroups, y)
grid = {'C': np.power(10.0, np.arange(-5, 6))}
cv = KFold(y_scaled.size, n_folds=5, shuffle=True, random_state=241) 
clf = SVC(kernel='linear', random_state=241)

gs = GridSearchCV(estimator=clf, param_grid=grid, scoring='accuracy', cv=cv)
gs.fit(X, y_scaled) 

Я получаю сообщение об ошибке и не понимаю почему. Отслеживание:

Отслеживание (последний вызов последним): файл
"C: /Users/Roman/PycharmProjects/week_3/assignment_2.py", строка 23, в

gs.fit (X, y_scaled) #TODO: проверьте эту строку File "C: \ Users \ Roman \ AppData \ Roaming \ Python \ Python35 \ site-packages \ sklearn \ grid_search.py",
строка 804, подходит
return self._fit (X, y , ParameterGrid (self.param_grid)) Файл "C: \ Users \ Roman \ AppData \ Roaming \ Python \ Python35 \ site-packages \ sklearn \ grid_search.py",
строка 525, в _fit
X, y = индексируемый (X, y) файл "C: \ Users \ Roman \ AppData \ Roaming \ Python \ Python35 \ site-packages \ sklearn \ utils \ validation.py",
строка 201, в индексируемом
check_consistent_length ( * результат) Файл "C: \ Users \ Roman \ AppData \ Roaming \ Python \ Python35 \ site-packages \ sklearn \ utils \ validation.py",
строка 176, в check_consistent_length
"% s"% str (уникальные))

ValueError: обнаружены массивы с несовместимым количеством выборок: [6 1786]

Может ли кто-нибудь объяснить, почему возникает эта ошибка?


person Roman Liuts    schedule 13.02.2016    source источник


Ответы (1)


Я думаю, вы немного запутались здесь с вашими X и y. Вы хотите преобразовать себя X в вектор tf-idf и тренироваться, используя это против y. См. ниже

from sklearn.svm import SVC
from sklearn.grid_search import GridSearchCV
from sklearn.cross_validation import KFold
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn import datasets
import numpy as np

newsgroups = datasets.fetch_20newsgroups(
                subset='all',
                categories=['alt.atheism', 'sci.space']
         )
X = newsgroups.data
y = newsgroups.target

TD_IF = TfidfVectorizer()
X_scaled = TD_IF.fit_transform(X, y)
grid = {'C': np.power(10.0, np.arange(-1, 1))}
cv = KFold(y_scaled.size, n_folds=5, shuffle=True, random_state=241) 
clf = SVC(kernel='linear', random_state=241)

gs = GridSearchCV(estimator=clf, param_grid=grid, scoring='accuracy', cv=cv)
gs.fit(X_scaled, y)
person piman314    schedule 13.02.2016
comment
Спасибо, вы очень помогли! Так что фиктивная ошибка =) - person Roman Liuts; 13.02.2016