1.第一次试验:朴素贝叶斯,采用统计词数量方式处理数据conutVectorizer()
(1)训练集12695条,
正向:8274
负向:4221
哈工大停词表:df=3,正确率0.899,
df=1,正确率0.9015
四川大学停词表:df=1,正确率0.90035
(2)训练集19106条
正向:11747
负向:7359
哈工大停词表:df=1,正确率0.90153
2.第二次实验:朴素贝叶斯,采用idf来处理评论数据TfidfVectorizer(),而TfidfTransformer()使用时出错。
(1)训练集19106条
正向:11747
负向:7359
哈工大停词表:df=1,正确率 0.899568
3.第三次实验:朴素贝叶斯,采用统计词数量方式处理数据conutVectorizer()
训练集19106条
正向:11747
负向:7359
哈工大停词表:df=1
(1)当数据向量化时,采用二元模型即conutVectorizer(ngram_range=(1,2))时出现MemeoryError错误,即内存不足。搜了原因是电脑的原因,再试试,用服务器运行。
仍然一元模型训练集不变,把测试集中分类错误的改过来,以及语句模糊的文本删除后,正确率提升一点。
正确率:0.9030612244897959
(2)当把分词换成精确模式而不是全模式时,精确度提高0.006
正确率:0.908948194662
4.第四次试验
(1)训练测试集不变,改动countVectorizer可以统计长度为 1的词后两次实验,统计词频数量的贝叶斯正确率为0.905,而用tfidf贝叶斯后,正确率降低到0.76左右,显著下降,可能是因为一个字的词太多,而总的训练数据又不够,导致idf的值就会比较小,而单个字的词频却很大,所以导致单个字的词tfidf值比较大,严重影响各个词的重要性分布,所以实验分类结果效果很差。
(2)训练测试集不变,朴素贝叶斯,采用统计词数量方式处理数据conutVectorizer(),正确率 0.9116954474097331
训练测试集不变,朴素贝叶斯,采用tfidf理数据,正确率为0.9030612244897959。
5.实验五
(1)采用逻辑斯蒂回归sklearn.linear_model.LogisticRegression()采用默认的正则化即penalty='l2',优化方法solver='liblinear'时,正确率为0.9072691552062868
(2)采用逻辑斯蒂回归sklearn.linear_model.LogisticRegression()采用l1正则化penalty='l1',优化方法solver='liblinear'时,正确率为0.9084479371316306,比上面的稍有提高。
(3)采用逻辑斯蒂回归sklearn.linear_model.LogisticRegression()采用默认的正则化即penalty='l2',优化方法solver='lbfgs'时,正确率为0.9072691552062868
(4)采用逻辑斯蒂回归sklearn.linear_model.LogisticRegression()采用默认的正则化即penalty='l2',优化方法solver='newton-cg'时,正确率为0.9072691552062868
(5)采用逻辑斯蒂回归sklearn.linear_model.LogisticRegression()采用默认的正则化即penalty='l2',优化方法solver=' sag'时,正确率为0.906483300589391。预测准确率最差,可能是因为这个优化方法需要训练数据很大,一般大于十万条。
6.实验六
(1)采用svm来训练模型,训练测试数据都喝上一样,但由于计算时间长,取训练集的前一万条数据做训练,测试集不变,得到的正确率为0.6742632612966601
时间为1170.129秒
(2)正确率:0.6789783889980353
时间为:11404.603873968124秒,即190分钟(三小时)
(3)训练集为2000条,测试集为500条,当惩罚系数C为0.5时,正确率为0.004;C=1时正确率为0.004;C=2时正确率为0.004;C=10时正确率0.004.并不影响结果,说明这可能是个线性可分类所以惩罚想无影响。
(4)训练集为5000条,测试集为1000条,当惩罚系数C为10时,正确率为0.244;C=1时正确率为也是0.244,不用调节这个系数了,对于结果没有啥影响。
(5)训练5000条,测试2000多条,C=1,正确率0.6745283018867925,什么情况,增加测试数量会提升正确率???
7.实验七
(1)(phone_nlp1.py)多项式朴素贝叶斯,不特征提取,正确率为0.9058084772370487。特征5000个,正确率为0.9050235478806907。提取14000个,正确率 0.9046310832025117。
(2)(phone_nlp2.py)多项式朴素贝叶斯,不特征提取,正确率为0.9116954474097331。特征提取5000个,正确率为 0.9058084772370487。
特征提取10000个,正确率为:0.9054160125588697。提取14000个,正确率0.91287
(3)(phone_nlp3.py)多项式朴素贝叶斯(tfidf),不特征提取,正确率为0.9030612244897959。
特征提取10000个,正确率0.9030612244897959。
特征提取14000个,正确率0.9030612244897959。
正确率不变。
(4)(phone_nlp_logisticRegress.py)逻辑回归采用默认的正则化即penalty='l2',优化方法solver=' sag'时,提取5000词,正确率0.9030612244897959。提取10000条。正确率0.9053045186640472。14000条,正确率0.906090373280943。
(5)(phone_nlp_logisticRegress.py)采用逻辑斯蒂回归sklearn.linear_model.LogisticRegression()采用l1正则化penalty='l1',优化方法solver='liblinear'时,提取14000条,正确率为0.906090373280943。不提取特征,正确率0.9084479371316306。
(6)(phone_nlp_logisticRegress.py)svm,C=100,训练集10000条,正确率0.8091872791519434,耗时: 514.3292860984802秒。
c=1000,训练集10000条,正确率0.8532182103610675,耗时: 434.3683319091797。
c=1000,训练集18000条,正确率,0.9089481946624803,耗时: 9087.535838365555秒(151分钟)。默认核函数kernel='rbf'
c=1,训练集18000条,正确率0.9030612244897959,耗时: 1851.5224463939667(30分钟),核函数kernel='linear'。
c=5,训练集18000条,正确率 0.8889324960753532,耗时: 2341.9452316761017,核函数kernel='linear',正确率下降了,说明有点过拟合了。
c=2,训练集18000条,正确率 0.8963893249607535,耗时: 2061.1477530002594,核函数kernel='linear'。
c=1.5,训练集18000条,正确率 0.9003139717425431耗时: 2035.7577958106995,核函数kernel='linear'。
c=1.5,训练集18000条,本实验及上面的特征提取10000条,核函数kernel='linear
正确率 0.9003139717425431
召回率 0.9158134243458476
F1 0.9268854346574553
耗时: 2235.384289264679
c=1,训练集18000条,特征提取14000条,核函数kernel='linear
正确率 0.9014913657770801
召回率 0.9197707736389685
F1 0.9274776076278533
耗时: 3104.536496400833
c=1,特征不提取,核函数kernel='linear
(7)(phone_nlp2.py)
朴素贝叶斯,全部特征
正确率 0.9124803767660911
召回率 0.9287765651924181
F1 0.935493202198438
提取14000特征
正确率 0.9116954474097331
召回率 0.9272206303724928
F1 0.9349898873158047
特征提取10000条
正确率 0.9050235478806907
召回率 0.920662100456621
F1 0.9302191464821221
(8)svm,
c=1,全特征,核函数kernel='linear
正确率 0.8975667189952904
召回率 0.918825561312608
F1 0.9244135534317985
c=1,训练集全部,特征提取14000条,核函数kernel='linear
正确率 0.9014913657770801
召回率 0.9197707736389685
F1 0.9274776076278533
耗时: 3104.536496400833
c=1,特征10000条,
正确率 0.9030612244897959
召回率 0.9185185185185185
F1 0.9288389513108615
耗时: 2203.7621104717255
c=1.5,特征提取10000条,核函数kernel='linear
正确率 0.9003139717425431
召回率 0.9158134243458476
F1 0.9268854346574553
耗时: 2455.3551800251007
(9)逻辑斯蒂回归
全特征时,
正确率 0.9046310832025117
召回率 0.9172804532577904
F1 0.9301924734271761
特征提取14000条时,
正确率 0.9042386185243328
召回率 0.9186575654152446
F1 0.9297639608520437
特征提取10000条时,
正确率 0.9050235478806907
召回率 0.919226393629124
F1 0.9303396660909614