Я пытаюсь обучить RandomForestClassifier прогнозировать, является ли обзор хорошим (1) или плохим (0) на основе количества слов.
Мои тренировочные данные с именем all_train_set
выглядят так:
Reviews Labels
0 For fans of Chris Farley, this is probably his... 1
1 Fantastic, Madonna at her finest, the film is ... 1
2 From a perspective that it is possible to make... 1
3 What is often neglected about Harold Lloyd is ... 1
4 You'll either love or hate movies such as this... 1
... ...
14995 This is perhaps the worst movie I have ever se... 0
14996 I was so looking forward to seeing this film t... 0
14997 It pains me to see an awesome movie turn into ... 0
14998 "Grande Ecole" is not an artful exploration of... 0
14999 I felt like I was watching an example of how n... 0
Тестовый набор данных выглядит точно в том же формате. Код, используемый для обучения моего алгоритма, таков:
from sklearn.feature_extraction.text import TfidfVectorizer
import nltk
from sklearn.metrics import classification_report, accuracy_score
from sklearn.ensemble import RandomForestClassifier as rfc
stopwords=set(nltk.corpus.stopwords.words('english'))
tfidfconverter = TfidfVectorizer(max_features=1500, min_df=5, stop_words=stopwords)
X = tfidfconverter.fit_transform(all_train_set['Reviews']).toarray()
X_train = X
y_train = all_train_set['Labels']
classifier = rfc(n_estimators=1000, random_state=0)
classifier.fit(X_train, y_train)
tfidfconverter = TfidfVectorizer(max_features=1500, min_df=5, stop_words=stopwords)
X = tfidfconverter.fit_transform(all_test_set['Reviews']).toarray()
X_test = X
y_test = all_test_set['Labels']
#predicting on the test set and printing results
y_pred = classifier.predict(X_test)
print(classification_report(y_test,y_pred))
print(accuracy_score(y_test, y_pred))
Моя общая точность равна 0,5, что кажется крайне плохим. После этого я попытался выполнить поиск по сетке, чтобы получить лучшие параметры, но общая точность снова составила точно 0,5. Результаты выглядят так:
precision recall f1-score support
0 0.50 0.70 0.58 2482
1 0.50 0.30 0.37 2482
accuracy 0.50 4964
macro avg 0.50 0.50 0.48 4964
weighted avg 0.50 0.50 0.48 4964
0.5
Если кто-то может объяснить, является ли это ошибкой обучения или это просто плохой результат. Если последнее все равно есть, я могу знать, как его улучшить?
Я новичок в машинном обучении и поэтому извиняюсь, если что-то не понятно, я с удовольствием уточню / внесу изменения / приму совет о том, как улучшить мой вопрос.
Большое спасибо