将通过 numpy 数组分配的集群转换为单独的数据集

Turning clusters assigned through numpy array into separate datasets

我有一个非常大的数据集,我运行是一个聚类模型。集群输出一个 numpy 数组,格式如下:

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

我想拿原始数据集,并根据数组创建三个数据集。我该怎么做?

初始数据集工作:

 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)

我假设您的数据集是一个 numpy 数组。尝试为 select 原始数据集中所需的元素创建掩码。一些冗长的代码:

# 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))]

如果您的数据集是 pandas 数据框而不是 numpy 数组,只需将 orig_data[...] 替换为 orig_data.loc[...]

此代码的输出是一个列表 clusters,其中每个元素都是一个数据集,其中仅包含一个集群的数据。