2017-05-20 13 views
1

現在、チャーン問題の予測モデルに取り組んでいます。
次のモデルを実行しようとすると、このエラーが発生します。少なくとも1つのクラスレベルが有効なR変数名ではありません。変数名がX0、X1に変換されるため、クラス確率が生成されるとエラーが発生します。有効なR変数名として使用できる因子レベルを使用してください。分類 - 因子レベルの使用

fivestats <- function(...) c(twoClassSummary(...), defaultSummary(...)) 
fitControl.default <- trainControl( 
    method = "repeatedcv" 
    , number = 10 
    , repeats = 1 
    , verboseIter = TRUE 
    , summaryFunction = fivestats 
    , classProbs = TRUE 
    , allowParallel = TRUE) 
set.seed(1984) 

rpartGrid    <- expand.grid(cp = seq(from = 0, to = 0.1, by = 0.001)) 
rparttree.fit.roc <- train( 
    churn ~ . 
    , data  = training.dt 
    , method = "rpart" 
    , trControl = fitControl.default 
    , tuneGrid = rpartGrid 
    , metric = 'ROC' 
    , maximize = TRUE 
) 

添付の画像に私のデータが表示されていますが、すでに一部のデータがchrからfactor変数に変換されています。

DATA OVERVIEW

私が要因に全データを変換するならば、私はその後、例えば変数total_airtime_outはおそらく周りの9000要因を持つことになり、私の問題が何であるかを得ることはありません。

ありがとうございました!

+0

エラーメッセージを再現できるダミーデータまたはサンプル+コード(パッケージを含む)を追加できますか?ありがとう。 – lukeA

答えて

3

私はあなたのエラーを再現することは、正確にはできませんが、私の推測では、エラーメッセージがあなたが知る必要があるすべて伝えることです:

At least one of the class levels is not a valid R variable name. This will cause errors when class probabilities are generated because the variables names will be converted to X0, X1. Please use factor levels that can be used as valid R variable names.

重点鉱山を。応答変数を見ると、そのレベルは"0""1"ですが、これらはRの有効な変数名ではありません(0 <- "my value"はできません)。あなたはthis Qあたりとして

levels(training.dt$churn) <- c("first_class", "second_class")

のようなものを持つ応答変数のレベルの名前を変更する場合はおそらく、この問題が消えます。

関連する問題