各データポイントがpd.Dataframeの行として格納されるすべてのデータポイントペア間の距離の計算を必要とするクラスタリングアルゴリズムを実装しています。計算全体がO(n^2)の順に大きくなります。これを効率的に行うには慎重でなければなりません。2つの行のパンダデータフレームの組み合わせ
私がしたいことを効率的に行う方法は何ですか?
私はデータフレーム内の4つのデータポイントを持っていると言う:
#<inputtable tin>
Id Label
0 Michael
1 Jim
2 Pam
3 Dwight
そして、私はすべての2点コンビネーション(2,4)間の割引を計算するためにカスタマイズされた機能
similar(x,y)
を実行する必要がある〜6と私の出力すべきです私がやっていること
#<outputtable tout>
Source_Id Source_Label To_Id To_Label distance
0 Michael 1 Jim f('Michael', 'Jim')
0 Michael 2 Pam f('Michael', 'Pam')
0 Michael 3 Dwight f('Michael', 'Dwight')
1 Jim 2 Pam f('Jim', 'Pam')
1 Jim 3 Dwight f('Jim', 'Dwight')
2 Pam 3 Dwight f('Pam', 'Dwight')
:ようなこと
を、私はテーブルのためのデカルト積を生成するためにpd.mergeを使用しようとしました
data = pd.DataFrame([[0, 'Michael'], [1, 'Jim'], [2, 'Pam'], [3, 'Dwight']], columns=['Id', 'Label'])
data['tmp'] = 1
result = pd.merge(data, data, left_on='tmp', right_on='tmp')
result = result[result['Id_x'] != result['Id_y']]
print result
しかし、これは本当にマージの周りのハックのように見える、私はまた、パンダとうまく動作しない組み合わせでitertoolsを試してみました。
カスタマイズされた類似距離関数を使用してこのような「クラスタリング作業」を行う方が効率的な方法を知っている人は誰ですか?また、一般的にはよりよい解決策があるかどうかわからないGephiの分析も予定しています。