1

8*8 ピクセル座標のデータセットでリッジ回帰を実行しようとしています。データセットは、異なる手によって書かれた一連の 1 と 0 のマップであり、8*8 ピクセル マトリックスに対応する 64 個の数値の行として並べ替えられています。

以下のlm.ridge()関数は、 で応答しますError in svd(X) : infinite or missing values in 'x'。何が問題で、何が間違っていますか?

digits = read.csv("digits.csv", header = FALSE)
library(MASS)
digits$y = rep(0,nrow(digits))
digits$y[1:554] = 1
digits$y[555:1125] = -1
lm =lm.ridge(y ~ ., digits , lambda = 1)

ここにcsvをアップロードする方法がわからないため、データセットのサンプル。

'data.frame':   1125 obs. of  65 variables:
 $ V1 : int  0 0 0 0 0 0 0 0 0 0 ...
 $ V2 : int  16 0 0 16 0 0 0 0 0 0 ...
 $ V3 : int  96 160 240 160 32 128 112 160 32 0 ...
 $ V4 : int  240 255 32 240 208 255 224 128 192 128 ...
 $ V5 : int  192 96 224 128 144 128 96 176 176 192 ...
.
.
.
$ V62: int  16 48 0 0 64 80 0 0 128 144 ...
$ V63: int  0 0 0 0 0 0 0 0 0 16 ...
$ V64: int  0 0 0 0 0 0 0 0 0 0 ...
$ y  : num  1 1 1 1 1 1 1 1 1 1 ...

すべてゼロで構成される列 (V1 など) に関連している可能性があることを理解しています。現在、列を合計して合計がゼロの列を削除することでこれを削除しましたが、a)これを行うためのよりクリーンな方法があるかどうか、b)これがリッジ回帰分析を台無しにするかどうか疑問に思います。

乾杯。

4

1 に答える 1

2

私が理解したことから、 にゼロの列を与えることはできませんlm.ridge()。私が実装したソリューションは、リッジ回帰を台無しにしませんでした。列の絶対値の合計がゼロかどうかをチェックすることで、より良い実装方法を考えました ( digits = digits[,which(colSums(abs(digits)) !=0)])。

これが誰かに役立つことを願っています。

于 2016-03-10T13:36:01.823 に答える