簡體   English   中英

使用插入符號方法rpart R進行錯誤訓練

[英]Error training with caret method rpart R

嘗試使用插入符號包訓練數據集時遇到錯誤。 錯誤如下: Error in train.default(x, y, weights = w, ...) : Stopping 我也有warnings()都一樣,因為我正在使用以下代碼為tuneGrid創建一個對象... grid <- expand.grid(cp = seq(0, 0.05, 0.005)) 這段代碼正在創建一個具有11行的data.frame ,這些行與我收到的11條警告相對應。 這是警告... In eval(expr, envir, enclos) : model fit failed for Fold01: cp=0 Error in [.data.frame (m, labs) : undefined columns selected In eval(expr, envir, enclos) : model fit failed for Fold01: cp=0 Error in (m, labs) : undefined columns selected 看起來cp沒有任何內容。 我可以轉到我的環境,查看網格對象和所有11行。 我有搜索stackoverflow,我發現了類似的問題,但是由於這些函數有很多方法可以對其進行調整,因此我沒有找到解決我的問題的問題。 這是我的代碼...

require(rpart)
require(rattle)
require(rpart.plot)
require(caret)


setwd('~/Documents/Lipscomb/predictive_analytics/class4/')
data <- read.csv(file = 'data.csv',
                 head = FALSE)

data <- subset(data, select = -V1)

colnames(data) <-  c('diagnostic', 'm.radius', 'm.texture', 'm. perimeter', 'm.area', 'm.smoothness', 'm.compactness', 'm.concavity', 'm.concave.points', 'm.symmetry', 'm.fractal.dimension',
                     'se.radius', 'se.texture', 'se. perimeter', 'se.area', 'se.smoothness', 'se.copactness', 'se.concavity', 'se.concave.points', 'se.symmetry', 'se.fractal.dimension',
                     'w.radius', 'w.texture', 'w. perimeter', 'w.area', 'w.smoothness', 'w.copactness', 'w.concavity', 'w.concave.points', 'w.symmetry', 'w.fractal.dimension')

str(data)

set.seed(7)
sample.train <- sample(1:nrow(data), nrow(data) * .8)
sample.test <- setdiff(1:nrow(data), sample.train)


data.train <- data[sample.train, ]
data.test <- subset(data[sample.test, ], select = -diagnostic)

rpart.tree <- rpart(diagnostic ~ ., data = data.train)
out <- predict(rpart.tree, data.test, type = 'class')
table(out, data[sample.test, ]$diagnostic)

fancyRpartPlot(rpart.tree)

temp <- rpart.control(xval = 10, minbucket = 2, minsplit = 4, cp = 0)
dfit <- rpart(diagnostic ~ ., data = data.train, control = temp)
fancyRpartPlot(dfit)

fit.control <- trainControl(method = 'cv', number = 10)
grid <- expand.grid(cp = seq(0, 0.05, 0.005))
trained.tree <- train(diagnostic ~ ., method = 'rpart', data = data.train, 
                      metric = 'Accuracy', maximize = TRUE,
                      trControl = fit.control, tuneGrid = grid)

我找到了解決此問題的方法。 我改變了命名自己colnames 出於某種原因,用於命名colnames的原始代碼在使用train函數時導致錯誤。 此代碼解決了該問題。

colnames(data) <-  c('diagnostic', 'radius', 'texture', 'perimeter', 'area', 'smoothness', 'compactness', 'concavity', 'concavePoints', 'symmetry', 'fractalDimension',
                     'SeRadius', 'SeTexture', 'SePerimeter', 'SeArea', 'SeSmoothness', 'SeCopactness', 'SeConcavity', 'SeConcavePoints', 'SeSymmetry', 'SeFractalDimension',
                     'Wradius', 'Wtexture', 'Wperimeter', 'Warea', 'Wsmoothness', 'Wcopactness', 'Wconcavity', 'WconcavePoints', 'Wsymmetry', 'WfractalDimension')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM