我正在研究一种ML算法,在该算法中,我试图将连续目标值转换为小区间,以更好地理解问题。因此可以做出更好的预测。我最初的问题是回归,但是我通过制作带有标签的小垃圾箱将其转换为分类。
我照做了,
byte[] code_word_array = ByteBuffer.allocate(5)
.putInt(Integer.parseInt("10000110", 2))
.array();
它显示一个值错误,如下所示。然后,我将数据重塑为2D。但我无法解决。
ValueError:预期的2D数组,取而代之的是1D数组:
from sklearn.preprocessing import KBinsDiscretizer
est = KBinsDiscretizer(n_bins=3, encode='ordinal', strategy='uniform')
s = est.fit(target)
Xt = est.transform(s)
您可以看到我的目标有21263行。我必须将它们分成10个相等的bin,并将其写入数据框的新列中。感谢您的指导。
P.S .:
最高目标值:185.0
最小目标值:0.00021
答案 0 :(得分:1)
好的,我能够解决它。无论如何,如果将来有人需要,我会发布答案。我使用了colors
pandas.qcut
这解决了我的问题。
答案 1 :(得分:0)
第一次尝试中的错误是将fit函数的输出转换为transform。 .fit()
返回拟合的模型,而不是输入数据。正确的方法是以下任何一种。
from sklearn.preprocessing import KBinsDiscretizer
est = KBinsDiscretizer(n_bins=3, encode='ordinal', strategy='uniform')
Xt = est.fit_transform(target)
或
from sklearn.preprocessing import KBinsDiscretizer
est = KBinsDiscretizer(n_bins=3, encode='ordinal', strategy='uniform')
est.fit(target)
Xt = est.transform(target)
答案 2 :(得分:0)
在处理Titanic数据集时,我遇到了类似的问题。我发现我的一个函数将我的列转换为浮点数,然后将其更改为整数,这似乎可以解决问题。另外,使用双方括号调用特定的列名称对我也有效:
from sklearn.preprocessing import KBinsDiscretizer
est = KBinsDiscretizer(n_bins=5, encode='onehot-dense', strategy='uniform')
new = est.fit_transform(dataset[['column_name']])