Начиная работать с Qiskit и погружаясь в изучение приложений машинного обучения в квантовой области, вы наверняка быстро зайдете в тупик. Стараясь выбраться из него в попытке что-то сделать со своими данными, вы, вероятно, будете знакомиться с примерами учебника по Qiskit, заглядывать в соответствующие репозитории на GitHub, обращаться к другим источникам, таким как Kaggle, руководства на YouTube или сайт вопросов и ответов Quantum Computing Stack Exchange.

После анализа начальных демонстраций QSVM, VQC и/или QSVC вам станет ясно, что почти все они используют специфические “демонстрационные” массивы, встроенные фреймы данных или специально подготовленные фиктивные “квантово-представленные” переменные. Типичным примером может служить набор данных “вино”. В коде будет нечто подобное:

from qiskit.ml.datasets import wine

Такая запись может быть полезна только для начальных тестов и ознакомления с кодом. Однако в ней отсутствует важнейшая информация: полная схема кодирования данных, их технологическая подготовка (EDA), уменьшение размерности и некоторые другие шаги, необходимые для использования реальных данных в квантовых цепочках.

Другой проблемой является использование более значительного числа размерностей и точек данных. Почти все официальные и неофициальные публичные фрагменты кода Qiskit используют минимальное количество размерностей и образцов для обучения и тестирования. Например:

n = 2  # размерность каждой точки данных
sample_Total, training_input, test_input, class_labels = wine(training_size=24, test_size=6, n=n, plot_data=True)

Проблема здесь заключается в быстром переходе к карте признаков, бэкенду, экземпляру и определению модели без какой-либо глубокой “работы с данными”, а также в примитивном подходе с использованием набора данных, который уже был подготовлен как “хороший пример”. Остается только восхищаться подобным результатом:

testing_accuracy : 1.0
test_success_ratio : 1.0
predicted_labels : [0 1 2 2 2 2]
predicted_classes : ['A', 'B', 'C', 'C', 'C', 'C']

К сожаленью, это не реальный результат, о чем вы наверняка догадались. Что же предпринять, чтобы продолжить исследования с использованием данных? Ниже приведены несколько шагов и предложений.

Можете использовать наборы данных Kaggle, связанные с финансами, розничной торговлей, здравоохранением или любой другой темой, которая вам кажется интересной.

Публичные наборы данных для изучения

Предположим, у вас есть закодированный фрейм данных с базовым EDA и с целочисленной целевой переменной. В этом случае можно приступить к следующим простым, но важным шагам: стандартизации (StandardScaler), удалению среднего значения, масштабированию до единичной дисперсии и уменьшению размерности (PCA).

scaler = StandardScaler()
scaler.fit(df)
df_scaler = scaler.transform(df)

n_dim = 3
pca = PCA(n_dim)
pca.fit(df)
df_pca = pca.transform(df_scaler)

Количество измерений, используемых в PCA, должно быть равно количеству кубитов, необходимых для последующего запуска квантовой модели.

Наконец, можно разделить набор данных и создать обучающий и тестовый вход для квантовой или гибридной квантовой модели, а также настроить конфигурацию для алгоритма, карты признаков, бэкенда и некоторых других переменных, которые вам понадобятся. В этом примере представлен VQC (вариационный квантовый классификатор):

feature_map = ZZFeatureMap(feature_dimension=feature_dim, reps=2)

optimizer = SPSA(maxiter=40, c0=4.0, skip_calibration=True)

var_form = TwoLocal(feature_dim, ['ry', 'rz'], 'cz', reps=3)

vqc = VQC(optimizer, feature_map, var_form, training_input, test_input, datapoints[0])

backend = BasicAer.get_backend('qasm_simulator')

quantum_instance = QuantumInstance(backend, shots=1024, seed_simulator=seed, seed_transpiler=seed)

result = vqc.run(quantum_instance)

Осталось обсудить еще много вопросов относительно результатов ваших исследований и времени, необходимого для их получения при увеличении количества используемых кубитов/размерностей, а также более значительного количества точек данных с применением как симуляторов, так и реальных квантовых машин. Кроме того, вам придется пройти через множество различных установок и провести несколько тестов. Для этого у вас есть несколько альтернатив:

  1. Просто зайдите в блокнот Jupyter Notebook и начните исследование.
  2. Постарайтесь поближе познакомиться с сообществом Qiskit и его сторонниками, чтобы расширить свои знания и найти ответы на все вопросы.
  3. Обратитесь к специалистам по QML, чтобы пройти весь процесс вместе с ними, либо запросите обучение или консультации у таких компаний, как Quanvia.

Читайте также:

Читайте нас в Telegram, VK и Дзен


Перевод статьи Javier Mancilla: Example vs. Reality. How can I train a Quantum Machine Learning model using data from a CSV?

Предыдущая статьяЭффективное итерирование по строкам в Pandas DataFrame
Следующая статьяБитва 4 инструментов визуализации данных на языке Python