快速入门Python机器学习(12)
7.5 多项式贝叶斯(MultinomialNB)
7.5.1 属性与方法
类
class sklearn.naive_bayes.MultinomialNB(*, alpha=1.0, fit_prior=True, class_prior=None)
属性
属性 | 解释 |
---|---|
class_count_ | ndarray of shape (n_classes,)拟合期间遇到的每个类的样本数。当提供时,该值由样本重量加权。 |
class_log_prior_ | ndarray of shape (n_classes, )平滑的经验对数概率为每一类。 |
classes_ | ndarray of shape (n_classes,)分类器已知的类标签。 |
coef_ | ndarray of shape (n_classes, n_features)镜像的特点是把多项式解释为线性模型。 |
feature_count_ | ndarray of shape (n_classes, n_features)拟合期间每个(类、特征)遇到的样本数。 |
feature_log_prob_ | ndarray of shape (n_classes, n_features)当提供时,该值由样本重量加权。给定一类特征的经验对数概率P(x|i|y)。 |
intercept_ | ndarray of shape (n_classes,)镜像类logprior,用于将多项式nb解释为线性模型。 |
n_features_ | n_features_int每个样本的特征数 |
方法
fit(X, y[, sample_weight]) | 根据X,y拟合多项式朴素贝叶斯 |
---|---|
get_params([deep]) | 获取此估计器的参数。 |
partial_fit(X, y[, classes, sample_weight]) | 对一批样品进行增量拟合。 |
predict(X) | 对测试向量X的数组执行分类。 |
predict_log_proba(X) | 测试向量X的返回对数概率估计。 |
predict_proba(X) | 测试向量X的返回概率估计。 |
score(X, y[, sample_weight]) | 返回给定测试数据和标签的平均精度。 |
set_params(**params) | 设置此估计器的参数。 |
7.5.2多项式贝叶斯拟合make_blobs数据
def multinomialNB_for_make_blobs():
myutil = util()
X,y = make_blobs(n_samples=500,random_state=8,centers=8)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=8)
scaler = MinMaxScaler()
scaler.fit(X_train)
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)
nb = MultinomialNB()
nb.fit(X_train,y_train)
title = "多项式贝叶斯 make_blobs"
myutil.draw_scatter(X,y,nb,title)
myutil.print_scores(nb,X_train,y_train,X_test,y_test,title)
myutil.plot_learning_curve(MultinomialNB(),X,y,title)
myutil.show_pic(title)
输出
多项式贝叶斯 make_blobs:
13.33%
多项式贝叶斯 make_blobs:
9.60%
由此可见,多项式贝叶斯拟合make_blobs数据是非常差的。
7.5.3 多项式贝叶斯拟合鸢尾花数据
def multinomialNB_for_iris():
warnings.filterwarnings("ignore")
myutil = util()
X,y = datasets.load_iris().data,datasets.load_iris().target
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=8)
scaler = MinMaxScaler()
scaler.fit(X_train)
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)
nb = MultinomialNB()
nb.fit(X_train,y_train)
title = "多项式贝叶斯 鸢尾花"
myutil.print_scores(nb,X_train,y_train,X_test,y_test,title)
myutil.plot_learning_curve(MultinomialNB(),X,y,title)
myutil.show_pic(title)
输出
多项式贝叶斯 鸢尾花:
66.07%
多项式贝叶斯 鸢尾花:
65.79%
多项式贝叶斯拟合鸢尾花数据刚刚及格,不是很好。
7.5.4多项式贝叶斯拟合红酒数据
def multinomialNB_for_wine():
warnings.filterwarnings("ignore")
myutil = util()
X,y = datasets.load_wine().data,datasets.load_wine().target
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=8)
scaler = MinMaxScaler()
scaler.fit(X_train)
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)
nb = MultinomialNB()
nb.fit(X_train,y_train)
title = "多项式贝叶斯 红酒"
myutil.print_scores(nb,X_train,y_train,X_test,y_test,title)
myutil.plot_learning_curve(MultinomialNB(),X,y,title)
myutil.show_pic(title)
输出
多项式贝叶斯 红酒:
96.24%
多项式贝叶斯 红酒:
91.11%
多项式贝叶斯拟合红酒数据刚还是不错的。
7.5.5多项式贝叶斯拟合乳腺癌数据
def multinomialNB_for_breast_cancer():
warnings.filterwarnings("ignore")
myutil = util()
X,y = datasets.load_breast_cancer().data,datasets.load_breast_cancer().target
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=8)
scaler = MinMaxScaler()
scaler.fit(X_train)
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)
nb = MultinomialNB()
nb.fit(X_train,y_train)
title = "多项式贝叶斯 乳腺癌"
myutil.print_scores(nb,X_train,y_train,X_test,y_test,title)
myutil.plot_learning_curve(MultinomialNB(),X,y,title)
myutil.show_pic(title)
输出
多项式贝叶斯 乳腺癌:
84.27%
多项式贝叶斯 乳腺癌:
81.12%
多项式贝叶斯拟合乳腺癌数据还可以。
7.6 总结
7.6.1三个贝叶斯之间进行比较
算法 | 鸢尾花 | 红酒 | 乳腺癌 |
---|---|---|---|
贝努利贝叶斯 | 33.04%/34.21% | 41.35%/35.56% | 63.85%/59.44% |
高斯贝叶斯 | 98.21%/89.47% | 99.25%/97.78% | 94.37%/93.71% |
多项式贝叶斯 | 66.07%/65.79% | 96.24%/91.11% | 84.27%/81.12% |
看来,对三组数据高斯贝叶斯算法在三个数据中最好,我们让他与以前学习过的分类算法做个比较。
7.6.2与其他分类算法进行比较
算法 | 鸢尾花 | 红酒 | 乳腺癌 |
---|---|---|---|
高斯贝叶斯 | 98.21%/89.47% | 99.25%/97.78% | 94.37%/93.71% |
逻辑回归 | 96.67%/100.00% | 100.00%/94.44% | 94.95%/97.37% |
K邻近分类算法 | 97.50%/96.67% | 77.46%/72.22% | 94.07%/95.61% |
- 对于鸢尾花数据,三个算法差不多;
- 对于红酒数据,逻辑回归最好,K邻近分类算法最差;
- 对于乳腺癌数据,三个算法差不多。
相关文章
- 快速入门Python机器学习(11)
- 快速入门Python机器学习(18)
- 快速入门Python机器学习(24)
- 快速入门Python机器学习(31)
- 快速入门Python机器学习(35)
- 快速入门Python机器学习(37)
- 《深入浅出Python机器学习》读书笔记 第一章 概述
- python十进制转换_Python 进制转换
- python编程是什么-Python编程
- python jieba库_Python jieba库的使用说明「建议收藏」
- java和python哪个值得学-学java好还是Python好?
- 怎么用python打开csv文件_Python文本处理之csv-csv文件怎么打开[通俗易懂]
- 《零基础学机器学习》笔记-第2课-数学和Python知识
- gyp ERR! stack Error: Can't find Python executable 'python'
- Anaconda:初学Python、入门机器学习的首选
- h5 Python_python做h5网站
- python zipfile_Python 学习入门(16)—— zipfile
- 机器学习—决策树原理(python代码实现)
- Python学生信息管理系统课程设计报告_python做的项目管理系统
- Python绘制旭日图_python绘制散点图
- 用Python简化Linux指令:从繁琐变简单(python运行linux命令)
- 顶级的20名Python人工智能和机器学习开源项目
- 机器学习年度 20 大开源项目花落谁家?(Python 版)
- Python操作MySQL数据库的必备模块mysqlpython(mysql_python)