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

运行得到:

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

相关推荐
HyperAI超神经2 分钟前
OmniGen2 多模态推理×自我纠正双引擎,引领图像生成新范式;95 万分类标签!TreeOfLife-200M 解锁物种认知新维度
人工智能·数据挖掘·数据集·图像生成·医疗健康·在线教程·数学代码
开开心心_Every14 分钟前
便捷的电脑自动关机辅助工具
开发语言·人工智能·pdf·c#·电脑·音视频·sublime text
霖001 小时前
C++学习笔记三
运维·开发语言·c++·笔记·学习·fpga开发
上单带刀不带妹2 小时前
JavaScript中的Request详解:掌握Fetch API与XMLHttpRequest
开发语言·前端·javascript·ecmascript
小白学大数据2 小时前
Python爬取闲鱼价格趋势并可视化分析
开发语言·python
ningmengjing_2 小时前
在 PyCharm 中安装并配置 Node.js 的指南
开发语言·javascript·ecmascript
晓13132 小时前
JavaScript基础篇——第五章 对象(最终篇)
开发语言·前端·javascript
LjQ20403 小时前
Java的一课一得
java·开发语言·后端·web
阿蒙Amon3 小时前
C#正则表达式全面详解:从基础到高级应用
开发语言·正则表达式·c#
CHANG_THE_WORLD4 小时前
「macOS 系统字体收集器 (C++17 实现)」
开发语言·c++·macos