4

Rでxgboostを使用しています。

入力として行列を使用して xgb 行列を作成しましたが、行列データの列数を減らすとエラーが発生します。

これは機能します:

> dim(ctt1)

[1] 6401 5901

> xgbmat1 <- xgb.DMatrix(
     Matrix(data.matrix(ctt1)),
     label = as.matrix(as.numeric(data$V2)) - 1
  )

これはしません:

> dim(ctt1[,nr])

[1] 6401 1048

xgbmat1 <- xgb.DMatrix(
    Matrix(data.matrix(ctt1[,nr])),
    label = as.matrix(as.numeric(data$V2)) - 1)

xgb.setinfo(dmat, names(p), p[[1]]) のエラー: ラベルの長さは、入力データの行数と等しくなければなりません

4

5 に答える 5

2

いくつかの列を削除すると、すべてが 0 の行がいくつかあり、モデルに寄与できないことがわかります。

于 2016-03-07T20:58:27.907 に答える
2

疎行列の場合、xgboost R インターフェイスは CSC 形式の作成方法を使用します。現在の問題は、このメソッドが既存の非スパース値から行数を自動的に決定し、最後にある完全にスパースな行がカウントされないことです。最後に完全にスパースな列の同様の損失は、CSR スパースで発生する可能性があります。フォーマット。詳細については、xgboost issue #1223と疎行列形式に関するウィキペディアを参照してください。

于 2016-07-02T20:35:46.083 に答える