Moderatoren: @martindemel und @jthi
Vielleicht möchten Sie sich auch die Aufzeichnung der West Coast Scripter's Club-Sitzung zur Python-Integration in JMP 18 von Paul Nelson ansehen.
Einige Kommentare zu meinen Beispielen
Für die von mir durchgeführte HDBSCAN-Demo ist JMP Pro erforderlich, da die Multivariate Embedding-Plattform von JMP verwendet wird.
Orange Teile sind für JMP und blaue für Python

Ich bin gerade dabei, mit der Python-Integration in JMP anzufangen, daher ist mein Python-Code definitiv nicht der sauberste, aber für ein kurzes Beispiel sollte er gut funktionieren.
Ich verwende Python Send(), um Variablen an die Python-Seite zu senden
Python Send(dt);<BR />Python Send(cluster_cols);<BR />Python Send(clustersize);<BR />Python Send(samples);<BR />Python Send(epsilon);
und dann Python Submit(), um den folgenden Code auszuführen
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
Das Beispiel führt zuerst eine Dimensionsreduktion (tsne oder umap) aus, hdbscan erstellt zwei Spalten, zeigt das Diagramm an, setzt das Tabellenskript zum erneuten Erstellen des Diagramms, gruppiert die Spalten und setzt die HDBSCAN-Parameter auf CLUSTERS, notieren Sie die Spalteneigenschaften

Da Python Get Graphics() veraltet ist, müssen Sie andere Wege finden, um Bilder von Python nach JMP zu bekommen. Das Beispiel von JMP zeigt, wie Sie das machen können, indem Sie zuerst das Bild speichern und dann JMPs Open() verwenden, um das Bild nach JMP zu laden. Ich habe gezeigt, wie Sie Python-Module io und base64 verwenden können, um das Bild nach JMP zu laden.
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);
Abschließend möchte ich darauf hinweisen, dass es viele Möglichkeiten gibt, die Transformation zwischen Pandas-Dataframe und JMP-Datatable durchzuführen. Sie können beispielsweise eine „direkte“ Transformation mithilfe von CSV-Dateien durchführen, list(df.iloc[:,2]) oder df[col].values.tolist() verwenden. Für alle diese Methoden gibt es Beispiele, und ich habe mich noch nicht mit den verschiedenen Methoden vertraut gemacht, um Empfehlungen geben zu können, was Sie verwenden sollten.
@Ressel hat gerade die Dateien hinzugefügt!