86-预测分析-R语言实现-树模型rpart

Python019

86-预测分析-R语言实现-树模型rpart,第1张

数据集的行是游戏玩家们玩的每一次游戏,列是某个玩家玩游戏时的速度、能力和决策,都是数值型变量

任务是根据这些表现的衡量指标来预测某个玩家当前被分配到8个联赛中的哪一个,输出变量(LeagueIndex)是一个有序的类别变量,序号从1到8,最后一个对应的是技术最高的玩家组成的联赛。

一种对待序号输出的可能方式是把它们当作一个数值型变量,作为回归任务来建模,并构建一个回归树。GameID列表示唯一的游戏标识符,跟模型无关,可以丢弃;另外TotalHours列被识别为字符型,需要修正为数值型。

Age、HoursPerWeek和TotalHours存在缺失值,直接删除带有缺失值的行。(虽然树模型可以自动处理缺失值,但是后面还会使用其他模型来对比,那些模型不一定能处理缺失值)

使用rpart包构建回归树模型。

对于输入特征,我们会关注它用在树里任何地方时产生的优化准则(例如偏差或SSE)里的约简,将树里所有分裂的这个量值汇总起来,就得到变量重要性的相对数量。

越重要的变量会越早用来分裂数据(离根节点更近),也会更常用到。如果一个变量从来没有用过,那么就是不重要的,通过这种方式,可以用来做特征选择,但是这种方法对特征中的相关性敏感。

不能发链接,所以我复制过来了。

#载入程序和数据

library(RSNNS)

data(iris)

#将数据顺序打乱

iris <- iris[sample(1:nrow(iris),length(1:nrow(iris))),1:ncol(iris)]

#定义网络输入

irisValues <- iris[,1:4]

#定义网络输出,并将数据进行格式转换

irisTargets <- decodeClassLabels(iris[,5])

#从中划分出训练样本和检验样本

iris <- splitForTrainingAndTest(irisValues, irisTargets, ratio=0.15)

#数据标准化

iris <- normTrainingAndTestSet(iris)

#利用mlp命令执行前馈反向传播神经网络算法

model <- mlp(iris$inputsTrain, iris$targetsTrain, size=5, learnFunc="Quickprop", learnFuncParams=c(0.1, 2.0, 0.0001, 0.1),maxit=100, inputsTest=iris$inputsTest, targetsTest=iris$targetsTest)

#利用上面建立的模型进行预测

predictions <- predict(model,iris$inputsTest)

#生成混淆矩阵,观察预测精度

confusionMatrix(iris$targetsTest,predictions)

#结果如下:

#predictions

#targets 1 2 3

# 1 8 0 0

# 2 0 4 0

# 3 0 1 10