【发布时间】:2020-11-09 16:32:20
【问题描述】:
我正在研究一个机器学习问题,我正在使用 Sklearn KBinsDiscretizer 对一些连续变量进行离散化。
discretizer = KBinsDiscretizer(n_bins=8, encode='onehot')
discretizer.fit(dfDisc)
discretizer.transform(X_train)
在转换之前,我的 X_train.columns 返回:
["A", "B", "C", "D", "E", "F", "G", "H", "I", "J"]
经过转换(并作为 pandas df 放回)后,X_train.columns 给出:
[0, 1, 2, 3, 4, 5, ......, 66, 67, 68]
由于我正在按变量的原始名称(A、B、C、...、J)分析变量,并且必须就哪些变量用于我的分类提供反馈,我正在寻找一种方法来了解哪些变量变量与输出的编号相关联。例如,我希望将输出 X_train.columns 转换为
["A_0", "A_1", "A_2", "A_3", "A_4", "B_0", "B_1", "B_2", "B_3", ... ]
我知道在使用 sklearn OneHotEncoder (get_feature_names) 时存在这样的命令,但我找不到任何使用 KBinsDiscretizer 的方法。
我必须解决这个问题的一个想法是为每个变量创建一个特定的离散化器,然后将关联的离散化器应用到每一列,并在合并所有内容之前手动重命名列,但这将是一团糟,因为我必须保存我的离散化器...
此外,即使我指定 n_bins = 8,我的 10 个条目中有 69 个输出列,因此 1 个条目并不总是产生 10 个输出,我也不能使用它来设置列名。
【问题讨论】:
标签: python python-3.x pandas scikit-learn sklearn-pandas