默认情况下,Tf-idf 矢量化器会进行所有基本的预处理
- 如去除表情符号、标点符号、
- 将字母字符转换为小写等。
设置后,@vivek Kumar 提到的是一个有效点。在完整数据上拟合矢量化器不是正确的做法。
交叉检查性能指标的一个关键方法是了解模型学习的正确/错误!
查看输入特征的模型系数(如果它是线性模型,否则 SHAP)。
根据您的 github 存储库,当我尝试了解模型 co-eff 时,这就是我得到的。它看起来有点过拟合,因为像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
附: :对于情绪分析,这不是一个表现如此出色的范围。一旦你选择复杂的模型/更好的文本处理——结果会改善很多。