R语言数据挖掘-关联规则挖掘(1)

一、分析目的和数据集描述

要分析的数据是美国一区域的保险费支出的历史数据。保险费用数据表的每列分别为年龄、性别、体重指数、孩子数量、是否吸烟、所在区域、保险收费。

本文的主要目的是分析在年龄、性别、体重指数、孩子数量、是否吸烟、所在区域中这些因素中,哪些因素对保险费支出影响最大,这些因素中哪些因素与保险费用的关联最大。

分析影响保险费支出的具体因素,本文用到了R语言的数据挖掘-关联规则挖掘Apriori算法。

具体使用和详细用法如下:

二、导入数据集

df<-read.csv('f:/桌面/insurance.csv')

head(df)

复制代码
head(df)
  age    sex   bmi children smoker    region charges
1  19 female 27.90        0    yes southwest   16885
2  18   male 33.77        1     no southeast    1726
3  28   male 33.00        3     no southeast    4449
4  33   male 22.70        0     no northwest   21984
5  32   male 28.88        0     no northwest    3867
6  31 female 25.74        0     no southeast    3757

三、导入关联规则挖掘用到的分析程序包

library(arules) #用于数据关联规则挖掘

library(arulesViz) #关联规则挖掘的可视化程序包

library(dplyr) #用于数据处理的分析包,我们将使用里面的管道函数%>%

library(ggplot2)

四、查看数据集

复制代码
summary(df)

查看体重指数的分布情况,使用直方图:

ggplot(df,aes(x=bmi))+

geom_histogram(binwidth=5,fill='lightblue',colour='black')

因为要分析的数据集无缺失值,下一步就是要对数据各变量转换为因子型,也是是规则关联函数

apriori()要求的。

五、将数据集的变量转换为因子型

df<-df %>% mutate(age=as.factor(cut(age,breaks = c(0,25,50,75,100)))) %>%

mutate(sex=as.factor(sex)) %>% mutate(bmi=as.factor(cut(bmi,breaks = c(0,15,30,45,60,75)))) %>%

mutate(children=as.factor(children)) %>% mutate(smoker=as.factor(smoker)) %>%

mutate(region=as.factor(region)) %>% mutate(charges=as.factor(cut(charges,breaks = c(0,13000,26000,39000,65000))))

在这里用到了管道函数,对年龄、健康指数、保险费用按区间分组,把年龄分为4组,健康指数分为5组,保险费支出分为了4组,然后对分组后的变量使用as.factor()转换为因子型变量。

六、对保险费用数据集进行关联分析

rules<-apriori(df,parameter = list(supp=0.1,conf=0.8))
summary(rules)

运行得到了各规则的描述性统计量,共生成了80条规则。支持度为0.1,置信度为0.8.

查看关联分析结果:

options(digits=4)

inspect(head(rules,by='lift'))

运行得到了按提升值排序后的6条规则。

例如第一条年龄在0到25岁之间,无小孩,不吸烟的家庭关联最低程度的保险费用支出的支持度为0.1121,置信度94.34%。

关联规则分析可视化

plot(rules)

七、指定后项集的关联挖掘分析

1、后项集指定为保险费用支出charges=(39000,65000],即分析关联最高级别的保险费用支出的影响因素有哪些。

rules_rhs_highrank<-apriori(df,parameter = list(supp=0.02,conf=0.5),

appearance = list(rhs=c('charges=(3.9e+04,6.5e+04]')),control=list(verbose=F))

inspect(head(rules_rhs_highrank,by='lift'))

查看分析结果:

从运行结果可以看到:年龄较大,体重较重,吸烟等因素与保险费用支出较高支持相关联。

inspect(head(rules_rhs_highrank[!is.redundant(rules_rhs_highrank)],by='lift'))

去除规则冗余后的结果如下:

2、后项集指定为保险费用支出charges=(0,13000],即分析关联最低级别的保险费用支出的影响因素有哪些。

rules_rhs_lowrank<-apriori(df,parameter = list(supp=0.1,conf=0.5),

appearance = list(rhs=c('charges=(0,1.3e+04]')),control=list(verbose=F))

inspect(head(rules_rhs_lowrank,by='lift'))

运行得到:

从结果可以看到,年龄较小,无孩子,不吸烟,是女性的保险费用支出较少。

相关推荐
Mr -老鬼几秒前
UpdateEC - EasyClick 项目热更新系统(Rust构建)
开发语言·后端·rust
码农幻想梦3 分钟前
KY221 打印日期
开发语言·模拟
爱上妖精的尾巴7 分钟前
7-13 WPS JS宏 this 用构造函数自定义类-2,调用内部对象必须用this
开发语言·javascript·wps·jsa
wm10438 分钟前
代码随想录第十天 栈和队列
开发语言·python
Java后端的Ai之路18 分钟前
【Java教程】- 并发编程核心知识解读
java·开发语言·并发编程
Sheep Shaun24 分钟前
C++11核心特性详解:从右值引用到现代C++编程
开发语言·数据结构·c++·算法
Dontla28 分钟前
Mybatis Introduction (Java ORM Framework)
java·开发语言·mybatis
信码由缰30 分钟前
JExten:基于Java模块系统(JPMS)构建健壮的插件架构
java·开发语言·架构
Dxy123931021633 分钟前
Python使用Playwright入门教程:从环境搭建到实战应用
开发语言·python·playwright
云深麋鹿40 分钟前
三.栈和队列
开发语言·数据结构·c++·算法