import category_encoders as ce
ord_Ce = ce.ordinal.OrdinalEncoder()
ord_Ce.fit_transform(pd.DataFrame([2, np.nan, 3]).astype(object))
产生2->1, np.nan->0, 3->3
编码。为什么在编码时缺少2。在我看来,3应该由编码器编码为2。为何会有这种行为?
答案 0 :(得分:2)
通过source code进行跳过可以发现,在ordinal_encoding
函数中,列举了类别数(总共3个类别,从1开始),并且这些数字也用于编码>
categories_dict = {x: i + 1 for i, x in enumerate(categories)}
X[str(col) + '_tmp'] = X[col].map(lambda x: categories_dict.get(x))
随后将缺失值归为0。
概述:np.nan具有类别2,该类别在后期处理步骤中转换为0