python - 对多标签 predict_proba 的输出进行切片
问题描述
我正在使用 scikit-learn MultiOutputClassifier 并使用以下方法为 7 个不同的类创建多标签输出:
multilabel_model.predict_proba(X_test)
(7, 14545, 2)
这给了我一个形状为 0 和为 1 的类的概率的数组:
[array([[9.7169727e-01, 2.8302711e-02],
[9.9807453e-01, 1.9254771e-03],
[9.9955606e-01, 4.4392250e-04],
...,
[9.9957782e-01, 4.2216384e-04],
[9.9833119e-01, 1.6688267e-03],
[9.9959826e-01, 4.0173010e-04]], dtype=float32),
array([[9.7968739e-01, 2.0312620e-02],
[9.9961036e-01, 3.8966016e-04],
[9.9990100e-01, 9.8974662e-05],
...,
现在我正在寻找一种对数组进行切片的方法,以便输出仅包含 7 个可能类中的每一个等于 1 的概率,即输出如下所示:
[[0.3,0.45,0.2,0.1,0.1,0.45,0.2],
[0.1,0.45,0.2,0.3,0.45,0.2,0.1],
...]
有没有办法使用一些切片魔法来实现这一点,或者这是否需要一个复杂的自定义函数?
解决方案
要提取1
(第二个位置)的概率,请使用:
probas = multilabel_model.predict_proba(X_test)
# probas.shape == (7, 14545, 2)
one_probas = probas[:, :, 1].reshape((probas.shape[1], probas.shape[0]))
# one_probas.shape == (14545, 7)
推荐阅读
- openstack - 如何立即强制触发 aodh 警报动作?
- python - 无法将数据保存到 Django Rest Framework 中的外键字段中
- python - ModuleNotFoundError:没有名为“pyttsx3”的模块
- python - 使用 C API 创建 Python 包
- python - 将标记添加到 Librosa Waveplot Python
- python - 如何将不断变化的值附加到列表中?
- java - 州际公路(爪哇)
- python - Python requests 选项将参数转换为“&”
- html - 为什么我的引导程序不能在 hostgators 服务器上运行?
- sql - 如何在配置单元中过滤掉整组批处理记录