【基于机器学习的餐馆评论文本分类分析】( 七 )


将评论文本数据转换为特征向量后 , 用文本特征转换方法 , 将输出的词频矩阵转换为TF-IDF矩阵 。TF-IDF矩阵可以将常见的词语的权重降低 , 同时却保留那些区分度较高的词语的权重 , 以优化文本特征表示的效果 。
from sklearn.feature_extraction.text import CountVectorizer, TfidfTransformer# 使用Count Vectorizer提取文本特征count_vect = CountVectorizer(max_df = 0.9,min_df = 3)X_train_counts = count_vect.fit_transform(X_train)X_test_counts = count_vect.transform(X_test)from sklearn.feature_extraction.text import TfidfVectorizer# 使用TF-IDF Vectorizer调整特征权重tfidf_transformer = TfidfTransformer()X_train_tfidf = tfidf_transformer.fit_transform(X_train_counts)X_test_tfidf = tfidf_transformer.transform(X_test_counts)
4 模型与预测 4.1 建立模型
接下来就可以使用语言进行模型构建 , 首先在训练数据集上构建文本分类模型 , 然后在测试数据集上进行预测 , 根据预测情况计算模型评价指标对分类模型性能进行评估 。
本研究选取了朴素贝叶斯、逻辑回归、支持向量机共3个算法 , 建立中文文本二值分类模型 。各模型主要参数如下:
(1)逻辑回归模型 。首先考虑加入正则化项来防止模型出现过拟合现象 , 比较常见的有参数向量的范数 1、2 等 , 这里选择 2 的正则化 , 正则惩罚项系数设为 1 。
from sklearn.linear_model import LogisticRegressionfrom sklearn.metrics import accuracy_scorefrom sklearn.metrics import classification_reportlogistic_reg = LogisticRegression(penalty='l2', C=1.0)logistic_reg.fit(X_train_tfidf, y_train)y_pred_l = logistic_reg.predict(X_test_tfidf)print(classification_report(y_test, y_pred_l))
(2)支持向量机模型 。直接使用线性核 , 直接实例化对象 。
from sklearn.naive_bayes import MultinomialNBfrom sklearn.metrics import accuracy_scorefrom sklearn.metrics import classification_report# 建立朴素贝叶斯模型naive_bayes = MultinomialNB(alpha=0.1 )naive_bayes.fit(X_train_tfidf, y_train)y_pred_s = naive_bayes.predict(X_test_tfidf)print(classification_report(y_test, y_pred_s))
(3)朴素贝叶斯模型 。查阅的官网介绍发现朴素贝叶斯的主要参数是平滑项参数 (?) , 且当 ? = 0.1 时 , 其运行效果最佳 。
from sklearn.svm import LinearSVCfrom sklearn.metrics import accuracy_scorefrom sklearn.metrics import classification_report# 建立SVM分类模型并进行训练svc = LinearSVC()svc.fit(X_train_tfidf, y_train)# 对测试集进行预测并输出评估结果y_pred = svc.predict(X_test_tfidf)print(classification_report(y_test, y_pred))
4.2 模型预测
本小节的实验参数依照上节参数设置 , 分类模型分别采用机器学习朴素贝叶斯、支持向量机、逻辑回归模型进行训练 , 根据训练出来的各分类模型 , 对测试集中的数据进行预测 , 评价指标选择的是、、、F1 。
各模型测试结果的评价指标如下表
模型allF1
逻辑回归
0.8502
0.81
0.85
0.81
支持向量机
0.8483
0.81
0.85
0.79
朴素贝叶斯
0.8458
0.81
0.85
0.79
根据测试集上的指标 , 可以选择逻辑回归模型作为最终的预测模型 。虽然三个模型的精度和其他指标都相近 , 但逻辑回归的F1得分达到了0.81 , 是三个模型中的最高值 。在这种情况下 , 我们可以选择在测试集上表现最好的模型 , 这个模型能在未知数据上更可靠地进行分类 。