scikit-learn - NNS : Is there a way to omit certain features in a prediction?

标签 scikit-learn knn amazon-sagemaker

我想使用如下内容训练最近邻搜索模型 -

        | feature_A | feature_B | feature_C |
---------------------------------------------
point_1 |       0.0 |       5.1 |      94.9 |
point_2 |      80.7 |      35.3 |      64.7 |

等等,还有更多的特征和数据点。

然后我们可以传递一个点进行预测,例如 [0.3, 5.0, 94.0] -> 返回 point_1,这在最近邻搜索中很典型。

我还想做的是为某个特征或特征子集传递一个值并返回最近点,忽略所有其他特征,如下所示:

[None, 5.0, None] -> 返回 point_1

[80.0, None, 64.7] -> 返回 point_2

问题是这些空值无法传递给模型,也无法真正将它们推断为 0.0,因为这不是预测所要求的。该特征需要在计算中完全省略。

有没有一种方法可以使用 Sagemaker/Scikit-learn 库在本地执行此操作,而无需构建多个模型或编写 NNS 的自定义实现?

最佳答案

一般来说,对缺失数据进行预测是一个很难解决的问题。

用统计术语来说:某个测试点 xₜ 的预测最近邻表示为 ŷ(xₜ)。让 xₜ 的一些组件丢失,所以我们写 xₜ=(zₜ,wₜ),其中组件 wₜ 丢失。然后,模型预测 k 的置信度可以写成 Pr(ŷ(xₜ)=k)=P(ŷ(zₜ)=k)= ∫I(k=ŷ (zₜ,w))p(w|zₜ)dw,其中 I(t)=1 如果 t=true0否则。最后,您可以选择预测 ỹ(xₜ) 作为 Pr(ŷ(xₜ)=k) 的模式,即 ỹ(xₜ) = argmax_k Pr(ŷ(xₜ)=k).

这是一个棘手的问题,因为您需要估计一些条件密度来计算积分。您还需要计算所有可能的最近邻居的积分。

如果您做出一些限制性假设,例如完全随机缺失,则问题会从独立性简化为 p(w|zₜ)=p(w)。不过,您的预测可能会更糟。没有解决此问题的简单方法。

因此,您需要在统计可靠性和实际应用之间进行权衡。这通常是由某种归责造成的。我认为您应该有一些插补技术来合理地捕获数据中的相关性。

我可能会使用 knn-imputer in sklearn估算缺失值,然后对估算数据进行最近邻搜索。

关于scikit-learn - NNS : Is there a way to omit certain features in a prediction?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59976380/

相关文章:

amazon-web-services - Sagemaker 的 IAM 角色?

python - 支持向量回归在线学习

amazon-web-services - 我希望我的 lambda 代码能够将文件直接上传到不同账户的 Amazon S3 存储桶中

machine-learning - 使用 StandartScaler 处理的数据帧可以包含值 >1 或 <-1 吗?

algorithm - 为什么 KNN 的余弦距离比欧几里得距离快得多?

machine-learning - kNN 中的特征选择和重要特征

algorithm - 在大集合中寻找最近的邻居

python - 模块未找到错误: No module named 'whisper' when trying install in sagemaker

scikit-learn - scikit-learn 中自定义内核 SVM 的交叉验证

python - 如何关联 Pandas 中的序数分类列?