발표자: @martindemel 및 @jthi
JMP 18의 Python 통합에 관한 West Coast Scripter's Club 세션에서 Paul Nelson이 녹음한 내용을 시청할 수도 있습니다.
내 예에 대한 몇 가지 의견
제가 수행한 HDBSCAN 데모에는 JMP의 다변량 임베딩 플랫폼을 사용하기 때문에 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()를 사용할 수 있습니다. 이들 모두에 대한 예가 있지만 나는 아직 무엇을 사용해야 할지 추천할 수 있는 다양한 방법에 익숙해지지 않았습니다.