【问题标题】:Element-wise multiplication between vector and scalar with two matrices向量和标量之间的元素乘法与两个矩阵
【发布时间】:2021-08-24 21:30:01
【问题描述】:

我在一个包含 2 个类和 150 个样本的数据集上运行了一个包含 2 个分类器的分类实验。分类器是具有 predict_proba() 方法的 scikit-learn 对象。此方法返回一个形状数组(samplesclasses),其中包含每个样本的概率分布。我还计算了另一个矩阵G,其形状为 (samples, 2),其中包含每个分类器对每个样本的“重要性”。

最终输出必须是每个predict_proba() 行和G 中的标量的线性组合。单个样本的示例:

G = np.array([0.3, 0.7])

classifier_1_proba = np.array([0.6, 0.4])
classifier_2_proba = np.array([0.2, 0.8])

Y = classifier_1_proba * G[0] + classifier_2_proba * G[1]

仅使用一个样本/输出就很容易,但我不知道如何使用多个样本(例如整个测试集)来完成。

【问题讨论】:

    标签: python numpy scikit-learn classification


    【解决方案1】:

    我认为这对你有用:

    Y = c1_proba * G[:, 0, None] + c2_proba * G[:, 1, None]
    

    假设分类器概率矩阵 c1_probac2_proba 和权重 G 都是您提到的二维 numpy 数组。

    【讨论】:

    • 感谢您的帮助。这确实完成了工作,但我认为在使用大量分类器时很难扩展,对吧?我正在考虑一种将所有c*_proba 2D 数组保存在 3D 数组中并从那里操作它们的方法。你对这个想法有什么想法吗?
    • 我们在这里讨论了多少分类器?我猜由于上面的代码使用了广播,因此预计可以很好地扩展。你真的检查过很多没有。分类器?
    • 或者你的意思是没有。分类器的数量是不固定的或事先不知道的,所以不可能像上面那样写Y作为总和?
    • 是的,我无法知道分类器的数量先验,因为它是网格搜索实验的参数。
    • 是的,我认为您完全可以使用 3D 分类器预测数组 C 并通过类似 (C * G).sum(axis = ...) 的操作相应地重塑 Gaxis 参数的具体细节需要CG 的形状。
    猜你喜欢
    • 2011-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-16
    • 2019-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多