01原理
朴素贝叶斯法是基于贝叶斯定理与特征条件独立加设的分类方法,它是机器学习中应用最为广泛的分类算法之一。
朴素贝叶斯方法虽然分类效果比贝叶斯算法低,但是简化了其在实际应用场景中的复杂性,相当于是贝叶斯算法的简化版。
它的算法核心为如下的贝叶斯公式:
其中P(X)为事件X发生的概率,P(Y)为事件Y发生的概率,P(X|Y)为在事件Y发生的概率下事件X发生的概率,P(Y|X)为在事件X发生的概率下事件Y发生的概率。
02搭建模型
对肿瘤性质的判断,传统方法为医生根据肿瘤的几十个指标进行判断,这种方法过于依赖医生个人经验且效率较低,而通过机器学习搭建好模型,则可以快速对肿瘤进行预判。
首先读取数据进行查看。
# 读取数据 import pandas as pd df = pd.read_excel('肿瘤数据.xlsx')
开始设置特征变量和目标变量。
# 划分特征变量、目标变量 X = df.drop(columns='肿瘤性质') Y = df['肿瘤性质']
对数据集进行划分,其中20%的数据为测试集,80%的数据为训练集。
from sklearn.model_selection import train_test_split X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_s
现在对已经划分好的数据集进行训练。
# 搭建模型进行训练 from sklearn.naive_bayes import GaussianNB model = GaussianNB() model.fit(X_train,Y_train)
对模型用测试集进行测试
Y_pred = model.predict(X_test)
查看一下预测的准确度。
from sklearn.metrics import accuracy_score score = accuracy_score(Y_pred,Y_test)
预测准确度为:
03模型评估
模型搭建好后,我们还需要对其进行评估,之前我们的文章介绍了ROC曲线和KS曲线两种对模型评估的方式,有兴趣的读者可以看看这篇文章实战案例|ROC曲线与KS曲线评估模型~。
此次我们选取ROC曲线作为评估方法。
# 绘制ROC曲线 from sklearn.metrics import roc_curve Y_pred_proba = model.predict_proba(X_test) fpr,tpr,thres = roc_curve(Y_test,Y_pred_proba[:,1]) data = pd.DataFrame() data['阈值'] = list(thres) data['假警报率'] = list(fpr) data['命中率'] = list(tpr) data.head(10) import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei'] plt.plot(fpr,tpr) plt.title('ROC曲线') plt.xlabel('FPR') plt.ylabel('TPR') plt.show()
志斌换了一种绘制方式,重新绘制ROC曲线。
# 绘制ROC曲线 from sklearn.metrics import roc_curve Y_pred_proba = model.predict_proba(X_test) fpr,tpr,thres = roc_curve(Y_test,Y_pred_proba[:,1]) import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei'] plt.plot(fpr,tpr) plt.title('ROC曲线') plt.xlabel('FPR') plt.ylabel('TPR') plt.show()
计算ROC曲线的AUC值为0.988,看来模型很不错。
# 计算AUC值 from sklearn.metrics import roc_auc_score score = roc_auc_score(Y_test,Y_pred_proba[:,1])
计算各个变量的影响程度,看看那个特征变量对模型的影响程度更高。
# 计算AUC值 features = X.columns importances = model.feature_importances_ a = pd.DataFrame() a['名称'] = features a['重要性'] = importances a.sort_values('重要性')
我们发现最大半径对模型的影响程度最高。
04小结
- 本文介绍了朴素贝叶斯方法的原理,并用肿瘤预测模型教大家如何搭建使用该模型。
- 本文仅供学习,不做它用。