2017-04-17 1 views
0

クラスタリングモデルを実行している非常に大きなデータセットがあります。numpy配列で割り当てられたクラスタを別々のデータセットに変換する

[ 0 1 2 1 1 0 0 0 1 2 1 0 2 0 1 2 1 0 2 2 0 0 1 ... ] 

私は元のデータセットを取得し、配列に基づいて3つのデータセットを作成したいと思います。私はこれについてどうやって行くのですか?

初期データセットの作業:

import pandas as pd 
pd.options.mode.chained_assignment = None 
raw_data = pd.read_csv("LendingClub2012to2013.csv", low_memory = False, skiprows=[0]) 

//Some cleaning done, target leakage removed, dummies created, imputation, etc. 

clean_data = raw_data.drop(text2d + leakage2d + noinfo2d + irr2d, axis = 1) 
+0

。私たちのコードを見せてください! – Astrom

+0

データポイント数とクラスタ数はいくつですか? –

+0

現在、私は3つのクラスター、171483 x 115サイズで作業しています。 – Jgreen727

答えて

0

私はあなたのデータセットがnumpyの配列であることを前提としています。マスクを作成して元のデータセットから必要な要素を選択してみてください。いくつかの冗長コード:

# Your original data set (2d numpy array) 
orig_data = ... 
# The cluster assignments output by the algorithm (1d numpy array) 
cluster_assignments = ... 

clusters = [] 
for cluster_id in xrange(3): 
    mask = (cluster_assignments == cluster_id) 
    clusters.append(orig_data[mask]) 

より簡潔なバージョン:

clusters = [orig_data[cluster_assignments == id] for id in xrange(3))] 

データセットは、パンダのデータフレームではなくorig_data.loc[...]orig_data[...]を置き換えるシンプルnumpyの配列の場合。

このコードの出力は、リストclustersです。各要素は、クラスタの1つのみのデータを持つデータセットです。

+0

これはちょうど私がやろうとしていたものです、ありがとう! – Jgreen727

+0

@ Jgreen727 - 喜んで助けてください。あなたの質問に答えるなら、この答えを受け入れてください! – SPKoder

関連する問題