实现功能:

python机器学习-朴素贝叶斯(Naive Bayes)模型建立及评估。

实现代码:

# 导入需要的库
from warnings import simplefilter
simplefilter(action='ignore', category=FutureWarning)
import pandas as pd
from sklearn.model_selection import train_test_split
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn import metrics
from sklearn.metrics import roc_curve, auc
from sklearn.naive_bayes import GaussianNB# =============读取数据===========
def Read_data(file):dt = pd.read_csv(file)dt.columns = ['age', 'sex', 'chest_pain_type', 'resting_blood_pressure', 'cholesterol','fasting_blood_sugar', 'rest_ecg', 'max_heart_rate_achieved','exercise_induced_angina','st_depression', 'st_slope', 'num_major_vessels', 'thalassemia', 'target']data =dtreturn data# ===========数据清洗==============
def data_clean(data):# 重复值处理print('存在' if any(data.duplicated()) else '不存在', '重复观测值')data.drop_duplicates()# 缺失值处理print('不存在' if any(data.isnull()) else '存在', '缺失值')data.dropna()  # 直接删除记录data.fillna(method='ffill')  # 前向填充data.fillna(method='bfill')  # 后向填充data.fillna(value=2)  # 值填充data.fillna(value={'resting_blood_pressure': data['resting_blood_pressure'].mean()})  # 统计值填充# 异常值处理data1 = data['resting_blood_pressure']# 标准差监测xmean = data1.mean()xstd = data1.std()print('存在' if any(data1 > xmean + 2 * xstd) else '不存在', '上限异常值')print('存在' if any(data1 < xmean - 2 * xstd) else '不存在', '下限异常值')# 箱线图监测q1 = data1.quantile(0.25)q3 = data1.quantile(0.75)up = q3 + 1.5 * (q3 - q1)dw = q1 - 1.5 * (q3 - q1)print('存在' if any(data1 > up) else '不存在', '上限异常值')print('存在' if any(data1 < dw) else '不存在', '下限异常值')data1[data1 > up] = data1[data1 < up].max()data1[data1 < dw] = data1[data1 > dw].min()return data#==============数据编码=============
def data_encoding(data):data = data[["age", 'sex', "chest_pain_type", "resting_blood_pressure", "cholesterol","fasting_blood_sugar", "rest_ecg","max_heart_rate_achieved", "exercise_induced_angina","st_depression", "st_slope", "num_major_vessels","thalassemia","target"]]Discretefeature=['sex',"chest_pain_type", "fasting_blood_sugar", "rest_ecg","exercise_induced_angina",  "st_slope", "thalassemia"]Continuousfeature=["age", "resting_blood_pressure", "cholesterol","max_heart_rate_achieved","st_depression","num_major_vessels"]df = pd.get_dummies(data,columns=Discretefeature)df[Continuousfeature]=(df[Continuousfeature]-df[Continuousfeature].mean())/(df[Continuousfeature].std())df["target"]=data[["target"]]return df#=============数据集划分==============
def data_partition(data):# 1.4查看样本是否平衡print(data["target"].value_counts())# X提取变量特征;Y提取目标变量X = data.drop('target', axis=1)y = data['target']X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.2,random_state=10)feature=list(X.columns)return X_train, y_train, X_test, y_test#===========绘制ROC曲线================
def Draw_ROC(list1,list2):fpr_model,tpr_model,thresholds=roc_curve(list1,list2,pos_label=1)roc_auc_model=auc(fpr_model,tpr_model)font = {'family': 'Times New Roman','size': 12,}sns.set(font_scale=1.2)plt.rc('font',family='Times New Roman')plt.plot(fpr_model,tpr_model,'blue',label='AUC = %0.2f'% roc_auc_model)plt.legend(loc='lower right',fontsize = 12)plt.plot([0,1],[0,1],'r--')plt.ylabel('True Positive Rate',fontsize = 14)plt.xlabel('Flase Positive Rate',fontsize = 14)plt.show()return# =============朴素贝叶斯====================
def NB(X_train, y_train, X_test, y_test):GNB1 = GaussianNB()GNB1.fit(X_train, y_train)print("Accuracy on training set: {:.3f}".format(GNB1.score(X_train, y_train)))print("Accuracy on test set: {:.3f}".format(GNB1.score(X_test, y_test)))predict_target=GNB1.predict(X_test)predict_target_prob=GNB1.predict_proba(X_test)  # 输出分类概率predict_target_prob_gnb = predict_target_prob[:, 1]print(sum(predict_target==y_test))print(metrics.classification_report(y_test,predict_target))print(metrics.confusion_matrix(y_test, predict_target))return list(y_test), list(predict_target_prob_gnb)#============主函数==============
if __name__=="__main__":data1=Read_data("F:\数据杂坛\\0504\heartdisease\Heart-Disease-Data-Set-main\\UCI Heart Disease Dataset.csv")data1=data_clean(data1)data2=data_encoding(data1)X_train, y_train, X_test, y_test= data_partition(data2)y_test, predict_target_prob_gnb=NB(X_train, y_train, X_test, y_test)Draw_ROC(y_test,predict_target_prob_gnb)

