По умолчанию векторизатор Tf-idf выполняет всю базовую предварительную обработку
- , такую как удаление смайликов, пунктуация,
- , преобразование букв в нижний регистр и т. Д.
Установив это, то, что @vivek Кумар упомянул, является верным пунктом.Установка векторизатора на полные данные не является правильной практикой.
Один из ключевых подходов к перекрестной проверке метрик производительности - понять, что обучение модели является правильным / неправильным!
Посмотрите на коэффициенты модели для входных объектов (если это линейная модель еще SHAP).
Исходя из вашего репозитория github, когда я пытался понять, что такое Модель, это то, что я получил.Это выглядит немного переобучением, так как такие слова, как luggage
, systems
также получили отрицательные веса.
top_n,bottom_n = 15,15
df = pd.DataFrame({'feature_names':v.get_feature_names(),
'co_eff':clf.coef_[0]})
df=df.sort_values('co_eff',ascending=False).iloc[np.r_[0:top_n,-bottom_n:0]]
print(df)
выход:
feature_names importn
606 thank 6.918280
607 thanks 6.269803
281 great 4.497794
74 awesome 4.366976
391 love 4.296043
84 best 3.864701
40 amazing 3.710287
213 excellent 2.749308
623 thx 2.695160
358 kudos 2.663612
279 good 2.618669
149 cool 2.582528
53 appreciate 2.399666
528 rock 2.222901
502 quick 2.020487
595 system -1.829668
643 trying -1.839126
80 bags -1.899045
394 luggage -1.957718
78 bag -1.968421
192 dont -2.060734
104 call -2.075544
532 rude -2.255443
308 hold -2.588171
316 hour -2.640191
110 cancelled -2.719347
445 nothing -2.743778
171 delayed -2.869854
704 worst -3.262978
317 hours -3.348654
PS: для анализа настроений это не очень хороший диапазон.Как только вы перейдете к сложной модели / улучшенной обработке текста - результаты значительно улучшатся.