くだすれPython(超初心者用) その6
■ このスレッドは過去ログ倉庫に格納されています
0202デフォルトの名無しさん
2010/02/26(金) 10:42:06質問していたものです。時間が出来たのでもう一度トライしたくなりある程度調べました。
ttp://examples.oreilly.com/9780596529321/ の nmf.pyでの問題です。
発生原因はこの関数で間違いないと思います。">"の行はデバッグのために加えました。
NaNとNaNは比較してもイコールにならないことを利用してプログラムを止めてます。
他にも if h.any() != h.any(): と if w.any() != w.any(): も書いてますがここでは止まりません。
(.any()の使い方は良く分かっていません。インタプリタがこう書けというので書きました。)
def difcost(a,b):
dif=0
for i in range(shape(a)[0]):
for j in range(shape(a)[1]):
# Euclidean Distance
dif+=pow(a[i,j]-b[i,j],2)
> print a[i,j] ,b[i,j] ,dif
> if dif!=dif:
> return dif
return dif
何回かやりましたが結果はiterは3で必ずNaNが出るようです。
>>> weights,feat=nmf.factorize(v,pc=20, iter=3)
0 nan nan
>>> weights,feat=nmf.factorize(v,pc=20, iter=3)
0 nan nan
>>> weights,feat=nmf.factorize(v,pc=20, iter=3)
0 nan nan
>>> weights,feat=nmf.factorize(v,pc=20, iter=3)
0 nan nan
>>> weights,feat=nmf.factorize(v,pc=20, iter=3)
0 nan nan
>>>
なぜかwh(一回前のwとhの積です)の方に急にnanがでるようです。これでなにか分かりませんでしょうか。
■ このスレッドは過去ログ倉庫に格納されています