首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MaskedArray上进行预测的分类器

在MaskedArray上进行预测的分类器
EN

Stack Overflow用户
提问于 2021-01-08 13:51:39
回答 1查看 302关注 0票数 4

我试图弄清楚如何处理numpy蒙面数组上的分类器预测(而不是常规的numpy数组)。这是我的代码:

代码语言:javascript
复制
# My masked array on which to perform the prediction
>>> type(patch)
    numpy.ma.core.MaskedArray
>>> patch.shape
    (3,3,14)
# This is how it looks like the first layer in the 3rd dimension. 
>>> patch[:,:,0]
    masked_array(
  data=[[90, 28, 16],
        [79, 32, --],
        [41, --, --]],
  mask=[[False, False, False],
    [False, False,  True],
    [False,  True,  True]],
 fill_value=999999,
 dtype=uint16)

在上面的代码中,您可以看到第三维度中的第一层。从patch.shape中可以看到,有14个层。每个人都有自己的位置:(1,2),(2,1)和(2,2)蒙面!

现在,我使用经过预先训练的RandomForest分类器cl来对I为1,4,6的补丁的值进行分类。我希望分类器忽略分类过程中的蒙面值,但在完成之后:

代码语言:javascript
复制
>>> class_pred = cl.predict(patch.reshape(-1, patch.shape[2]))
>>> class_pred = class_pred.reshape(patch[:,:,0].shape)

我得到:

代码语言:javascript
复制
>>> class_pred 
    array([[4, 4, 4],
           [4, 4, 1],
           [4, 1, 1]])

因此,在(1,2),(2,1)和(2,2)的位置不再蒙面,但他们也被分类。

是否有办法迫使分类器在分类过程中忽略蒙面值?为了得到这样的东西:

代码语言:javascript
复制
masked_array(
  data=[[4, 4, 4],
        [4, 4, --],
        [4, --, --]],
  mask=[[False, False, False],
    [False, False,  True],
    [False,  True,  True]],
 fill_value=999999,
 dtype=uint16)
EN

回答 1

Stack Overflow用户

发布于 2022-07-14 13:18:30

现在的答案是,我认为: Scikit学习忽略了传递的数据上的掩码。不管蒙面数组的底层值在蒙面数据中是什么,分类器都将对fitpredict使用,因此您将得到一个类值。

对于您的具体情况:输入有一个矩阵结构有多重要?如果这些输入总是被屏蔽(例如,因为它们是三角形数组),您可能希望将它们分解为向量。即使是像图像这样的完整方阵,人们也会这样做(比如ConvNet )。

从更广泛的意义上讲,如果您正在做的是表示缺失的值,那么我必须说,这种ML仍然处于一个边缘阶段(但以一种速度前进)。我可以推荐你的书“统计分析与缺失的数据”,其中有相当多的算法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65630258

复制
相关文章

相似问题

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