講者: @martindemel和@jthi
您可能還想觀看Paul Nelson 的West Coast Scripter's Club 會議錄製的關於 JMP 18 中的 Python 集成的視頻
對我的例子的評論很少
由於使用 JMP 的多元嵌入平台,我所做的HDBSCAN 演示確實需要 JMP Pro。
橙色部分用於 JMP,藍色部分用於 Python

我主要是開始在 JMP 中進行 Python 集成,因此我的 Python 程式碼絕對不是最乾淨的程式碼,但作為一個簡單的範例,它應該很好。
我使用 Python Send() 將變數傳送到 Python 端
Python Send(dt);<BR />Python Send(cluster_cols);<BR />Python Send(clustersize);<BR />Python Send(samples);<BR />Python Send(epsilon);
然後 Python Submit() 運行下面的程式碼
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
此範例首先執行降維(tsne 或 umap),在建立的兩列上執行 hdbscan,顯示圖形,設定表腳本以重新建立繪圖,對列進行分組並將 HDBSCAN 參數設定為 CLUSTERS 注意列屬性

由於 Python Get Graphics() 已被棄用,您必須找出其他方法將映像從 Python 取得到 JMP。 JMP 的範例展示如何透過先儲存映像,然後使用 JMP 的 Open() 將映像載入到 JMP 來實現此目的。我確實示範如何使用 python 模組 io 和 base64 將圖片載入到 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);
最後我想指出,有很多方法可以執行 pandas 資料框和 JMP 資料表之間的轉換。例如,您可以使用 .csv 檔案進行「直接」轉換,使用 list(df.iloc[:,2]) 或 df[col].values.tolist()。所有這些都有範例,但我還沒有熟悉不同的方法,以便能夠提出您應該使用的建議。