我正在研究一种 ML 算法,在该算法中,我试图将连续目标值转换为小容器,以更好地理解问题。从而做出更好的预测。我最初的问题是回归问题,但我通过制作带有标签的小箱子将其转化为分类问题。
我做了如下,
from sklearn.preprocessing import KBinsDiscretizer
est = KBinsDiscretizer(n_bins=3, encode='ordinal', strategy='uniform')
s = est.fit(target)
Xt = est.transform(s)
它显示如下值错误。然后我将数据重塑为 2D。但我无法解决它。
ValueError:预期的二维数组,得到的是一维数组:
from sklearn.preprocessing import KBinsDiscretizer
myData = pd.read_csv("train.csv", delimiter=",")
target = myData.iloc[:,-5] # this is a continuous data which must be
# converted into bins with a new column.
xx = target.values.reshape(21263,1)
est = KBinsDiscretizer(n_bins=3, encode='ordinal', strategy='uniform')
s = est.fit(xx)
Xt = est.transform(s)
你可以看到我的目标有 21263 行。我必须将它们分成 10 个相等的箱子,并将其写入数据框中的一个新列。感谢您的指导。
PS:最大目标值:185.0
最小目标值:0.00021
原文由 Mass17 发布,翻译遵循 CC BY-SA 4.0 许可协议
好的,我能够解决它。无论如何,如果将来有人需要这个,我会发布答案。我用
pandas.qcut
这解决了我的问题。