

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Query di regressione degli archi Gremlin in Neptune ML
<a name="machine-learning-gremlin-edge-regression"></a>

La regressione degli archi è simile alla classificazione degli archi, tranne per il fatto che il valore dedotto dal modello di machine learning è numerico. Per la regressione degli archi, Neptune ML supporta le stesse query utilizzate per la classificazione.

Gli aspetti principali da notare sono:
+ È necessario usare il predicato ML `"Neptune#ml.regression"` per configurare il passaggio `properties()` per questo caso d'uso.
+ I predicati `"Neptune#ml.limit"` e `"Neptune#ml.threshold"` non sono applicabili in questo caso d'uso.
+ Per filtrare in base al valore, è necessario specificare il valore come numerico.

## Sintassi di una query di regressione degli archi Gremlin
<a name="machine-learning-gremlin-edge-regression-syntax"></a>

Per un grafo semplice in cui `User` è il nodo di testa, `Movie` è il nodo di coda e `Rated` è l'arco che li collega, ecco un esempio di query di regressione degli archi che trova il valore di valutazione numerico, qui denominato punteggio, per l'arco `Rated`:

```
g.with("Neptune#ml.endpoint","edge-regression-movie-lens-endpoint")
 .with("Neptune#ml.iamRoleArn","arn:aws:iam::0123456789:role/sagemaker-role")
 .E("rating_1","rating_2","rating_3")
 .properties("score").with("Neptune#ml.regression")
```

Puoi anche filtrare in base a un valore dedotto dal modello di regressione ML. Per gli archi `Rated` esistenti (da `User` a `Movie`) identificati da `"rating_1"`, `"rating_2"` e `"rating_3"`, dove la proprietà dell'arco `Score` sia presente per queste classificazioni, è possibile usare una query come la seguente per dedurre `Score` per gli archi in cui è maggiore o uguale a 9:

```
g.with("Neptune#ml.endpoint","edge-regression-movie-lens-endpoint")
 .with("Neptune#ml.iamRoleArn","arn:aws:iam::0123456789:role/sagemaker-role")
 .E("rating_1","rating_2","rating_3")
 .properties("score").with("Neptune#ml.regression")
 .value().is(P.gte(9))
```

## Utilizzo dell'inferenza induttiva in una query di regressione degli archi
<a name="machine-learning-gremlin-edge-regression-inductive"></a>

Si supponga di dover aggiungere un nuovo arco a un grafo esistente in un notebook Jupyter, in questo modo:

```
%%gremlin
g.V('1').as('fromV')
.V('2').as('toV')
.addE('eLabel1').from('fromV').to('toV').property(id, 'e101')
```

È quindi possibile utilizzare una query di inferenza induttiva per ottenere un punteggio che tenga conto del nuovo arco:

```
%%gremlin
g.with("Neptune#ml.endpoint", "er-ep")
 .with("Neptune#ml.iamRoleArn", "arn:aws:iam::123456789012:role/NeptuneMLRole")
 .E('e101').properties("score")
 .with("Neptune#ml.regression")
 .with("Neptune#ml.inductiveInference")
```

Poiché la query è non deterministica, potrebbe restituire risultati leggermente diversi se la si esegue più volte, in base al neighborhood casuale:

```
# First time
==>ep[score->96]

# Second time
==>ep[score->91]
```

Se sono necessari risultati più coerenti, puoi rendere la query deterministica:

```
%%gremlin
g.with("Neptune#ml.endpoint", "er-ep")
 .with("Neptune#ml.iamRoleArn", "arn:aws:iam::123456789012:role/NeptuneMLRole")
 .E('e101').properties("score")
 .with("Neptune#ml.regression")
 .with("Neptune#ml.inductiveInference")
 .with("Neptune#ml.deterministic")
```

Ora i risultati saranno più o meno gli stessi ogni volta che si esegue la query:

```
# First time
==>ep[score->96]

# Second time
==>ep[score->96]
```