使用get_dummies在Python中进行分类数据评估

时间:2019-04-12 19:34:32

标签: python dataframe categorical-data

我想用决策树评估Python中的分类数据。我想使用分类数据并使用装箱来创建分类标签。我一定要吗? 问题是get_dummies返回的数据帧的长度与给定的值不同。它比原始数据短两行。 以前,我尝试使用labelencode,但没有完成。我尝试了get_dummies形式的熊猫,它们对我来说更容易缝起来。

我检查了get_dummies函数的引用并搜索了问题,但找不到长度较短的原因。

进行装箱:

est = bine(n_bins=50, encode='ordinal', strategy='kmeans')
cat_labels = est.fit_transform(np.array(quant_labels).reshape(-1, 1))

提取分类数据(我必须吗?):

category = rd.select_dtypes(exclude=['number']).astype("category")
category = category.replace(math.nan, "None")
category = category.replace(0, "None")

准备拆分:

one_hot_features = pd.get_dummies(category[1:-1])
X_train, X_test, y_train, y_test = train_test_split(one_hot_features, cat_labels, test_size = 0.6, random_state = None)

错误是:

ValueError: Found input variables with inconsistent number of samples: [1458, 1460]

样本的正确大小为1460。编码的one_hot短两个样本。为什么会这样?

1 个答案:

答案 0 :(得分:1)

在对数据进行编码时,请使用category[1:-1]。这将对从第二个元素到第二个元素到最后一个元素的所有元素进行编码。

说明:

1)索引是从零开始的,所以1是第二项的索引。
2)索引-1表示倒数第二个元素。

解决方案: 将行更改为one_hot_features = pd.get_dummies(category[:])