自然语言分析——实验记录

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

 

posted @ 2018-08-19 13:08  樟樟22  阅读(284)  评论(0编辑  收藏  举报