朴素贝叶斯分类器是一种基于概率统计的简单但强大的机器学习算法。它假设特征之间是相互独立的(“朴素”),尽管在现实世界中这通常不成立,但在许多情况下这种简化假设仍能提供良好的性能。
它的优点包括:
在数据分析中,类别属性(也称为分类变量或名义变量)是表示非数值的数据,如性别、颜色、职业等。对这些类别属性进行编码是为了将它们转换为数值形式,以便计算机能够理解和处理。这种编码过程有以下几个重要作用:
常见的类别编码方法包括:
1、读取数据
- #导入数据
- import pandas as pd
- data = pd.read_excel('mushrooms.xls')
导入数据概述:
2、将各属性值进行编号
- #将各属性值进行编号
- columns = data.columns[1:]
- for i in columns:
- data[i] = pd.factorize(data[i])[0]
- #将 类型 转化为0,1
- from sklearn.preprocessing import LabelEncoder
- le = LabelEncoder()
- label = le.fit_transform(data['类型'])
- data['类型'] = label
对属性编号:(局部数据)
将类型转换为01:(局部数据)
3、划分数据集、训练集
- #划分数据集、训练集
- from sklearn import model_selection
- x_train, x_test, y_train, y_test = model_selection.train_test_split(data[columns], data['类型'],test_size=0.3,random_state=1)
4、训练模型
- #训练模型
- from sklearn.naive_bayes import MultinomialNB
- mnb = MultinomialNB()
- mnb.fit(x_train,y_train)
- mnb_pred = mnb.predict(x_test)
训练的划分结果(部分):
5、输出混淆矩阵
- #混淆矩阵
- cm = pd.crosstab(mnb_pred, y_test)
6、输出模型准确率;精确度、召回率和F1分数等信息
- #输出模型准确率;精确度、召回率和F1分数等信息
- from sklearn import metrics
- print('模型的准确率为:',metrics.accuracy_score(y_test, mnb_pred))
- print('模型评估报告\n',metrics.classification_report(y_test, mnb_pred))
7、计算AUC得分
- #预测概率
- y_predict_proba = mnb.predict_proba(x_test)
- #返回值是一个元组,分别是,精准率,召回率,阈值
- from sklearn.metrics import roc_curve
- fpr, tpr, thretholds = roc_curve(y_test, y_predict_proba[:,1])
- #计算AUC得分
- from sklearn.metrics import auc
- AUC = auc(fpr,tpr)
8、绘制ROC图
- #绘制ROC图
- import matplotlib
- import matplotlib.pyplot as plt
- matplotlib.rc('axes', facecolor = 'white')
- matplotlib.rc('figure', figsize = (6, 4))
- matplotlib.rc('axes', grid = False)
- plt.plot(fpr,tpr,'*:r')
- plt.title('ROC plot')
- plt.xlabel('FPR')
- plt.ylabel('TPR')
- plt.savefig('ROC plot.png')