物联网智能信息处理

物联网智能信息处理

课程名称:物联网智能信息处理
实验项目:数据预处理,C4.5分类器,关联规则,员工离职数据

实验一

  • 在data文件夹中找到玻璃数据集g1ass.arff,将其导入到Explorer界面,在预处理面板中查看RI属性直方图。

    • 首先安装weka

    weka,Rstudio,R软件,员工数据集网盘资源提取码:bngo

    • 安装完成后,可生成如上文件
    • 查看data文件夹,里面是weka自带的数据集
    • 完成后打开weka,进入探索者页面
    • Openfile打开文件,选怎data文件夹,选择玻璃数据集
    • 加载数据后如下
  • 将无监督离散化过凌器应用到等宽和等频两种离散化方法,即首先保持weka. fi1ters.unsupervised attribute.Discretize的全部默认选型默认值不变,然后将useEqualFrequency选项值更改为True 。

    图2.1 过滤器
    图2.2 等宽离散化方法
    图2.3 等频离散化设置
    图2.4 等频离散化
  • 比较得到的直方图,你观察到什么

    图2.5 等宽离散化直方图
    图2.6 等频离散化直方图
    • 答:等宽离散化(或称为等宽分箱)经常造成实例分布不均匀,有的间隔区域内(箱内)包含很多个实例,但有的却很少甚至没有。这样会降低属性辅助构建较好决策结果的能力。通常也允许不同大小的间隔区域存在,从而使每个区间内的训练实例数量相等,这样的效果会好一些,该方法称为等频离散化(或称为等频分箱),其方法是:根据数轴上实例样木的分布将属性区间分隔为预先设定数量的区间。如果观察结果区间的直方图,会发现其形状平直。等频分箱与朴素贝叶斯学习方案一起应用时效果较好。但是,等频分箱也没有注意实例的类别属性,仍有可能导致不好的区间划分。例如,如果一个区域内的全部实例都属于—个类别,而下一个区域内除了第一个实例外都属于前一个类别,其余的实例都属于另一 个类别,那么,显然将第一个实例包含到前一个区域更为合理。

      等宽离散化数值属性从最小值到最大值之间平均分为十份,因此每一份所包含的实例数量就各不相等;而等频离散化按数值属性的大小顺序将全部实例平均分为十份,每份所包含是实例数量为21~22
  • 在预处理面板中查看Ba属性直方图,等频离散化Ba属性,再检查结果,发现直方图严重偏向一端,也就是根本不等频,这是为什么

    • 仔细观察第一个直方图的标签,其值为(-inf-0.03】,即区间大于负无穷且小于等于0.03。使用数据集编辑器打开离散化前的原始数据集,单击第八列表头,使数据集按照Ba属性进行排序,可以看到,有176个实例的Ba属性值都等于0.0。由于这些值都完全相同,没有办法将它们分开。这就是为什么,上图严重地偏向一端的根本原因。
  • 找到鸢尾花数据集iris. arff,施加有监督的高散化方法wek a.flters. supervised attrlute.Discretize,观察得到的直方图,你认为最有预测的属性是哪个属性?

    图4.1 导入鸢尾花数据集iris. arff
    图4.2 导入后的主界面
    图4.3 导入后的直方图
    图4.4 有监督的高散化方法
    图4.5 有监督的高散化方法直方图
    • 结论:显然,只有petallength(花瓣长)和petalwidth(花瓣宽)最具竞争力,因为它们的每种分类都已经接近为同一种颜色。再经仔细对比发现在前者中,有1个virginica实例错分到versicolor中,有6个实例versicolor错分到virginica中,因此共有7个错分的实例;而后者,只有5个virginica实例错分到versicolor中,有1个versicolor实例错分到virginica 中,因此共有6个错分的实例从而得出结论:离散化后的petalwidth属性最具有预测能力。

实验二

  • 对超市收银台进行关联数据挖掘,加载data目录下的supermarket.arff文件,在Current relation子面板中,观察属性和实例的数量。

  • 查看数据文件supermarket.arff,描述每个实例和属性表示什么?每个属性有几个值?如果顾客没有买这个商品如何表示?
    如图可以看出属性有217个,实例有4627个![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=%3Ccenter%3E%3Cimg%20src%3D%22%20https%3A%2F%2Fimg-blog.csdnimg.cn%2Fdirect%2Fb2b716f1a08c42efb3a73aa0a8113e1c.png&pos_id=img-HcZvjO55 " width=60%>

    • 如图每一行代表一个实例,每一列代表一个属性,如果顾客没有买这个产品,那么在这个属性对应的列中该顾客代表的实例行的一格无数据,如果买了则会显示label为t,每个属性只有两个值,一个为t,一个为空。一下为部分属性的解释
      • grocery misc:杂货
      • baby needs:宝宝用品
      • bread and cake:面包和蛋糕
      • baking needs:烘焙用品
      • coupons:优惠券
      • juice-sat-cord-ms:果汁
      • tea:茶
  • 选择Apriori算法,保持默认选项不变,列出你得到的十条最佳关联规则。
    在这里插入图片描述

  • 规则采用“前件num.1=->结论num.2”的形式表示,前件后面的数字表示有多少个实例满足前件,结论后的数字表示有多少个实例满足整个规则。从你得到的规则得出什么结论,比如:购买biscuits饼干和frozen foods冷冻食品以及fruit水果的顾客,往往total总金额较高还会顺便买些bread和cake蛋糕。

    • 2、购买baking needs烘焙用品和biscuits饼干以及fruit水果的顾客,往往total总金额较高(760),还会顺便买一些bread面包和cake蛋糕
    • 3、购买baking needs烘焙用品和frozen foods冷冻食品以及fruit水果的顾客,往往total总金额较高(770),还会顺便买一些bread面包和cake蛋糕
    • 4、购买party snack foods派对休闲食品和fruit水果以及vegetables蔬菜的顾客,往往total总金额较高(815),还会顺便买一些bread面包和cake蛋糕
    • 5、购买baknig needs烘焙用品和fruit水果的顾客,往往total总金额较高(854),还会顺便买一些bread面包和cake蛋糕
    • 6、购买biscuits饼干和frozen foods冷冻食品以及vegetables蔬菜的顾客,往往total总金额较高(797),还会顺便买一些bread面包和cake蛋糕
    • 7、购买baking needs烘焙用品和biscuits饼干以及vegetables蔬菜的顾客,往往total总金额较高(772),还会顺便买一些bread面包和cake蛋糕
    • 8、购买biscuits饼干和fruit水果的顾客,往往total总金额较高(886),还会顺便买一些bread面包和cake蛋糕
    • 9、购买frozen foods冷冻食品和fruit水果以及vegetables蔬菜的顾客,往往total总金额较高(834),还会顺便买一些bread面包和cake蛋糕
    • 10、购买frozen foods冷冻食品和fruit水果的顾客,往往total总金额较高(969),还会顺便买一些bread面包和cake蛋糕

实验三

  • 首先,打开天气数据集weather.nominal.arff

  • 找到构建决策树的C4.5算法:weka.classifiers.trees.J48

    • 用训练集Use training set,右击结果列表中的trees.J48条目,选择Visualize tree,构建可视化的决策树
  • 加载鸢尾花lris数据

  • 分别用训练集Use training set和十折交叉验证Crs-valdation Folds 10两种方案在数据上评估C4.5,包括正确分类的测试实例和正确分类的比例。\

    测试选项 释义正确分类的测试实例 正确分类比例
    Use training set使用训练集 14798%
    Crs-valdation Folds 10交叉验证(十折) 14496%
    • 从上表的数据可以看到,使用训练集的正确分类所占的比例较高,达到98%。但由于是直接将训练集用于测试,因此结论并不可靠。相反,十折交叉验证将数据集分为10 等份,将其中的1份用于测试,另外9份用于训练,如此依次进行10次训练和评估,显然得到的结论要可靠一些。
  • 右击结果列表中的交叉验证方案trees.48条目,选择Visualize classifier errors,横坐标为真实类别,纵坐标为预测类别,双击散点图中的叉和方形,观察他们所代表的标记。

    • 弹出一个散点图窗口,正确分类的实例标记为小十字,不正确的分类实例标记为小空心方块,如下图所示。
  • 拉动Jitter滑条,观察错分类实例的位置有什么收获

    • 一个小十字并不一定只代表一个实例,一个小空心方块有时也并不仅仅代表一个 错分的实例。如果想看到底有几个实例错分,可以拉动Jitter滑条,会错开一些相互叠加 的实例,便于看清楚到底有多少个错分的实例。另一种办法是单击小空心方块,就会弹出 如下图所示的实例信息,显示每个实例的各属性值以及预测类别和真实类别。

实验四

实验四指导教程参考本分享内容

  • 本次综合实验为员工离职预测分析,可参考附件用R软件分析,首先加载R包,查看员工离职数据的基本数据结构。
    • 加载Rmisc关联包
library(plyr)
library(dplyr)
library(ggplot2)
library(DT)
library(lattice)
library(caret)
library(rpart)
library(e1071)
library(randomForest)
library(pROC)
library(Rmisc)
hr<- read.csv("D:\\chapter11\\HR_comma_sep.csv")
str(hr)

  导入员工数据,并进行描述性分析
在这里插入图片描述

  • 探索员工对公司满意度、绩效评估和月均工作时长与是否离职的关系,绘制对公司满意度与是否离职的箱型图。
    • 观察图上中各个变量的主要描述统计量可知,离职率left接近15%,对公司的满意度在62%左右,绩效评估在72%左右,月均工作时长在200h左右
 hr$left<- factor(hr$left,levels=c('0','1'))

box_sat<- ggplot(hr,aes(x=left,y=satisfaction_level,fill=left))+geom_boxplot(varwidth=T)+theme_bw()+stat_summary(fun.y='mean',geom='point',shape=23,size=3,fill='white')+labs(x='left',y='satisfaction_level')+theme(axis.text.x=element_text(size=rel(1.3)),axis.text.y=element_text(size=rel(1.3)),axis.title.x=element_text(size=rel(1.3)),axis.title.y=element_text(size=rel(1.3)))

box_eva<- ggplot(hr,aes(x=left,y=last_evaluation,fill=left))+geom_boxplot(varwidth=T)+theme_bw()+stat_summary( fun.y='mean',geom='point', shape=23,size=3,fill='white')+ labs( x='left',y='last_evaluation' )+theme(axis.text.x=element_text(size=rel(1.3)),axis.text.y=element_text(size=rel(1.3)),axis.title.x=element_text(size=rel(1.3)),axis.title.y=element_text(size=rel(1.3)))

box_mon<- ggplot(hr,aes(x=left,y=average_montly_hours,fill=left))+geom_boxplot(varwidth=T)+theme_bw()+stat_summary(fun.y='mean',geom='point',shape=23,size=3,fill='white')+labs(x='left',y='average_montly_hours')+theme(axis.text.x=element_text(size=rel(1.3)),axis.text.y=element_text(size=rel(1.3)),axis.title.x=element_text(size=rel(1.3)),axis.title.y=element_text(size=rel(1.3)))
multiplot(box_sat,box_eva,box_mon,cols=3)

  通过上图可知,离职员工的特点为对公司满意度较低,大多数集中在0.4左右,绩效评估较高,在0.8以上的较为集中,平均月工作时长较高,超过了平均的200h

#通过各特征之间的关系来探索离职率情况 
#绘制参与项目个数条形图时需要把此变量转换为因子型

hr$number_project<- factor(hr$number_project,levels=c('2','3','4','5','6','7'))


# position='fill'#绘制百分比堆积条形图(图11-3)

bar_pro<-ggplot(hr,aes(x=number_project,fill=left))+geom_bar(position='fill')+theme_bw()+labs(x='left',y='number_project')+theme(axis.text.x=element_text(size=rel(1.3)),axis.text.y=element_text(size=rel(1.3)),axis.title.x=element_text(size=rel(1.3)),axis.title.y=element_text(size=rel(1.3)))

#绘制5年内是否升职与是否离职的百分比堆积条形图

bar_5years<- ggplot(hr,aes(x=as.factor(promotion_last_5years),fill=left))+geom_bar(position='fill')+theme_bw()+labs(x='left',y='promotion_last_5years')+theme(axis.text.x=element_text(size=rel(1.3)),axis.text.y=element_text(size=rel(1.3)),axis.title.x=element_text(size=rel(1.3)),axis.title.y=element_text(size=rel(1.3)))

#绘制薪资与是否离职的百分比堆积条形图(图11-3)

bar_salary<- ggplot(hr,aes(x=salary,fill=left))+geom_bar(position='fill')+theme_bw()+labs(x='left',y='salary')+theme(axis.text.x=element_text(size=rel(1.3)),axis.text.y=element_text(size=rel(1.3)),axis.title.x=element_text(size=rel(1.3)),axis.title.y=element_text(size=rel(1.3)))

#合并这些图在一个绘图区域,cols=3的意思就是排版为一行三列

multiplot(bar_pro,bar_5years,bar_salary,cols=3)

图11-3 薪资与是否离职的百分比堆积条形图

  通过探索参与项目个数,五年内有没有升职以及薪资与离职的关系可知,参加项目数越多的员工离职率越大(去除项目数为2的样本),五年内没有升职的员工离职率比较大,薪资越高离职率越低。

  • 用五折交叉验建立回归树并分析混淆矩阵结果。
hr_model<- filter(hr,last_evaluation>=0.70 | time_spend_company>=4 | number_project>5)

train_control<- trainControl(method='cv',number=5)

set.seed(1234)

index<- createDataPartition(hr_model$left,p=0.7,list=F)

traindata<- hr_model[index, ]

testdata<- hr_model[-index, ]

rpartmodel<- train(left ~.,data=traindata,trControl=train_control,method='rpart')

pred_rpart<- predict(rpartmodel,testdata[-7])

con_rpart<- confusionMatrix(testdata$left,pred_rpart,positive='1')

con_rpart
表11-2 混淆矩阵结果
预测值
实际值01
0224651
172528

  回归树建模的混绢矩阵结果如表11-2所示,真正例数为528,预测正例数为实际正例预测正例和实际负例预测正例数之和,实际正例数为预测正例实际正例和预测负例实际正例之和,根据查全率和查准率概念,计算得查准率为92.15%,查全率为85.85%。

  • 选择特征后,用五折交叉验建立随机森林模型并分析混淆矩阵结果。
      特征选择(随机森林)。随机森林就是用随机的方式建立一个森林,森林里面有很多的决策树,并且每棵树之间是没有关联的。得到一个森林后,当有一个新的样本输入,森林中的每一棵决策树会分别进行一次判断,进行类别归类(针对分类算法),最后判定类别最多的那一类,就是最后的预测结果。

set.seed(1234)

fs_rf <- rfe(x=traindata[,-7], y=traindata[,7], sizes=seq(3,8,1), rfeControl=rfeControls_rf)

fs_rf

new_vars<- fs_rf$optVariables[1:6]

mydata<- hr_model[c(new_vars,'left')]

traindata2<- mydata[index,]

testdata2<- mydata[-index,]

rfmodel<- train(left~.,data=traindata2,trControl=train_control,method='rf')

pred_rf<- predict(rfmodel,testdata2[-7])

con_rf<- confusionMatrix(pred_rf,testdata2$left,positive='1')

con_rf

在这里插入图片描述
在这里插入图片描述

表11-3 预测结果的混淆矩阵
预测值
实际值01
0229223
15577

  随机森林特征选择运行结果如表11-3所示,计算得查准率为96.17%,查全率为99.14%,比回归树建模有所提高。

  • 建立朴素贝叶斯模型并分析混淆矩阵结果。
e1071model<- train(left ~ .,data=traindata,trControl=train_control,method='nb')

pred_nb<- predict(e1071model,testdata[-7])

con_nb<- confusionMatrix(pred_nb,testdata$left,positive='1')

con_nb

在这里插入图片描述

表11-4 朴素贝叶斯建模的混淆矩阵
预测值
实际值01
02248146
149454

  朴素贝叶斯建模的混绢矩阵如表11-4所示,计算得查准率为75.67%,查全率为90.25%。

  • 选择特征后,用五折交叉验建立朴素贝叶斯模型并分析混淆矩阵结果。
    • 特征选择(朴素贝叶斯)。
    • 朴素贝叶斯分类器(Naive Bayes Classifier,NBC)基于古典数学理论,具有稳定的分类效率。同时,NBC模型所需估计的参数很少,对缺失数据不太敏感,算法也比较简单。朴素贝叶斯分析如下:
rfeControls_nb<- rfeControl(functions=nbFuncs,method='cv',number=5)

fs_nb <- rfe(x=traindata[,-7], y=traindata[,7], sizes=seq(3,8,1), rfeControl=rfeControls_nb)

报错如下(并未解决,以至于影响了后面的实验结果,请谨慎参考)

在这里插入图片描述

  • 建立Logistic回归模型并分析混淆矩阵结果。

gmlmodel<- train(left~.,data=traindata,trControl=train_control,method='LogitBoost')

pred_log<- predict(gmlmodel,testdata[-7])

con_log<- confusionMatrix(pred_log,testdata$left,positive='1')

con_log

在这里插入图片描述
  表11-6为逻辑斯蒂回归建模后预测的结果,通过计算得查准率为88.83%,查全率为89.73%。

表11-6 逻辑斯蒂回归建模后预测的结果
预测值
实际值01
0223667
161533
  • 绘制各模型的ROC曲线
模型查全率查准率
朴素贝叶斯90.25%75.67%
特征选择+朴素贝叶斯
逻辑斯蒂回归89.73%88.83%
回归树85.85%92.15%
特征选择+随机森林99.14%96.17%

  通过模型对比可以发现经过特征选择过的随机森林为最佳模型

pred_rpar<- as.numeric(pred_rpart)
pred_rf<- as.numeric(pred_rf)

pred_nb<- as.numeric(pred_nb)

pred_nb2<- as.numeric(pred_nb2)

pred_log<- as.numeric(pred_log)

roc_rpar<- as.numeric(testdata$left,pred_rpart)

Specificity<- roc_rpart$specificities

Sensitivity<- roc_rpart$sensitivities

p_rpart<- ggplot(data=NULL,aes(x=1-Specificity,y=Sensivity))+geom_line(color=’red’)+geom_abline()+annotate(

报错:

  • 选取最优的模型,预测员工离职与不离职的概率。
    • 图11-6是本实验最后的预测数据表:“pred.0”是预测为0(不离职)的概率,相反“pred.1”是预测为1(离职)的概率,最后一列“pred”即是否离职
pred_end<- predict(rfmodel,testdata2[-7],ytpe='prob')

data_end<- cbind(pred_end,pred_rf)

names(data_end)<- c('pred.0','pred.1','pred')

datatable(data_end)

在这里插入图片描述

图11-6 预测数据表
目录列表: 2dplanes.arff abalone.arff ailerons.arff Amazon_initial_50_30_10000.arff anneal.arff anneal.ORIG.arff arrhythmia.arff audiology.arff australian.arff auto93.arff autoHorse.arff autoMpg.arff autoPrice.arff autos.arff auto_price.arff balance-scale.arff bank.arff bank32nh.arff bank8FM.arff baskball.arff bodyfat.arff bolts.arff breast-cancer.arff breast-w.arff breastTumor.arff bridges_version1.arff bridges_version2.arff cal_housing.arff car.arff cholesterol.arff cleveland.arff cloud.arff cmc.arff colic.arff colic.ORIG.arff contact-lenses.arff cpu.arff cpu.with.vendor.arff cpu_act.arff cpu_small.arff credit-a.arff credit-g.arff cylinder-bands.arff delta_ailerons.arff delta_elevators.arff dermatology.arff detroit.arff diabetes.arff diabetes_numeric.arff echoMonths.arff ecoli.arff elevators.arff elusage.arff eucalyptus.arff eye_movements.arff fishcatch.arff flags.arff fried.arff fruitfly.arff gascons.arff glass.arff grub-damage.arff heart-c.arff heart-h.arff heart-statlog.arff hepatitis.arff house_16H.arff house_8L.arff housing.arff hungarian.arff hypothyroid.arff ionosphere.arff iris.2D.arff iris.arff kdd_coil_test-1.arff kdd_coil_test-2.arff kdd_coil_test-3.arff kdd_coil_test-4.arff kdd_coil_test-5.arff kdd_coil_test-6.arff kdd_coil_test-7.arff kdd_coil_train-1.arff kdd_coil_train-3.arff kdd_coil_train-4.arff kdd_coil_train-5.arff kdd_coil_train-6.arff kdd_coil_train-7.arff kdd_el_nino-small.arff kdd_internet_usage.arff kdd_ipums_la_97-small.arff kdd_ipums_la_98-small.arff kdd_ipums_la_99-small.arff kdd_JapaneseVowels_test.arff kdd_JapaneseVowels_train.arff kdd_synthetic_control.arff kdd_SyskillWebert-Bands.arff kdd_SyskillWebert-BioMedical.arff kdd_SyskillWebert-Goats.arff kdd_SyskillWebert-Sheep.arff kdd_UNIX_user_data.arff kin8nm.arff kr-vs-kp.arff labor.arff landsat_test.arff landsat_train.arff letter.arff liver-disorders.arff longley.arff lowbwt.arff lung-cancer.arff lymph.arff machine_cpu.arff mbagrade.arff meta.arff mfeat-factors.arff mfeat-fourier.arff mfeat-karhunen.arff mfeat-morphological.arff mfeat-pixel.arff mfeat-zernike.arff molecular-biology_promoters.arff monks-problems-1_test.arff monks-problems-1_train.arff monks-problems-2_test.arff monks-problems-2_train.arff monks-problems-3_test.arff monks-problems-3_train.arff mushroom.arff mv.arff nursery.arff optdigits.arff page-blocks.arff pasture.arff pbc.arff pendigits.arff pharynx.arff pol.arff pollution.arff postoperative-patient-data.arff primary-tumor.arff puma32H.arff puma8NH.arff pwLinear.arff pyrim.arff quake.arff ReutersCorn-test.arff ReutersCorn-train.arff ReutersGrain-test.arff ReutersGrain-train.arff schlvote.arff segment-challenge.arff segment-test.arff segment.arff sensory.arff servo.arff sick.arff sleep.arff solar-flare_1.arff solar-flare_2.arff sonar.arff soybean.arff spambase.arff spectf_test.arff spectf_train.arff spectrometer.arff spect_test.arff spect_train.arff splice.arff sponge.arff squash-stored.arff squash-unstored.arff stock.arff strike.arff supermarket.arff triazines.arff unbalanced.arff vehicle.arff veteran.arff vineyard.arff vote.arff vowel.arff water-treatment.arff waveform-5000.arff weather.nominal.arff weather.numeric.arff white-clover.arff wine.arff wisconsin.arff zoo.arff
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@小冯@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值