用朴素贝叶斯分类模型判断病人是否感染幽门螺杆菌(Python实现)

注:如果您需要本文的数据集,请私信我的csdn账户

一.算法说明

朴素贝叶斯是贝叶斯模型中最简单的一种,其核心算法是贝叶斯公式。

 朴素贝叶斯分类模型将问题分为特征变量构成的向量和目标变量构成的向量,假设问题的特征变量之间是相互独立的。

假设问题的特征向量为X = {x1,x2,...,xn},x1,x2,...,xn之间相互独立,那么

 其中p(x)是常数,先验概率p(y)可以通过训练集中每类样本所占比例进行估计。给定Y=y,由朴素贝叶斯分类得到y的后验概率:

 

图1:朴素贝叶斯分类模型流程图 

由于朴素贝叶斯在应用过程中把数据集中的特征看成是相互独立的,而不需要考虑特征间的关联关系,因此具有运算速度快的优点。但与其他机器学习模型相比,贝叶斯模型的泛化能力稍弱。

 二.案例

 现有数据集病人指标情况(胃部).xlsx,该数据集有6个特征变量,目标变量为二分类变量:1:感染幽门螺杆菌或0:未感染幽门螺杆菌。

本文用jupyter notebook来读取数据,将20%的数据作为测试集,并搭建朴素贝叶斯模型,最后进行预测和评估。

1.读取数据

import pandas as pd
df = pd.read_excel('病人指标情况(胃部).xlsx')
df.head()

 图2:前5行数据

2.划分训练集和测试集(训练集占80%,测试集占20%)

X = df.drop(columns='幽门螺杆菌感染情况') 
y = df['幽门螺杆菌感染情况']
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)

3.搭建模型

from sklearn.naive_bayes import GaussianNB
nb_clf = GaussianNB()  # 高斯朴素贝叶斯模型
nb_clf.fit(X_train,y_train)

4.模型预测:预测如下6个指标的病人是否已感染幽门螺杆菌

 结果:未感染

5.模型评估

y_pred = nb_clf.predict(X_test)
from sklearn.metrics import accuracy_score
score = accuracy_score(y_pred,y_test)
score

通过预测值和实际值的比较,得到预测准确率为0.95,说明预测效果好。

完整代码

import pandas as pd
df = pd.read_excel('病人指标情况(胃部).xlsx')
df.head()

X = df.drop(columns='幽门螺杆菌感染情况') 
y = df['幽门螺杆菌感染情况']
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_clf = GaussianNB()  # 高斯朴素贝叶斯模型
nb_clf.fit(X_train,y_train)

print(nb_clf.predict([[0.1864,188,0.02031,29.17,888.7,30]]))

y_pred = nb_clf.predict(X_test)
from sklearn.metrics import accuracy_score
score = accuracy_score(y_pred,y_test)
score

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值