Sklearn (новичок текстового классификатора НЛП) - проблема с формой и векторизатором, X и Y не совпадают - PullRequest
0 голосов
/ 31 октября 2019

Я хочу создать классификатор текста, который просматривает рефераты исследований и определяет, сосредоточены ли они на доступе к медицинской помощи, на основе помеченного набора данных, который у меня есть. Источником данных является электронная таблица Excel с тремя полями (номер_проекта, аннотация и класс доступа) и 326 строк аннотаций. Класс доступа равен 1 для доступа и 0 для отсутствия доступа (не уверен, что это актуально). В любом случае, я пытался следовать учебнику, желая сделать его актуальным, добавив свои собственные данные, и у меня возникли некоторые проблемы с моими массивами X и Y. Любая помощь приветствуется.

import pandas as pd
import nltk
from nltk.corpus import stopwords
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.model_selection import train_test_split
from sklearn import naive_bayes
from sklearn.metrics import roc_auc_score

df = pd.read_excel("accessclasses.xlsx")
df.head()

#TFIDF vectorizer
stopset = set(stopwords.words('english'))
vectorizer = TfidfVectorizer(use_idf=True, lowercase=True, 
strip_accents='ascii', stop_words=stopset)

y = df.accessclass
x = vectorizer.fit_transform(df)

print(x.shape)
print(y.shape)
#above and below seem to be where the issue is.   
x_train, x_test, y_train, y_test = train_test_split(x, y) 

1 Ответ

1 голос
/ 31 октября 2019

Вы используете весь свой фрейм данных для кодирования вашего предиктора. Не забудьте использовать только абстрактное в преобразовании (вы также можете подогнать словарь корпусных слов до и затем преобразовать его впоследствии).

Вот решение:

y = df.accessclass
x = vectorizer.fit_transform(df.abstract)

Остальное выглядит нормально.

...