Python数据分析(5)朴素贝叶斯模型

前言

  • 蛋肥使用乳腺癌数据集,练习朴素贝叶斯模型,根据特征数据对肿瘤的良性、恶性进行预测。

准备

时间:2021/08/09
系统环境:Windows 10
所用工具:Jupyter Notebook\Python 3.0
涉及的库:pandas\train_test_split\GaussianNB\accuracy_score

搭建朴素贝叶斯模型模型

参考资料
阿里云天池-威斯康星乳腺癌数据分析及自动诊断

#读取数据集
import pandas as pd
df=pd.read_csv(r"C:\Users\Archer\Desktop\bc_data.csv")
#将diagnosis转化为数值
df=df.replace({"diagnosis":{"M":1,"B":2}})

#选取自变量、因变量
X=df.drop(columns=["diagnosis","id"])
Y=df["diagnosis"]

#划分训练集、测试集,测试集占20%
from sklearn.model_selection import train_test_split
X_train,X_test,Y_train,Y_test=train_test_split(X,Y,test_size=0.2,random_state=1)

#搭建朴素贝叶斯模型
from sklearn.naive_bayes import GaussianNB
nb=GaussianNB()
nb.fit(X_train,Y_train)

获取预测准确度

蛋肥想法:通过测试集数据,检验预测准确度,测得准确度为94.74%。

#预测结果评分
from sklearn.metrics import accuracy_score
Y_pred=nb.predict(X_test)
score=accuracy_score(Y_pred,Y_test)
print(str(score))

获取预测概率

#预测概率,classes_为每个位置的概率分别对应的类别标签
Y_pred_=nb.predict_proba(X_test)
data=pd.DataFrame(Y_pred_,columns=list(nb.classes_))
data.head()

总结

  • 朴素贝叶斯模型在应用过程中会把数据集中的特征看成是相互独立的,不考虑特征间的关联关系,运算速度较快。
  • 朴素贝叶斯模型的泛化能力稍弱,不过当样本及特征的数量增加时,其预测效果也是不错的。

你可能感兴趣的:(Python数据分析(5)朴素贝叶斯模型)