Qiskit AttributeError: объект «SamplerPubResult» не имеет атрибута «get_statevector»Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Qiskit AttributeError: объект «SamplerPubResult» не имеет атрибута «get_statevector»

Сообщение Anonymous »

Я использую qiskit 1.2.2m и получаю эту ошибку
AttributeError Traceback (последний вызов последний)
в ()
88
89 # Вычисление квантового ядра
---> 90 Quantum_kernel_train = Compute_quantum_kernel(X_train, X_train, Feature_map, Backend, Batch_size)
91 Quantum_kernel_test = Compute_quantum_kernel(X_test, X_train, Feature_map, Backend, Batch_size) )
92
в Compute_quantum_kernel(X1, X2, Feature_map, Backend, Batch_size)
73 для k, схема в Enumerate(qc_list):
74 Circuit_result = job.result()[k] # Результат доступа для каждой схемы
---> 75 statevector = Circuit_result.get_statevector(circuit) # Получить вектор состояния из схемы
76 statevector1 = np.abs(statevector ) ** 2
77 qc2 = QuantumCircuit(feature_map.num_qubits)
AttributeError: объект «SamplerPubResult» не имеет атрибута «get_statevector»
Вот мой код
import pandas as pd
import numpy as np
import joblib
from sklearn.preprocessing import MinMaxScaler
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score
from qiskit_aer import Aer # Import Aer for simulator backend
from qiskit.primitives import StatevectorSampler # Import StatevectorSampler from qiskit.primitives
from qiskit.circuit.library import ZZFeatureMap
from qiskit import QuantumCircuit, transpile
import matplotlib.pyplot as plt

# Load data
data = pd.read_csv("/content/drive/MyDrive/dataset/x.csv")

# Convert 'timestamp' to datetime format
data["timestamp"] = pd.to_datetime(data["timestamp"])
data.set_index("timestamp", inplace=True)

# Select relevant features and target variable
features = ["open", "high", "low", "close", "volume"]
target = "close"
X = data[features]
y = data[target]

# Convert target to binary classification
y_binary = (y.shift(-1) > y).astype(int).dropna()
X = X.iloc[:-1] # Align X with y_binary

# Normalize features
scaler = MinMaxScaler()
X_scaled = scaler.fit_transform(X)
y_binary = y_binary.iloc[:-1] # Ensure alignment

# Train/test split
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y_binary, test_size=0.2, shuffle=False)

X_train = X_train[:50] # Limit to 50 samples for training
y_train = y_train[:50]
X_test = X_test[:20] # Limit to 20 samples for testing
y_test = y_test[:20]

# Define feature map for quantum kernel
feature_map = ZZFeatureMap(feature_dimension=X_train.shape[1], reps=2, entanglement="full")

# Quantum backend (simulator)
backend = Aer.get_backend("aer_simulator")
batch_size = 100 # Adjust batch size

def compute_quantum_kernel(X1, X2, feature_map, backend, batch_size):
"""Compute quantum kernel using statevector similarity."""
num_samples1 = X1.shape[0]
num_samples2 = X2.shape[0]
kernel_matrix = np.zeros((num_samples1, num_samples2))
sampler = StatevectorSampler() # Updated sampler class for Qiskit 1.2.2

for i in range(0, num_samples1, batch_size):
end_i = min(i + batch_size, num_samples1)
for j in range(num_samples2):
qc_list = []
for k in range(i, end_i):
qc = QuantumCircuit(feature_map.num_qubits)
qc.append(feature_map, range(feature_map.num_qubits))
qc = qc.assign_parameters(X1[k])
# Add measurement instructions
qc.measure_all() # Measure all qubits
qc_list.append(qc)
transpiled_qc_list = transpile(qc_list, backend)
job = sampler.run(transpiled_qc_list)

for k, circuit in enumerate(qc_list):
statevector = sampler.get_statevector(circuit) # Get statevector for each circuit
statevector1 = np.abs(statevector.data) ** 2
qc2 = QuantumCircuit(feature_map.num_qubits)
qc2.append(feature_map, range(feature_map.num_qubits))
qc2 = qc2.assign_parameters(X2[j])
qc2.measure_all() # Measure all qubits
transpiled_qc2 = transpile(qc2, backend)
job2 = sampler.run([transpiled_qc2])
result2 = job2.result()
statevector2 = np.abs(result2.statevectors[0].data) ** 2
kernel_matrix[i + k, j] = np.abs(np.dot(statevector1, statevector2)) ** 2

return kernel_matrix

# Compute quantum kernel
quantum_kernel_train = compute_quantum_kernel(X_train, X_train, feature_map, backend, batch_size)
quantum_kernel_test = compute_quantum_kernel(X_test, X_train, feature_map, backend, batch_size)

# Train SVM with quantum kernel
svm = SVC(kernel='precomputed')
svm.fit(quantum_kernel_train, y_train)

# Save model
joblib.dump(svm, 'svm_model.joblib')

# Predict and evaluate
y_pred = svm.predict(quantum_kernel_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"Model accuracy: {accuracy:.2f}")

# Plot results
plt.figure(figsize=(10, 6))
plt.plot(y_test.reset_index(drop=True), label='True Prices', color='blue')
plt.plot(y_pred, label='Predicted Prices', color='orange')
plt.title('True vs Predicted Prices')
plt.xlabel('Sample Index')
plt.ylabel('Price Direction')
plt.legend()
plt.grid()
plt.show()


Подробнее здесь: https://stackoverflow.com/questions/790 ... -statevect
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»