专注网站基础优化,成都网页制作推广,安徽省建设信息网站,营销策划公司名字贝叶斯分类器 目录 贝叶斯分类器1 贝叶斯分类器1.1 概念1.2算法理解1.3 算法导入1.4 函数 2 混淆矩阵可视化2.1 概念2.2 理解2.3 函数导入2.4 函数及参数2.5 绘制函数 3 实际预测3.1 数据及理解3.2 代码测试 1 贝叶斯分类器
1.1 概念
贝叶斯分类器是基于贝叶斯定理构建的分类…贝叶斯分类器 目录 贝叶斯分类器1 贝叶斯分类器1.1 概念1.2算法理解1.3 算法导入1.4 函数 2 混淆矩阵可视化2.1 概念2.2 理解2.3 函数导入2.4 函数及参数2.5 绘制函数 3 实际预测3.1 数据及理解3.2 代码测试 1 贝叶斯分类器
1.1 概念
贝叶斯分类器是基于贝叶斯定理构建的分类方法它通过计算后验概率来对数据进行分类。
1.2算法理解 P(A|B) 是在事件B发生的条件下事件A发生的概率称为A的后验概率。P(B|A) 是在事件A发生的条件下事件B发生的概率。P(A)是事件A发生的概率称为A的先验概率。P(B)是事件B发生的概率。 现在我们使用朴素贝叶斯牙类器莱计算给定特征值下每个类别的后验率: P(D0|A1,B1,C0)P(D0)P(A1ID0)P(B1|D0)P(C0|D0)0.50.6670.3330.6670.08335583549429845 P(D1|A1,B1,C0)P(D1)P(A1|D1)P(B1|D1)P(C0ID1)0.50.3330.6670.3330.037499999999999996
1.3 算法导入
from sklearn.naive_bayes import MultinomialNB1.4 函数
MultinomialNB()fit(x_tr,y_tr)predict(x_tr)
2 混淆矩阵可视化 2.1 概念
混淆矩阵Confusion Matrix也称为错误矩阵是一种特别适用于监督学习的评估分类模型性能的工具尤其是在分类问题中。混淆矩阵展示了实际类别与模型预测类别之间的关系。
2.2 理解 TPTrue Positive正确预测到的正类样本数。FNFalse Negative实际为正类但预测为负类的样本数。FPFalse Positive实际为负类但预测为正类的样本数。TNTrue Negative正确预测到的负类样本数。
基于混淆矩阵可以计算出以下几种性能指标
准确率Accuracy(TP TN)/(TP TN FP FN)精确率PrecisionTP/(TP FP)召回率Recall或真正例率True Positive Rate, TPRTP/(TP FN)F1分数F1 Score 2 *(Precision * Recall)/(Precision Recall)假正例率False Positive Rate, FPRFP/(FP TN)
2.3 函数导入
from sklearn.metrics import confusion_matrix2.4 函数及参数
metrics.classification_report(y_te,te_pr,digits6)
y_te已知道结果类别te_pr训练模型预测的结果类别digits6结果保留的小数点
2.5 绘制函数
代码展示
def cm_plot(y,y_pr):cm confusion_matrix(y,y_pr)plt.matshow(cm,cmapplt.cm.Blues)plt.colorbar()for x in range(len(cm)):for y in range(len(cm)):plt.annotate(cm[x,y],xy(y,x),horizontalalignmentcenter,verticalalignmentcenter)plt.ylabel(TRUE label)plt.xlabel(PREDICTED label)return plt3 实际预测 3.1 数据及理解
第一列为次序需要删除最后一列为结果类别其他为特征数据。
3.2 代码测试
代码展示
import pandas as pd
from sklearn.naive_bayes import MultinomialNB
import matplotlib.pyplot as plt
from sklearn.metrics import confusion_matrix
from sklearn.model_selection import train_test_split
from sklearn import metricsdef cm_plot(y,y_pr):cm confusion_matrix(y,y_pr)plt.matshow(cm,cmapplt.cm.Blues)plt.colorbar()for x in range(len(cm)):for y in range(len(cm)):plt.annotate(cm[x,y],xy(y,x),horizontalalignmentcenter,verticalalignmentcenter)plt.ylabel(TRUE label)plt.xlabel(PREDICTED label)return pltdata pd.read_csv(iris.csv)
data data.drop([1],axis1)
x data.drop([0],axis1)
y data[0]x_tr,x_te,y_tr,y_te \train_test_split(x, y, test_size0.2,random_state0)by MultinomialNB()
by.fit(x_tr,y_tr)
tr_pr by.predict(x_tr)
cm_plot(tr_pr,y_tr).show()
te_pr by.predict(x_te)
cm_plot(te_pr,y_te).show()
print(metrics.classification_report(y_te,te_pr,digits6))
运行结果