1.k-medoidsクラスタリングアルゴリズム
https://www.cnblogs.com/feffery/p/8595315.html はまだ比較的理解しやすいです前にkmeansを確認したところ、重心に応じて中心点が継続的に移動しています。
外れ値の影響を弱める可能性があります。すべてのポイントをトラバースする必要があります。初めて分類結果を計算した後、各クラスの所定の中心点以外のポイントをトラバースし、クラスのすべてのポイント間の基準関数を計算しますここで、基準関数はすべてのポイントまでの平均距離であり、計算後、新しい中心点が取得され、距離に従って再分類されます。
先ほど見たkmeansの例を使用すると、計算プロセスもよく理解できます。最初にp1とp2が選択されているとすると、中心点はラウンド後にp1とp4になる可能性があります。
2. GMVAEは具体的にどのように実装されていますか?
多変量ガウスはどのようにコードに反映されますか?
モデルを定義し、各次元のパラメーター、中心点の数、つまりクラスの数を指定します。
ZINB分布のパラメーターを定義します。kタイプのドロップアウトの合計は1ですか?それでは、各カテゴリに個別のZINB分布がありますか?
モデルのGMMパラメーターを初期化します。sklearnで使用されるパラメーターはどれですか?混乱:
sklearn.mixture からインポート GaussianMixture
https://scikit-learn.org/stable/modules/generated/sklearn.mixture.GaussianMixture.html これはよく検索されていますが、いずれにしても、説明は詳しくありません。
フィット関数:EMアルゴリズムを使用してモデルのパラメーターを推定しますhttps://www.cnblogs.com/dahu-daqing/p/9456137.html これはかなり良いですこれは非常に良い計算プロセスについて話します
EMアルゴリズムの反復、最初に各サンプルのスコアを計算しますか?スコアは明確ではありません。予測は、各サンプルが各サブガウスモデルに属する確率を計算することです。
たとえば、上記の4つのサブガウスモデル、次に233、
つまり、フィッティング後、各サンプルが属するサブガウス分布の確率を取得できます。
ここでのn_featuresはzの次元を参照する必要があります。たとえば、zは10次元で、3つのカテゴリーに分割されます。その後、返されたmean_、サイズは[3,10]であり、各カテゴリーの各次元には平均と分散があります。分散がdiagの場合、サイズは同じです。これで、この関数が適合しました。
次に、model.fit関数を呼び出して、損失を直接計算しますか?実際、私はこのフィット関数の使い方がよくわかりませんか?転送しないのはなぜですか?emmは、直接転送する場合でも、トレーニング用のforループを作成する必要があるためです。
損失関数が直接計算され、損失が出ます。
エンコーダーの作成方法を見てみましょう。
エンコーダーの定義も非常に単純であることがわかりますが、build_mlpの最初のパラメーターは少し問題があるように感じます。テストしたところ、h_dimを数値にして[]を直接追加できますか?
def fun(lay): for l in lay: print (l) dim = [1,2 ] [x、y] = dim fun([x] + y) #输出: fun([x] + y) TypeError:リストするには 「int 」ではなくリストのみを連結できます
とにかく、私は一般的にコードの意味を知っています。
以下はGaussianSampleクラスです。そのフィーチャー番号は非表示層の数であり、μと分散の両方に対して線形出力層が構築されていることがわかります。転送時には、再サンプリングが個別に実行されます。
これは通常のVAEと同じです。