7

randomForestで分類しようとしていますが、明らかな解決策がないように見えるエラーメッセージが繰り返し表示されます(randomForestは、過去に回帰を行ったときにうまく機能しました)。以下にコードを貼り付けました。「成功」は要因であり、従属変数はすべて数値です。この分類を適切に実行する方法に関する提案はありますか?

> rf_model<-randomForest(success~.,data=data.train,xtest=data.test[,2:9],ytest=data.test[,1],importance=TRUE,proximity=TRUE)

Error in randomForest.default(m, y, ...) : 
  NA/NaN/Inf in foreign function call (arg 1)

また、データセットのサンプルは次のとおりです。

ヘッド(データ)

success duration  goal reward_count updates_count comments_count backers_count     min_reward_level max_reward_level
True 20.00000  1500           10            14              2            68                1             1000
True 30.00000  3000           10             4              3            48                5             1000
True 24.40323 14000           23             6             10           540                5             1250
True 31.95833 30000            9            17              7           173                1            10000
True 28.13211  4000           10            23             97          2936               10              550
True 30.00000  6000           16            16            130          2043               25              500
4

5 に答える 5

9

NA などの存在に関する明白な事実は別として、このエラーはほとんどの場合、データ セット内の文字機能タイプの存在によって引き起こされます。これを理解する方法は、ランダム フォレストが実際に何をするかを考えることです。機能ごとにデータ セットを分割しています。特徴の 1 つが文字ベクトルの場合、データ セットをどのように分割しますか? データを分割するにはカテゴリが必要です。「男性」対「女性」の数 - カテゴリ...

年齢や価格などの数値機能については、バケット化によってカテゴリを作成できます。特定の年齢以上、特定の価格未満など。純粋なキャラクター機能ではそれを行うことはできません。したがって、それらをデータセットの因子として必要とします。

于 2015-06-26T03:24:28.563 に答える
3

同じデータで回帰を試みましたか? そうでない場合は、データ内の「Inf」値を確認し、NA と NaN を削除した後、あれば削除してみてください。以下から Inf の削除に関する有用な情報を見つけることができます。

R Inf/-Inf 値を見つける方法はありますか?

例、

Class V1    V2  V3  V4  V5  V6  V7  V8  V9
1   11  Inf 4   232 23  2   2   34  0.205567767
1   11  123 4   232 23  1   2   34  0.162357601
1   13  123 4   232 23  1   2   34  -0.002739357
1   13  123 4   232 23  1   2   34  0.186989878
2   67  14  4   232 67  1   2   34  0.109398677
2   67  14  4   232 67  2   2   34  0.18491187
2   67  14  4   232 34  2   2   34  0.098728256
2   44  769.03  4   21  34  2   2   34  0.204405869
2   44  34  4   11  34  1   2   34  0.218426408

# When Classification was performed, following error pops out.
rf_model<-randomForest(as.factor(Class)~.,data=data,importance=TRUE,proximity=TRUE)
Error in randomForest.default(m, y, ...) : 
NA/NaN/Inf in foreign function call (arg 1)

# Regression was performed, following error pops out.
rf_model<-randomForest(Class~.,data=data,importance=TRUE,proximity=TRUE)
Error in randomForest.default(m, y, ...) : 
NA/NaN/Inf in foreign function call (arg 1)

そのため、データを慎重に確認してください。さらに: 警告メッセージ: randomForest.default(m, y, ...) 内: 応答の一意の値が 5 つ以下です。本当に回帰を実行しますか?

于 2013-01-04T06:49:52.140 に答える
1

すべての列を因子に変換するだけで、このエラーを回避できます。私もこのエラーに直面していました。特に因子に変換されていなかった列。そのための as.factor を特別に書きました。そして最後に私のコードが機能しました。

于 2016-07-04T17:48:18.177 に答える
0

これは、変数の1つに32を超えるレベルがあるためです。レベルは、1つの変数の個別の値を意味します。その変数を削除して、再試行してください。

于 2013-02-11T15:07:16.560 に答える