如何在 Qiskit python 中调用 EnergyInput() 函数?
How to call EnergyInput() function in Qiskit python?
我想用 Qiskit 实现 SVM。我使用了以下代码。
from qiskit import Aer
from qiskit.aqua.utils import split_dataset_to_data_and_labels
from qiskit.aqua.input import get_input_instance
from qiskit.aqua import run_algorithm
n = 2 # dimension of each data point
sample_Total, training_input, test_input, class_labels = Breast_cancer(training_size=40,
test_size=10, n=n, PLOT_DATA=True)
temp = [test_input[k] for k in test_input]
total_array = np.concatenate(temp)
aqua_dict = {
'problem': {'name': 'svm_classification', 'random_seed': 100},
'algorithm': {
'name': 'QSVM.Kernel'
},
'feature_map': {'name': 'SecondOrderExpansion', 'depth': 2, 'entangler_map': {0: [1]}},
'multiclass_extension': {'name': 'AllPairs'},
'backend': {'name': 'qasm_simulator', 'shots': 256}
}
algo_input = get_input_instance('SVMInput')
algo_input.training_dataset = training_input
algo_input.test_dataset = test_input
algo_input.datapoints = total_array
result = run_algorithm(aqua_dict, algo_input)
for k,v in result.items():
print("'{}' : {}".format(k, v))
但是这段代码显示了这个错误
ImportError: cannot import name 'get_input_instance'
这是因为此方法已从 Qiskit 中删除。我从 this github 问题中得到了这条信息。他们建议以类似的方式使用 EnergyInput() 而不是 get_input_instance() 。于是我将之前的代码修改为如下方式。
!pip install qiskit
from qiskit import Aer
from qiskit.aqua.utils import split_dataset_to_data_and_labels
from qiskit.aqua.input import EnergyInput
from qiskit.aqua import run_algorithm
algo_input = EnergyInput('SVMInput')
algo_input.training_dataset = training_input
algo_input.test_dataset = test_input
algo_input.datapoints = total_array
现在这段代码表明 EnergyInput 不能接受任何类型的 String 输入。这会产生以下错误。
AttributeError: 'str' object has no attribute 'to_dict'
我可以在这张截图中展示整个错误。
查看 this tutorial 关于创建 QSVM 的内容。他们使用名为 ClassificationInput()
的 class 而不是 EnergyInput()
,并将数据传递到该 class。
这使得整体表达:
algo_input = ClassificationInput(training_input, test_input, datapoints[0])
我想用 Qiskit 实现 SVM。我使用了以下代码。
from qiskit import Aer
from qiskit.aqua.utils import split_dataset_to_data_and_labels
from qiskit.aqua.input import get_input_instance
from qiskit.aqua import run_algorithm
n = 2 # dimension of each data point
sample_Total, training_input, test_input, class_labels = Breast_cancer(training_size=40,
test_size=10, n=n, PLOT_DATA=True)
temp = [test_input[k] for k in test_input]
total_array = np.concatenate(temp)
aqua_dict = {
'problem': {'name': 'svm_classification', 'random_seed': 100},
'algorithm': {
'name': 'QSVM.Kernel'
},
'feature_map': {'name': 'SecondOrderExpansion', 'depth': 2, 'entangler_map': {0: [1]}},
'multiclass_extension': {'name': 'AllPairs'},
'backend': {'name': 'qasm_simulator', 'shots': 256}
}
algo_input = get_input_instance('SVMInput')
algo_input.training_dataset = training_input
algo_input.test_dataset = test_input
algo_input.datapoints = total_array
result = run_algorithm(aqua_dict, algo_input)
for k,v in result.items():
print("'{}' : {}".format(k, v))
但是这段代码显示了这个错误
ImportError: cannot import name 'get_input_instance'
这是因为此方法已从 Qiskit 中删除。我从 this github 问题中得到了这条信息。他们建议以类似的方式使用 EnergyInput() 而不是 get_input_instance() 。于是我将之前的代码修改为如下方式。
!pip install qiskit
from qiskit import Aer
from qiskit.aqua.utils import split_dataset_to_data_and_labels
from qiskit.aqua.input import EnergyInput
from qiskit.aqua import run_algorithm
algo_input = EnergyInput('SVMInput')
algo_input.training_dataset = training_input
algo_input.test_dataset = test_input
algo_input.datapoints = total_array
现在这段代码表明 EnergyInput 不能接受任何类型的 String 输入。这会产生以下错误。
AttributeError: 'str' object has no attribute 'to_dict'
我可以在这张截图中展示整个错误。
查看 this tutorial 关于创建 QSVM 的内容。他们使用名为 ClassificationInput()
的 class 而不是 EnergyInput()
,并将数据传递到该 class。
这使得整体表达:
algo_input = ClassificationInput(training_input, test_input, datapoints[0])