vq.whiten
fromを使用しscipy.cluster
てデータを正規化するのに問題があります。私は、欠落している機能値が各機能の平均で埋められたnumpy配列を渡しています。
スタックする行は次のとおりです。
data = scipy.cluster.vq.whiten(self.imputed)
これは、欠落しているデータを置き換えるために使用しているコードです。
imputed = np.array([self.masked[:,i].filled(self.masked[:,i].mean())
for i in range(np.shape(self.masked)[1])])
self.imputed = np.transpose(imputed)
私のコードを壊しているように見えるという事実は別として、この部分を行うためのより良い方法もあると確信しています。それは醜い方法のように思えますが、それは通常、Python でより良い方法があることを意味します。
送信する配列の量をスライスしてみましたwhiten
が、トレースバックで次の結果が得られても問題ありません。
Traceback (most recent call last):
File "C:\Users\jamie.bull\workspace\Metadata\src\draft_workflow.py", line 87, in <module>
dataset.cluster()
File "C:\Users\jamie.bull\workspace\Metadata\src\draft_workflow.py", line 59, in cluster
data = scipy.cluster.vq.whiten(self.imputed)
File "C:\Enthought\Python27\lib\site-packages\scipy\cluster\vq.py", line 131, in whiten
std_dev = std(obs, axis=0)
File "C:\Enthought\Python27\lib\site-packages\numpy\core\fromnumeric.py", line 2467, in std
return std(axis, dtype, out, ddof)
AttributeError: sqrt
クラスタリングは、データが欠落することなく同じデータセットで正常に機能するため、次に何を試すべきか途方に暮れています。
編集:次imputed
を使用して、完全なデータセットと欠落しているデータセットの両方について
、各アイテムのタイプを印刷してみました:
for item in imputed:
print type(item)
2 つの違いは、平均置換と転置が呼び出されていないバージョンではnumpy.ndarray
行ごとに 1 つあるのに対し、平均置換されたバージョンでは列ごとに 1 つあることです。