机器学习,如何通过GaussianNB高斯贝叶斯分类器做预测?
发布于 作者:苏南大叔 来源:程序如此灵动~在自然语言处理方面,对于预测其实有很多的算法。那么,贝叶斯函数就是其中一个最常见的方法。上一篇文章里面,苏南讲述了使用多项式朴素贝叶斯函数进行机器学习的预测。本文使用另外一个贝叶斯分类器,叫做高斯贝叶斯分类器,来实现同一批评论文字的分类需求。
大家好,这里是苏南大叔的程序如此灵动博客,这里记录苏南大叔和计算机代码的故事。本文描述使用一个高斯贝叶斯分类器,来实现文本的情感分析。测试环境:win10
,python@3.6.8
,sklearn@0.24.2
。
基本思路
基本需求及其方案实现,是基于多项式朴素贝叶斯函数的,可以参考文章:
在后一篇文章里,对于模型的fit
结果保存为模型文件,然后再次加载使用。可以参考文章:
在本篇文章里面,实现了对文本的情感分析模型的训练。第一次运行的时候,使用的是一部分训练集做训练。然后,把训练的结果保存下来,然后利用训练的结果,再次对文本进行分析。【本文的数据集的使用,其实是有些问题的】
准备数据
读取评价.csv
文件,其中内容字段做分词,评价字段读取成y
变量。如果程序报错找不到文件,可以参考:
有关分词的逻辑,可以参考:
from genericpath import exists
import numpy as np
import joblib
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.feature_extraction.text import CountVectorizer
import jieba
import os
os.chdir(os.path.dirname(__file__))
data = pd.read_csv("评价.csv", encoding="gbk")
_text = []
for c in data["内容"]:
_seg = jieba.cut(c, cut_all=False) # 这里需要加载自定义词典
_text.append(','.join(_seg))
con = CountVectorizer(stop_words=[]) # 这里需要控制
X = con.fit_transform(_text)
X = X.toarray()
y = data['评价'].values
高斯贝叶斯分类器
这里为了使用模型的导入导出的功能,硬生生的做个点改变。先用大部分训练集做了训练,再次运行的时候,就全部用于测试。而且,对于本文的需求来说,对于X
的处理实际上有些问题。
使用训练好的数据,再去测试新的数据的时候,需要对新的数据【使用原来数据集的词典】进行处理,这部分待后续文章描述。
from genericpath import exists
model_cache = "GaussianNB.model"
if not exists(model_cache):
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.05, random_state=1, shuffle=False)
model_GaussianNB = GaussianNB()
model_GaussianNB.fit(X_train, y_train)
joblib.dump(model_GaussianNB, model_cache)
else:
model_GaussianNB = joblib.load(model_cache)
X_test = X
y_test = y
获得结果
获得预测的结果:
model_GaussianNB.predict(X_test)
获得预测结果的评分:
model_GaussianNB.score(X_test, y_test)
获得预测结果的单条可能性,测试集样本在各个类别上预测的几率的一个对数转化:
result2 = model_GaussianNB.predict_proba(X_test)
np.around(result2*100, 2)
后面的np.around(result2*100, 2)
其实就是个可视化的过程,数据分为两列。第一列表示:数据为“好评”的概率,第二列表示数据为“差评”的概率。
相关文章
综述
目前,已经描述了两个用于机器学习的贝叶斯分类器了。整体看上去,高斯贝叶斯和多项式贝叶斯的使用方式,基本上差不多。对于普通人来说,没有太大区别。基本上就是换换函数名的关系罢了。更多机器学习的文章,可以点击:
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。