0

プログラミング言語バージョン 2.13.1のrandomForestパッケージ バージョン4.6-7を使用して、2 クラス分類問題のクラス プロトタイプを取得しようとしています。Rこのために、classCenter関数を呼び出します。問題は、時々無効な結果を出力することです。つまり、返されたクラス プロトタイプの一方または両方が完全にNA値で構成されています。これが発生すると、R コンソールに次のように表示されます。

There were 50 or more warnings (use warnings() to see the first 50)

入力warnings()すると、次の50回が得られます。

1: In mean.default(sort(x, partial = half + 0L:1L)[half +  ... :
  argument is not numeric or logical: returning NA

重要: この関数は、同じデータと同じ設定を使用して学習したさまざまなランダム フォレスト モデルに対して異なる出力を与えることに気付きました。つまり、一方のモデルでは両方のクラス プロトタイプが返され、別のモデルでは何も返されない場合があります。つまり、少なくとも時々有効な結果が得られることがあります。

R コンソールで次のコードを使用します。

library(randomForest)
mydata <- read.csv("mydata.csv", header=TRUE)
myrf <- randomForest(x=mydata[,-1:-2], y=mydata[,1], ntree=1000, mtry=33, importance=TRUE, proximity=TRUE)
mycc <- classCenter(mydata[,-1:-2], mydata[,1], myrf$prox)
print(mycc)

CSV ファイルの最初の列にはクラス ラベルが含まれ、2 番目の列は無視されます。陽性クラスの例が 5,000 例、陰性クラスの例が 5,000 例あり、すべて 135 の特徴/変数があり、欠損値はありません (以下を参照)。

この問題の解決策をstackoverflowとgoogleで検索しましたが、役に立ちませんでした。パッケージのドキュメントではrandomForest、「all-NAs」の戻り値が指定されていません。私は R に精通しておらず、ドキュメンテーションと直感を使用してこのコードをハッキングしたと言わざるを得ません。

EDIT:mydata[!complete.cases(mydata),]空です。つまり、入力データに欠損値 (NA) はありません。との出力はsummary(mydata)ここmydata[1:10,]にあります(テキストが幅広にフォーマットされているため、ワードラップなしでテキスト エディターでファイルを表示することをお勧めします)。もちろん、最初の 10 行だけではエラーを再現するには不十分ですが、データセット全体を投稿することはできません。

4

1 に答える 1

0

私も同じ問題に直面していましたが、今日それを取り除きました。いくつかのことを行うことができます (1) null 値または NA 値を持つ列を削除してください または (2) null 値または NA 値を持つ行を削除する または (3) すべての列の null または NA 値を平均などの適切な処理に置き換えます、中央値または最頻値 (可能な場合)。ありがとう

于 2013-07-04T12:03:18.003 に答える