是否有人知道是否必须解释KBinsDiscretizer提供的箱子边缘?
由于它使用numpy linspace进行统一的装箱,并且默认值为endpoint=True
,所以装箱应该包括最右边的边。那么我如何用大于和小于符号来写呢
以下是一个例子:
from sklearn.datasets import load_iris
from sklearn.preprocessing import KBinsDiscretizer
iris_data = load_iris()
x = iris_data.data
# binning of first feature
est = KBinsDiscretizer(n_bins=3, encode='onehot-dense', strategy='uniform')
x1 = est.fit_transform(x[:,0].reshape(-1, 1))
bin_edges = est.bin_edges_
箱子边缘为[4.3,5.5,6.7,7.9]。这样写对了吗
使用
np.linspace
定义边,但是如果查看source code行303,则使用np.digitize
后跟np.clip
来控制最右边的存储单元来完成赋值:np.digitize的default是
right=False
,因此如果应用于此数据,您的BIN基本上是正确的。您可以检查边界:您应该注意,如果您的值超出了bin边缘,它们将自动指定给边界bin,请参见np.digitize。这意味着,我们尝试使用越界值4.1和8.1:
它们分别被分配到第一个和最后一个箱子。严格来说,垃圾箱是:
相关问题 更多 >
编程相关推荐