python sklearn pipiline fit: "Ошибка атрибута: нижний не найден" - PullRequest
0 голосов
/ 05 мая 2018

Я пытаюсь классифицировать сверальные текстовые данные по 3 категориям, используя sklearn. Но я получаю

«Ошибка атрибута: нижний уровень не найден»

при работе.

Код:

train, test = train_test_split(df, random_state=42, test_size=0.3, shuffle=True)
X_train = train.contents
X_test = test.contents
Y_train = train.category
Y_test = test.category

clf_svc = Pipeline([('vect', CountVectorizer()),
                    ('tfidf', TfidfVectorizer(tokenizer=',', use_idf=True, stop_words="english")),
                    ('clf', OneVsRestClassifier(LinearSVC(), n_jobs=1)),
                    ])

clf_svc = clf_svc.fit(X_train, Y_train)
predicted_svc = clf_svc(X_test)
print(np.mean(predicted_svc == Y_test))

Dataframe (df) состоит из 2 столбцов: содержимое (подробные текстовые данные) и категории (текст) данные). содержимое представляет собой очищенные тексты, таким образом, содержит десятки или сотни слов, а категории представляют собой отдельные слова, такие как «A», «B».

Я уже проверил прошлые вопросы в stackoverflow, но не смог устранить возникшую ошибку.
Я был бы очень рад узнать решение или проблемы в самом коде.
Любые советы и ответы будут с благодарностью.

Заранее спасибо.

1 Ответ

0 голосов
/ 05 мая 2018

Либо удалите шаг ('vect', CountVectorizer()), либо используйте TfidfTransformer вместо TfidfVectorizer, поскольку TfidfVectorizer ожидает массив строк в качестве ввода и CountVectorizer() возвращает матрицу вхождений (то есть числовую матрицу).

По умолчанию TfidfVectorizer(..., lowercase=True) будет пытаться "прописать" все строки, поэтому появляется сообщение об ошибке “AttributeError: lower not found”.

Также параметр tokenizer ожидает либо вызываемый (функция), либо None, поэтому не указывайте его.

...