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

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)

猜你喜欢

转载自www.cnblogs.com/zz22--/p/9490375.html
今日推荐