私はまだこの問題で立ち往生しています。ここに添付するRメーリングリスト(Christian Hennigに感謝)からいくつかの提案を受け取りました。
ライブラリfpcの dbscan関数を検討しましたか、それとも別の関数ですか?このfpc::dbscan()
関数には「距離」パラメータはありませんが、いくつかのオプションがあります。そのうちの1つはメモリの問題を解決する可能性があります(「メモリ」パラメータのドキュメントを参照してください)。
数十万のポイントに距離行列を使用することは、災害のレシピです(メモリの観点から)。あなたが使用した関数がそれをしたかどうかはわかりませんが、それfpc::dbscan()
は回避できます。
fpc::dbscan()
ユーザーが提供しなければならない調整定数を必要とすることは事実です。残念ながら、これを行う方法に関する一般的な規則はありません。メソッドと定数の意味、およびこれがアプリケーションの要件にどのように変換されるかを理解する必要があります。
いくつかの異なる選択肢を試してみて、何が機能するかを確認するためにクラスター検証を行うこともできますが、これを電子メールで簡単に説明することはできません。
私は自分のデータでいくつかの試みをしましたが、成功しませんでした:
「はい、fpcからdbscanを試してみましたが、まだメモリの問題が解決していません。あなたの答えについては、どのメモリパラメータを調べればよいかわかりません。次に、dbscanパラメータで試したコードを示します。間違いがないか確認してください。
> sstdat=read.csv("sst.dat",sep=";",header=F,col.names=c("lon","lat","sst"))
> library(fpc)
> sst1=subset(sstdat, sst<50)
> sst2=subset(sst1, lon>-6)
> sst2=subset(sst2, lon<40)
> sst2=subset(sst2, lat<46)
> dbscan(sst2$sst, 0.1, MinPts = 5, scale = FALSE, method = c("hybrid"),
seeds = FALSE, showplot = FALSE, countmode = NULL)
Error: no se puede ubicar un vector de tamaño 858.2 Mb
> head(sst2)
lon lat sst
1257 35.18 24.98 26.78
1258 35.22 24.98 26.78
1259 35.27 24.98 26.78
1260 35.31 24.98 26.78
1261 35.35 24.98 26.78
1262 35.40 24.98 26.85
この例ではdbscan()
、温度値にのみ適用し、経度/緯度には適用しないため、eps
パラメーターは0.1です。グリッドデータセットであるため、どのポイントも8つのデータポイントで囲まれているので、周囲のポイントのうち少なくとも5つは到達可能距離内にあるべきだと思いました。しかし、温度値のみを考慮することで適切なアプローチが得られているかどうかはわかりません。おそらく、空間情報が不足しています。経度と緯度のデータはどのように扱うべきですか?
寸法はsst2
、次のとおりです。152243行は3列をx」は
RとDBSCANについていくつかの光を共有できる場合に備えて、このメールメッセージをここで共有します。再度、感謝します