Presentatori: @martindemel e @jthi
Potresti anche voler guardare la registrazione della sessione del West Coast Scripter's Club sull'integrazione di Python in JMP 18 di Paul Nelson
Alcuni commenti ai miei esempi
La demo HDBSCAN che ho eseguito richiede JMP Pro poiché utilizza la piattaforma di incorporamento multivariato di JMP.
Le parti arancioni sono per JMP e blu per Python

Per lo più sto iniziando con l'integrazione di Python in JMP, quindi il mio codice Python non è sicuramente il più pulito, ma per un rapido esempio dovrebbe essere pronto.
Utilizzo Python Send() per inviare variabili al lato Python
Python Send(dt);<BR />Python Send(cluster_cols);<BR />Python Send(clustersize);<BR />Python Send(samples);<BR />Python Send(epsilon);
e poi Python Submit() per eseguire il codice seguente
import hdbscan
import jmp
import numpy as np
import pandas as pd
df = pd.DataFrame()
for colname in cluster_cols:
df[colname] = np.array(dt[colname])
clusterer = hdbscan.HDBSCAN(min_cluster_size=int(clustersize), min_samples=int(samples), cluster_selection_epsilon=epsilon)
cluster_labels = clusterer.fit_predict(df)
df['Clusters'] = cluster_labels
col = dt.new_column("CLUSTERS", jmp.DataType.Numeric, jmp.ModelingType.Nominal)
dt[col.name] = list(df.iloc[:,2])
new_col = col.name
del df
L'esempio esegue innanzitutto la riduzione delle dimensioni (tsne o umap), hdbscan sulle due colonne create, visualizza il grafico, imposta lo script della tabella per ricreare il grafico, raggruppa le colonne e imposta i parametri HDBSCAN sulle proprietà della colonna della nota CLUSTERS

Poiché Python Get Graphics() è stato deprecato, devi trovare altri modi per ottenere immagini da Python a JMP. L'esempio di JMP mostra come farlo salvando prima l'immagine e quindi utilizzando Open() di JMP per caricare l'immagine su JMP. Ho dimostrato come utilizzare i moduli Python io e base64 per caricare l'immagine su JMP
Names Default To Here(1);
Python Submit("\[
import base64
import io
import matplotlib.pyplot as plt
plt.clf()
plt.plot([1, 2, 3, 4])
plt.ylabel('some numbers')
plt.draw()
my_iobytes = io.BytesIO()
plt.savefig(my_iobytes, format='png', bbox_inches='tight')
my_iobytes.seek(0)
base64data = base64.b64encode(my_iobytes.read()).decode()
]\");
img = Open(Char To Blob(Python Get(base64data), "base64"), "png");
nw = New Window("test", img);
Infine voglio notare che ci sono molti modi per eseguire la trasformazione tra dataframe panda e datatable JMP. Puoi ad esempio eseguire una trasformazione "diretta" utilizzando file .csv, utilizzare list(df.iloc[:,2]) o df[col].values.tolist(). Ci sono esempi di tutti questi e non ho ancora familiarizzato con i diversi metodi per poter dare consigli su cosa dovresti usare.
@Ressel ha appena aggiunto i file!