---
title: pauli_feature_map (v1.3)
description: API reference for qiskit.circuit.library.pauli_feature_map in qiskit v1.3
source: https://eu-de.quantum.cloud.ibm.com/docs/en/api/qiskit/1.3/qiskit.circuit.library.pauli_feature_map
---

# pauli\_feature\_map

*class* `qiskit.circuit.library.pauli_feature_map(feature_dimension, reps=2, entanglement='full', alpha=2.0, paulis=None, data_map_func=None, parameter_prefix='x', insert_barriers=False, name='PauliFeatureMap')`

[GitHub](https://github.com/Qiskit/qiskit/tree/stable/1.3/qiskit/circuit/library/data_preparation/pauli_feature_map.py#L43-L167)

Bases:

The Pauli expansion circuit.

The Pauli expansion circuit is a data encoding circuit that transforms input data $\vec{x} \in \mathbb{R}^n$, where $n$ is the `feature_dimension`, as

$$
U_{\Phi(\vec{x})}=\exp\left(i\sum_{S \in \mathcal{I}}
\phi_S(\vec{x})\prod_{i\in S} P_i\right).
$$

Here, $S$ is a set of qubit indices that describes the connections in the feature map, $\mathcal{I}$ is a set containing all these index sets, and $P_i \in \{I, X, Y, Z\}$. Per default the data-mapping $\phi_S$ is

$$
\phi_S(\vec{x}) = \begin{cases}
x_i \text{ if } S = \{i\} \\
\prod_{j \in S} (\pi - x_j) \text{ if } |S| > 1
\end{cases}.
$$

The possible connections can be set using the `entanglement` and `paulis` arguments. For example, for single-qubit $Z$ rotations and two-qubit $YY$ interactions between all qubit pairs, we can set:

```python
circuit = pauli_feature_map(..., paulis=["Z", "YY"], entanglement="full")
```

which will produce blocks of the form

```text
┌───┐┌─────────────┐┌──────────┐                                            ┌───────────┐
┤ H ├┤ P(2.0*x[0]) ├┤ RX(pi/2) ├──■──────────────────────────────────────■──┤ RX(-pi/2) ├
├───┤├─────────────┤├──────────┤┌─┴─┐┌────────────────────────────────┐┌─┴─┐├───────────┤
┤ H ├┤ P(2.0*x[1]) ├┤ RX(pi/2) ├┤ X ├┤ P(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├┤ RX(-pi/2) ├
└───┘└─────────────┘└──────────┘└───┘└────────────────────────────────┘└───┘└───────────┘
```

The circuit contains `reps` repetitions of this transformation.

Please refer to `z_feature_map()` for the case of single-qubit Pauli-$Z$ rotations and to `zz_feature_map()` for the single- and two-qubit Pauli-$Z$ rotations.

**Examples**

```python
>>> prep = pauli_feature_map(2, reps=1, paulis=["ZZ"])
>>> print(prep)
     ┌───┐
q_0: ┤ H ├──■──────────────────────────────────────■──
     ├───┤┌─┴─┐┌────────────────────────────────┐┌─┴─┐
q_1: ┤ H ├┤ X ├┤ P(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├
     └───┘└───┘└────────────────────────────────┘└───┘
```

```python
>>> prep = pauli_feature_map(2, reps=1, paulis=["Z", "XX"])
>>> print(prep)
     ┌───┐┌─────────────┐┌───┐                                            ┌───┐
q_0: ┤ H ├┤ P(2.0*x[0]) ├┤ H ├──■──────────────────────────────────────■──┤ H ├
     ├───┤├─────────────┤├───┤┌─┴─┐┌────────────────────────────────┐┌─┴─┐├───┤
q_1: ┤ H ├┤ P(2.0*x[1]) ├┤ H ├┤ X ├┤ P(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├┤ H ├
     └───┘└─────────────┘└───┘└───┘└────────────────────────────────┘└───┘└───┘
```

```python
>>> prep = pauli_feature_map(2, reps=1, paulis=["ZY"])
>>> print(prep)
     ┌───┐┌──────────┐                                            ┌───────────┐
q_0: ┤ H ├┤ RX(pi/2) ├──■──────────────────────────────────────■──┤ RX(-pi/2) ├
     ├───┤└──────────┘┌─┴─┐┌────────────────────────────────┐┌─┴─┐└───────────┘
q_1: ┤ H ├────────────┤ X ├┤ P(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├─────────────
     └───┘            └───┘└────────────────────────────────┘└───┘
```

```python
>>> from qiskit.circuit.library import EfficientSU2
>>> prep = pauli_feature_map(3, reps=3, paulis=["Z", "YY", "ZXZ"])
>>> wavefunction = EfficientSU2(3)
>>> classifier = prep.compose(wavefunction)
>>> classifier.num_parameters
27
>>> classifier.count_ops()
OrderedDict([('cx', 39), ('rx', 36), ('u1', 21), ('h', 15), ('ry', 12), ('rz', 12)])
```

References:

\[1] Havlicek et al. Supervised learning with quantum enhanced feature spaces, [Nature 567, 209-212 (2019)](https://www.nature.com/articles/s41586-019-0980-2).

**Parameters**

- **feature\_dimension** ([*int*](https://docs.python.org/3/library/functions.html#int)) –
- **reps** ([*int*](https://docs.python.org/3/library/functions.html#int)) –
- **entanglement** ([*str*](https://docs.python.org/3/library/stdtypes.html#str) *| Mapping\[*[*int*](https://docs.python.org/3/library/functions.html#int)*, Sequence\[Sequence\[*[*int*](https://docs.python.org/3/library/functions.html#int)*]]] | Callable\[\[*[*int*](https://docs.python.org/3/library/functions.html#int)*],* [*str*](https://docs.python.org/3/library/stdtypes.html#str) *| Mapping\[*[*int*](https://docs.python.org/3/library/functions.html#int)*, Sequence\[Sequence\[*[*int*](https://docs.python.org/3/library/functions.html#int)*]]]]*) –
- **alpha** ([*float*](https://docs.python.org/3/library/functions.html#float)) –
- **paulis** ([*list*](https://docs.python.org/3/library/stdtypes.html#list)*\[*[*str*](https://docs.python.org/3/library/stdtypes.html#str)*] | None*) –
- **data\_map\_func** (*Callable\[\[*[*Parameter*](/docs/api/qiskit/1.3/qiskit.circuit.Parameter "qiskit.circuit.Parameter")*],* [*ParameterExpression*](/docs/api/qiskit/1.3/qiskit.circuit.ParameterExpression "qiskit.circuit.ParameterExpression")*] | None*) –
- **parameter\_prefix** ([*str*](https://docs.python.org/3/library/stdtypes.html#str)) –
- **insert\_barriers** ([*bool*](https://docs.python.org/3/library/functions.html#bool)) –
- **name** ([*str*](https://docs.python.org/3/library/stdtypes.html#str)) –

**Return type**

[QuantumCircuit](/docs/api/qiskit/1.3/qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit")
