这是我的决策树 R 脚本:
library(caret)
library(rpart.plot)
library(plyr)
library(dplyr)
library(rpart)
data("iris")
names(iris) = tolower(names(iris))
table(iris$species)
suppressMessages(library(caret))
index = createDataPartition(y=iris$species, p=0.7, list=FALSE)
train = iris[index,]
test = iris[-index,]
trainctrl <- trainControl(method = "cv", number = 5, verboseIter = FALSE)
dt.model <- train(species~., data=train, method = "rpart",
tuneLength = 10,
preProcess = c("center", "scale"),
trControl = trainctrl,
metric="Kappa")
dt.predict <-predict(dt.model, test)
confusionMatrix(dt.predict, test$species)
rpart.plot(dt.model$finalModel)
varImp(dt.model)
我的功能重要性是:
> varImp(dt.model)
rpart variable importance
Overall
petal.width 100.00
petal.length 96.95
sepal.length 45.08
sepal.width 0.00
有没有办法考虑减少花瓣宽度?例如,我希望我的树使用比花瓣宽度更多的花瓣长度和萼片长度。是否可以?
我的问题是,在我使用决策树的数据集中,一个变量 x 的使用比其他变量多。然而,这个 x 变量会影响另一个 y 变量的值,该变量实际上是我的类的特征。以 Iris 为例:这就像说petal.length 与petal.width 成比例相关,即:
petal.width petal.length class
1 4 Virginica
1 6 Setosa
2 6 Virginica
2 7 Setosa
我的模型将基础类更多地区分为我的数据集的“petal.width”而不是“petal.lenght”。为此,我想对这些特征赋予不同的权重