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'))

运行得到:

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

相关推荐
大鹏说大话10 分钟前
美业微信会员系统哪个好
开发语言
程序员与背包客_CoderZ1 小时前
高性能分布式KV存储引擎RocksDB入门与C/C++编码实战
c语言·开发语言·数据库·c++·分布式·分布式数据库·rocksdb
钱栈up1 小时前
Mac 开发机一键发版不用切环境:我这样改造了团队的后端部署脚本Maven编译卡住20分钟?我靠两步定位到2处隐蔽编译错误
开发语言·python·macos
william_yangshun1 小时前
【大模型部署实战】kimi-k3-in-c 中文版:用 176KB 纯 C99 引擎在 CPU 上跑 Kimi K3 上手指南
c语言·开发语言
Sagittarius_A*1 小时前
Burst Lab | PHP 审计 14|反序列化(四):字符串逃逸与绕过技巧
开发语言·安全·php·web·反序列化
2601_950760791 小时前
树突状细胞亚群的分类、标志物与功能特征
人工智能·分类·数据挖掘·蛋白
名字还没想好☜1 小时前
Go 用 slices/maps 标准库泛型函数:告别手写 Contains、Sort、去重(Go 1.21)
开发语言·后端·算法·golang·go
淼澄研学2 小时前
Python实战:基于LangChain与Chroma构建企业级RAG知识库问答系统
开发语言·python·langchain
4311媒体网2 小时前
帝国CMS网站自定义搭建技巧
服务器·开发语言·前端
布莱克6052 小时前
C++拷贝构造与拷贝赋值运算符的区别详解
开发语言·c++