首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >所有回收箱的sklearn.KBinsDiscretizer返回0

所有回收箱的sklearn.KBinsDiscretizer返回0
EN

Stack Overflow用户
提问于 2019-10-13 08:37:52
回答 1查看 1.1K关注 0票数 0

我有一个数字阵列的形状(1,188)。尝试使用KBinsDiscretizer创建回收箱,但它只给了我零个带注释的回收箱。

代码语言:javascript
复制
 # transform the dataset with KBinsDiscretizer
    enc = KBinsDiscretizer(n_bins=18, encode='ordinal' ,strategy='uniform')#strategy='uniorm'

    test =(np.asarray(list_event_MES).astype(np.float)).reshape(1, -1)
    print(test)
    print(test.shape)

    enc.fit(test)
    test2 = enc.transform(test)
    print(test2.tolist())

所有回收箱都会返回零。

输入法:[0.13614053 0.14069501 0.08270327 0.26015096 0.15958708 0.16834299 0.14913976 0.11897561 0.23232807 0.0892398 0.1637264 0.17120459 0.19350733 0.18131615 0.15176006 0.19068352 0.24293008。……0.2112216 0.21829195 0.28169516 0.27585681 0.27317305 0.1849694 0.23402622 0.24994829 0.20873297 0.25534803 0.15556027 0.27226802 0 0.14180543 0.24001428] 形状:(1,188) 对188个列的警告: /miniconda3/lib/python3.7/site-packages/sklearn/preprocessing/_discretization.py:159: UserWarning: Feature0是常量,将被替换为0。“替换为0.JJ) /miniconda3/lib/python3.7/site-packages/sklearn/preprocessing/_discretization.py:159: UserWarning:特性1是常量,将被0替换。% jj) /miniconda3/lib/python3.7/site-packages/sklearn/preprocessing/_discretization.py:159: UserWarning: Feature2是常量,将被0替换。“改为0.”% jj)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-13 18:29:23

根据数组(1,188)的形状,我们可以推断只有1示例和188特性。根据文档 ofKBinsDiscretizer,它用于将连续数据绑定到间隔中,并且它发生在一个特性级别上,即对于每个特性(换句话说,对于数据的每一列),KBinsDiscretizer计算bin间隔,然后回放数据,其示例如下所示:

代码语言:javascript
复制
X = [[-2, 1, -4,   -1],
     [-1, 2, -3, -0.5],
     [ 0, 3, -2,  0.5],
     [ 1, 4, -1,    2]]
est = KBinsDiscretizer(n_bins=3, encode='ordinal', strategy='uniform')
est.fit(X)  

Xt = est.transform(X)
Xt  

array([[ 0., 0., 0., 0.],
      ​[ 1., 1., 1., 0.],
      ​[ 2., 2., 2., 1.],
      ​[ 2., 2., 2., 2.] 

在这里,对于每一列,离散化程序计算bin间隔并将它们装箱。在您的例子中,每个特性只有一个数据点,所以计算箱没有任何意义。相反,如果您的数据是形状为(188,1)的--即使用188示例和1特性--那么它的工作原理非常完美,如下所示:

代码语言:javascript
复制
enc = KBinsDiscretizer(n_bins=18, encode='ordinal' ,strategy='uniform')
list_event_MES = np.random.normal(0,2,188).reshape(-1,1)
test =(np.asarray(list_event_MES))
print(test.shape)
(188,1)

enc.fit(test)
test2 = enc.transform(test)

print(test2[0:5])

array([[12.],
   [12.],
   [ 7.],
   [ 9.],
   [ 3.]])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58361880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档