Ошибка кода классификатора Multi-Label - PullRequest
0 голосов
/ 19 мая 2018

Я пытаюсь обучить классификатор маркировать фильмы по жанрам.Сюжет фильма может попасть в несколько жанров. Вот так выглядит мой фрейм данных Я получаю это сообщение об ошибке, когда пытаюсь выяснить, каков показатель точности для каждого жанра фильма в наборе тестов.сообщение об ошибке: TypeError: объект FramePlotMethods не повторяется

Может кто-нибудь объяснить, что я делаю неправильно?

Я получил данные фильма от https://github.com/davidsbatista/text-classification/blob/master/movies_genres_en.csv.bz2

Вот код с начала

df = pd.read_csv("movies_genres_en.csv", delimiter='\t')
df.drop('plot_lang', axis=1, inplace=True)
df.info()

# using for loop get a count of movies by genre
df_genres = df.drop(['plot', 'title'], axis=1)
counts = []
categories = list(df_genres.columns.values)
for i in categories:
counts.append((i, df_genres[i].sum()))
df_stats = pd.DataFrame(counts, columns = ['genre','#movies'])
df_stats

# Create a fuction to clean the text
def clean_text(text):
text = text.lower()
text = re.sub(r"what's", "what is ", text)
text = re.sub(r"\'s", " ", text)
text = re.sub(r"\'ve", " have ", text)
text = re.sub(r"can't", "can not ", text)
text = re.sub(r"n't", " not ", text)
text = re.sub(r"i'm", "i am ", text)
text = re.sub(r"\'re", " are ", text)
text = re.sub(r"\'d", " would ", text)
text = re.sub(r"\'ll", " will ", text)
text = re.sub(r"\'scuse", " excuse ", text)
text = re.sub('\W', ' ', text)
text = re.sub('\s+', ' ', text)
text = text.strip(' ')
return text    

# clean up the text in plot
df['plot'] = df['plot'].map(lambda com : clean_text(com))

Разделение данных на обучающие и тестовые наборы

train, test = train_test_split(df, random_state=42, test_size = 0.33, 
shuffle=True)
x_train = train.plot
x_test = test.plot

# Define a pipeline combining a text feature extractor with multi lable 
classifier
NB_pipeline = Pipeline([
            ('tfidf', TfidfVectorizer(stop_words='english')),
            ('clf', OneVsRestClassifier(MultinomialNB(
                fit_prior=True, class_prior=None))),
        ])

NB_pipeline.fit(x_train, train[genre])
prediction = NB_pipeline.predict(x_test)
accuracy_score(test[genre], prediction)

Я получаю эту ошибку при запускепоследний фрагмент кода TypeError: объект FramePlotMethods не повторяется

Что я сделал не так при создании df?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...