14

カテゴリ (名義および順序) 属性と数値属性の両方を含むデータセットがあります。これらの混合属性を使用して、観測全体で (非) 類似度マトリックスを計算したいと考えています。R のクラスター パッケージのdaisy()関数を使用すると、次のように非類似度マトリックスを簡単に取得できます。

if(!require("cluster")) { install.packages("cluster");  require("cluster") }
data(flower)
as.matrix(daisy(flower, metric = "gower"))

これはガワー計量を使用して名義変数を処理します。Rの関数に相当するPythonはありますか?daisy()

または、Gower メトリックまたは同様のものを使用して、混合 (公称、数値) 属性を持つデータセットの (非) 類似度マトリックスを計算できる他のモジュール関数でしょうか?

4

2 に答える 2

10

を探していると思いますscipy.spatial.distance.pdist

観測値の 1 つのペアでガワー距離を計算する関数を実装する場合、その関数を に渡すことができpdistます。これにより、ペアごとに適用され、ペアごとの距離の結果の行列が返されます。ガワー距離が組み込みオプションの 1 つであるようには見えません。

同様に、単一の観測に属性が混在している場合は、独自の関数を定義できます。たとえば、数値属性のサブセットにユークリッド距離、カテゴリ属性のサブセットにガワー距離などを使用し、それらを追加します-またはアプリケーションにとって、2 つの分離された観測値間の距離を計算することの意味の他の実装。

Python でのクラスタリングでは、通常、scikits.learnを使用する必要があります。この質問と回答のページでは、scikits でカスタム距離測定 (あなたの場合は Gower) を使用するというこの問題について説明していますが、これは可能ではないようです。

によって提供される選択肢の 1 つを、pdistそのリンクされた回答ページの実装と共に使用できます。または、Gower 類似度の関数を実装してそれを使用することもできます。しかし、scikit からすぐに使用できるクラスタリング ツールが必要な場合は、直接的には可能ではないようです。

于 2014-10-15T16:54:30.153 に答える