首页 » python机器学习 » python机器学习全文在线阅读

《python机器学习》8.3 训练用于文档分类的逻辑斯谛回归模型

关灯直达底部

在本节中,我们将训练一个逻辑斯谛回归模型以将电影评论划分为正面评价或负面评价。首先,将上一节中清洗过的文本文档对象DataFrame划分为25000个训练文档和25000个测试文档:

接下来我们将使用GridSearchCV对象,并使用5折分层交叉验证找到逻辑斯谛回归模型最佳的参数组合:

在上述代码中使用参数组合初始化GridSearchCV对象时,我们严格限制了参数组合的数量,这是因为涉及大量的特征向量,以及数量众多的单词,会导致网格搜索的计算成本很高,使用普通的计算机,完成网格搜索大约需要40分钟的时间。

在上述示例代码中,由于TfidfVectornizer组合使用了CountVectorizer和TfidfTrans-former,因此我们用TfidfVectorizer替代后面的两个类。param_grid包含两个参数字典。在第一个字典中,我们使用了TfidfVectorizer的默认设置(use_idf=True,smooth_idf=True,以及norm='l2')计算tf-idf;我们在第二个字典中将参数设置为use_idf=False,smooth_idf=False,以及norm=None,以在原始词频上完成模型的训练。此外,对于逻辑斯谛回归算法,我们通过罚项使用了L2和L1正则化,并通过为逆正则参数C定义一个取值区间来比较不同正则化强度之间的差异。

在网格搜索结束后,我们可以输出最佳的参数集:

在此可见,网格搜索返回的最佳参数设置集合为:使用不含有停用词的常规标记(token)生成器,同时在逻辑斯谛回归中使用tf-idf,其中逻辑斯谛回归分类器使用L2正则化,正则化强度C=10.0。

使用网格搜索得到的最佳模型,我们分别输出训练集上5折交叉验证的准确率得分,以及在测试数据集上的分类准确率:

结果表明,我们的机器学习模型针对电影评论是正面评价还是负面评价的分类准确率为90%。

朴素贝叶斯分类器(Na飗e Bayes classifier)是迄今为止执行文本分类十分流行的一种分类器,特别是用于垃圾邮件过滤。朴素贝叶斯分类器易于实现,计算性能高效,相对于其他算法,它在小数据集上的表现异常出色。虽然本书并未讨论朴素贝叶斯分类器,有兴趣的读者可以阅读我在arXiv上关于朴素贝叶斯分类的论文(S.Raschka.Naive Bayes and Text Classification I-introduction and Theory.Computing Research Repository(CoRR),abs/1410.5329,2014.http://arxiv.org/pdf/1410.5329v3.pdf)。