实现效果:

喜欢记得点赞,在看,收藏,

关注V订阅号:数据杂坛,获取数据集,完整代码和效果,将持续更新!

python机器学习-朴素贝叶斯(Naive Bayes)模型建立及评估(完整代码+实现效果)相关推荐

  1. 机器学习一:朴素贝叶斯(Naive Bayes)

    朴素贝叶斯 Naive Bayes 1. Introduction 1.1 离散属性 1.2 连续属性 1.2.1 Gaussian Naive Bayes 1.2.2 Multinomial Nai ...

  2. 机器学习:基于朴素贝叶斯(Naive Bayes)的分类预测

    目录 一.简介和环境准备 简介: 环境: 二.实战演练 2.1使用葡萄(Wine)数据集,进行贝叶斯分类 1.数据导入 2.模型训练 3.模型预测 2.2模拟离散数据集–贝叶斯分类 1.数据导入.分析 ...

  3. 朴素贝叶斯(naive bayes)

    朴素贝叶斯(naive bayes) 标签: Python 机器学习 主要參考资料:<机器学习实战><统计学习方法> 1.朴素贝叶斯分类原理 朴素贝叶斯法是基于贝叶斯定理和特征 ...

  4. 【手写算法实现】 之 朴素贝叶斯 Naive Bayes 篇

    [手写算法实现] 之 朴素贝叶斯 Naive Bayes 篇 朴素贝叶斯模型(naive bayes)属于分类模型,也是最为简单的概率图模型,对于之后理解HMM.CRF等模型,大有裨益.这里手写算法介 ...

  5. 机器学习笔记——朴素贝叶斯(Naive Bayes)

    1贝叶斯算法简介 贝叶斯分类算法是统计学的一种分类方法,它是一类利用概率统计知识进行分类的算法.在许多场合,朴素贝叶斯(Naïve Bayes,NB)分类算法可以与决策树和神经网络分类算法相媲美,该算 ...

  6. 西瓜书+实战+吴恩达机器学习(八)监督学习之朴素贝叶斯 Naive Bayes

    文章目录 0. 前言 1. 朴素贝叶斯算法 2. 半朴素贝叶斯算法 2.1. ODE 2.2. SPODE 2.3. TAN 2.4. AODE 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔 ...

  7. 机器学习算法: 朴素贝叶斯(Naive Bayes)

    朴素贝叶斯的介绍 朴素贝叶斯算法(Naive Bayes, NB) 是应用最为广泛的分类算法之一.它是基于贝叶斯定义和特征条件独立假设的分类器方法.由于朴素贝叶斯法基于贝叶斯公式计算得到,有着坚实的数 ...

  8. 机器学习(十)分类算法之朴素贝叶斯(Naive Bayes)算法

    贝叶斯定理 首先我们来了解一下贝叶斯定理: 贝叶斯定理是用来做什么的?简单说,概率预测:某个条件下,一件事发生的概率是多大? 了解一下公式 事件B发生的条件下,事件A发生的概率为: 这里写图片描述 同 ...

  9. 【机器学习】朴素贝叶斯(Naive Bayes)

    在所有的机器学习分类算法中,朴素贝叶斯和其他绝大多数的分类算法都不同.对于大多数的分类算法,比如决策树,KNN,逻辑回归,支持向量机等,他们都是判别方法,也就是直接学习出特征输出Y和特征X之间的关系, ...

最新文章

  1. Ovirt 安装部署方法
  2. hdu4756 最小树+树形dp
  3. JQuery的摸索之路(二比较)
  4. 在现代引擎游戏中使用正确的渲染打光流程
  5. 即构科技金健忠:回顾20年音视频技术演进
  6. 10 文件无效_新手必看!10个CAD常见问题解决技巧
  7. vscode 调试 C++/JavaScript
  8. 华为云落地敏捷+DevOps,助力大企业高效能
  9. 有一天我突然接到他的电话
  10. 【Flask】flask不能访问静态文件问题
  11. 开启WIN10的卓越性能模式
  12. 华为2019数字芯片岗笔试解析(多选部分)
  13. Windows 计算机的快捷键大全
  14. 是妄言还是实话 云电脑将代替传统PC?
  15. git status 命令详解
  16. LOJ.6073.[2017山东一轮集训Day5]距离(可持久化线段树 树链剖分)
  17. 带pcb板的c语言实验报告,pcb实验报告.doc
  18. 超级壁纸android,【教程】MIUI最新超级壁纸安卓全机型安装指南
  19. Opencascade可视化--视图渲染流程分析
  20. C语言学习笔记w3d1

热门文章

  1. 《花开半夏》--3 对峙(1)
  2. layui删除确认,提示创
  3. 二本的2017秋招面经
  4. impala-shell基本命令
  5. InSAR学习笔记之ISCE 软件安装
  6. 瑶瑶带你玩激光坦克(暴力)
  7. 免备案服务器要怎么选择?
  8. 机房环控漏水监控系统如何检测机房漏水
  9. NodeList和HTMLCollection的区别
  10. 常见中文乱码问题以及解决方案(web版)