将通过 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
,其中每个元素都是一个数据集,其中仅包含一个集群的数据。
我有一个非常大的数据集,我运行是一个聚类模型。集群输出一个 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
,其中每个元素都是一个数据集,其中仅包含一个集群的数据。