

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 dei nodi Gremlin in Neptune ML
<a name="machine-learning-gremlin-vertex-regression-queries"></a>

La regressione dei nodi è simile alla classificazione dei nodi, tranne per il fatto che il valore dedotto dal modello di regressione per ogni nodo è numerico. Per la regressione dei nodi è possibile usare le stesse query Gremlin usate per la classificazione dei nodi, con le seguenti differenze:
+ Ancora una volta, in Neptune ML i nodi fanno riferimento ai vertici.
+ Il passaggio `properties()` accetta il formato `properties().with("Neptune#ml.regression")` anziché `properties().with("Neptune#ml.classification")`.
+ I predicati `"Neptune#ml.limit`" e `"Neptune#ml.threshold"` non sono applicabili.
+ Quando si filtra in base al valore, è necessario specificare un valore numerico.

Ecco una query di classificazione dei vertici di esempio:

```
g.with("Neptune#ml.endpoint","node-regression-movie-lens-endpoint")
 .with("Neptune#ml.iamRoleArn", "arn:aws:iam::0123456789:role/sagemaker-role")
 .V("movie_1","movie_2","movie_3")
 .properties("revenue").with("Neptune#ml.regression")
```

È possibile filtrare in base al valore dedotto utilizzando un modello di regressione, come illustrato negli esempi seguenti:

```
g.with("Neptune#ml.endpoint","node-regression-movie-lens-endpoint")
 .with("Neptune#ml.iamRoleArn","arn:aws:iam::0123456789:role/sagemaker-role")
 .V("movie_1","movie_2","movie_3")
 .properties("revenue").with("Neptune#ml.regression")
 .value().is(P.gte(1600000))

g.with("Neptune#ml.endpoint","node-regression-movie-lens-endpoint")
 .with("Neptune#ml.iamRoleArn","arn:aws:iam::0123456789:role/sagemaker-role")
 .V("movie_1","movie_2","movie_3")
 .properties("revenue").with("Neptune#ml.regression")
 .hasValue(P.lte(1600000D))
```

## Utilizzo dell'inferenza induttiva in una query di regressione dei nodi
<a name="machine-learning-gremlin-node-regress-inductive"></a>

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

```
%%gremlin
g.addV('label1').property(id,'101').as('newV')
 .V('1').as('oldV1')
 .V('2').as('oldV2')
 .addE('eLabel1').from('newV').to('oldV1')
 .addE('eLabel2').from('oldV2').to('newV')
```

È quindi possibile utilizzare una query di inferenza induttiva per ottenere una valutazione che tenga conto del nuovo nodo:

```
%%gremlin
g.with("Neptune#ml.endpoint", "nr-ep")
 .with("Neptune#ml.iamRoleArn", "arn:aws:iam::123456789012:role/NeptuneMLRole")
 .V('101').properties("rating")
 .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:

```
# First time
==>vp[rating->9.1]

# Second time
==>vp[rating->8.9]
```

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

```
%%gremlin
g.with("Neptune#ml.endpoint", "nc-ep")
 .with("Neptune#ml.iamRoleArn", "arn:aws:iam::123456789012:role/NeptuneMLRole")
 .V('101').properties("rating")
 .with("Neptune#ml.regression")
 .with("Neptune#ml.inductiveInference")
 .with("Neptune#ml.deterministic")
```

Ora i risultati saranno più o meno gli stessi ogni volta:

```
# First time
==>vp[rating->9.1]

# Second time
==>vp[rating->9.1]
```