You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Qiskit VQC输出各类别预测概率而非仅分类标签?

获取Qiskit VQC二分类的预测概率

对于Qiskit的VQC二分类任务,要获取每个样本的类别概率(格式[p1,p2]),有几种直接的方法:

  • 直接调用predict_proba()方法
    这是最简便的方式,Qiskit Machine Learning中的VQC类(属于Classifier基类)内置了predict_proba()方法,直接返回每个样本的类别概率数组:

    # 假设vqc是你训练好的模型,X_test是测试数据集
    probabilities = vqc.predict_proba(X_test)
    

    输出的probabilities是形状为(n_samples, 2)的数组,每个元素对应一个样本的[p1, p2],两个概率之和为1,正好满足绘制ROC曲线的需求。

  • 旧版本Qiskit手动获取概率
    如果你的Qiskit版本较旧,predict_proba()不可用,可以直接调用神经网络的forward()方法获取原始概率输出:

    # 从VQC的神经网络模块获取概率
    probabilities = vqc._neural_network.forward(X_test, training=False)
    

    二分类场景下,这个输出同样是每个样本对应两个类别的概率值。

  • 底层手动计算概率(适合自定义电路场景)
    如果你是手动构建量子电路而非直接使用VQC封装类,可以通过运行电路统计测量计数来转换为概率:

    from qiskit import Aer, execute
    
    backend = Aer.get_backend('qasm_simulator')
    probabilities = []
    shots = 1024  # 测量次数,次数越多概率越准确
    
    for x in X_test:
        # 构建包含输入编码的完整量子电路
        circuit = vqc.construct_circuit(x)
        # 执行电路并获取计数结果
        result = execute(circuit, backend, shots=shots).result()
        counts = result.get_counts()
        # 计算两个类别的概率(假设类别对应测量结果'0'和'1')
        p0 = counts.get('0', 0) / shots
        p1 = counts.get('1', 0) / shots
        probabilities.append([p0, p1])
    

拿到概率数组后,就可以用sklearn.metrics.roc_curve和roc_auc_score来绘制ROC曲线了。

内容的提问来源于stack exchange,提问作者Zhelun Li

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 12:56:21