R:データセットにNaNがないにもかかわらず、「Forest function call」エラーでNaN / Infをスローするランダムフォレスト[非公開]


29

キャレットを使用して、データセットに対してクロス検証されたランダムフォレストを実行しています。Y変数は要因です。データセットにNaN、Inf、またはNAはありません。ただし、ランダムフォレストを実行すると、

Error in randomForest.default(m, y, ...) : 
  NA/NaN/Inf in foreign function call (arg 1)
In addition: There were 28 warnings (use warnings() to see them)
Warning messages:
1: In data.matrix(x) : NAs introduced by coercion
2: In data.matrix(x) : NAs introduced by coercion
3: In data.matrix(x) : NAs introduced by coercion
4: In data.matrix(x) : NAs introduced by coercion

このエラーが強制によって導入されたNAによって引き起こされるかどうかについて、誰かが考えていますか?もしそうなら、どうすればそのような強制を防ぐことができますか?

回答:


36

クラス 'char'のトレーニングセットにはいくつかの機能が必要です。

これをチェックしてください

> a <- c("1", "2",letters[1:5], "3")
> as.numeric(a)
[1]  1  2 NA NA NA NA NA  3
Warning message:
NAs introduced by coercion 

追加するだけで、機能が実際にカテゴリーである場合、それを因子に変換することで含めることができます。blah <-as.factor(blah)
P.ウィンドリッジ

14

おそらく原因は、データフレームにいくつかの文字変数があることです。

1行ですべての文字変数を因子に変換します。

library(dplyr) data_fac=data_char %>% mutate_if(is.character, as.factor)


2
私はmutate_if()これに使用することを考えていませんでした...ありがとう!
アンドリューブルーザ

3

警告に示されているように、文字データ型(「chr」)の列の数である28のエラーがありました。これらの列を、実行の開始に許可された要因に強制します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.