朴素贝叶斯在一些情况下分类效果还是不错的,一般常用于文本分析,如垃圾邮件分类等。
本文不介绍朴素贝叶斯算法的理论部分,直接给出一个数据集的案例分析。
数据集由几个医学预测变量和一个目标变量组成Outcome。预测变量包括患者的怀孕次数,BMI,胰岛素水平,年龄等。
- 数据集的目的是基于数据集中包括的某些诊断测量来诊断性地预测患者是否患有糖尿病。从较大的数据库中选择这些实例存在一些限制。特别是,这里的所有患者都是至少21岁的皮马印第安人遗产的女性。
本文基于朴素贝叶斯算法,使用R语言建模
目的是建立一个预测模型,以预测新科目的糖尿病。
数据将分为训练和测试数据集75/25分流比。
评估将在测试数据集上进行。
其中,将结果变量更改为一个因子:真(有糖尿病)和假(没有糖尿病)。
- 先加载要使用的包,若包未下载,使用
install.packages()
下载即可。
library(tidyverse)
library(ggplot2)
library(caret)
library(caretEnsemble)
library(psych)
library(Amelia)
library(mice)
library(GGally)
library(rpart)
- 读入数据,路径自设,此处省略
Xdata<- read.csv("....../diabetes.csv")
#将结果变量Outcome转化为因子变量
Xdata$Outcome <- factor(Xdata$Outcome, levels = c(0,1), labels = c("False", "True"))
-- Attaching packages --------------------------------------- tidyverse 1.2.1 --
√ ggplot2 3.1.0 √ purrr 0.2.5
√ tibble 2.1.1 √ dplyr 0.8.0.1
√ tidyr 0.8.3 √ stringr 1.3.1
√ readr 1.3.1 √ forcats 0.3.0
-- Conflicts ------------------------------------------ tidyverse_conflicts() --
x dplyr::filter() masks stats::filter()
x dplyr::lag() masks stats::lag()
载入需要的程辑包:lattice
载入程辑包:‘caret’
The following object is masked from ‘package:purrr’:
lift
Warning message:
程辑包‘caret’是用R版本3.5.3 来建造的
载入程辑包:‘caretEnsemble’
The following object is masked from ‘package:ggplot2’:
autoplot
Warning message:
程辑包‘caretEnsemble’是用R版本3.5.3 来建造的
载入程辑包:‘psych’
The following objects are masked from ‘package:ggplot2’:
%+%, alpha
Warning message:
程辑包‘psych’是用R版本3.5.3 来建造的
载入需要的程辑包:Rcpp
##
## Amelia II: Multiple Imputation
## (Version 1.7.5, built: 2018-05-07)
## Copyright (C) 2005-2019 James Honaker, Gary King and Matthew Blackwell
## Refer to http://gking.harvard.edu/amelia/ for more information
##
Warning message:
程辑包‘Amelia’是用R版本3.5.3 来建造的
载入程辑包:‘mice’
The following object is masked from ‘package:tidyr’:
complete
The following objects are masked from ‘package:base’:
cbind, r