cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Choose Language Hide Translation Bar
JMP 18の新機能 Part 1:強化された「Pythonインテグレーション」を使ってカリフォルニア住宅価格の分析を

新バージョン「JMP 18」には、以前搭載されていたサンプルデータ「Boston Housing.jmp」が含まれていません。このサンプルデータは、多変量データの可視化や予測モデルの構築方法を説明するのに便利でしたが、差別的、非倫理的、不公平な内容が含まれているため除外されました。

 

参考

JMP® sample data table "Boston Housing.jmp" removed - JMP User Community

 

また、Pythonのライブラリ「scikit-learn」にもかつてBoston Housingのサンプルデータは含まれていましたが、同じ理由で現在は含まれていません。以下は、PythonでBoston Housingのインポートした際に表示されるメッセージです。

 

--------------------------------------------------------------------------------------------------------------------------

The scikit-learn maintainers therefore strongly discourage the use of this dataset unless the purpose of the code is to study and educate
about ethical issues in data science and machine learning.

 

In this special case, you can fetch the dataset from the original
source::

import pandas as pd
import numpy as np

data_url = "http://lib.stat.cmu.edu/datasets/boston"
raw_df = pd.read_csv(data_url, sep="\s+", skiprows=22, header=None)
data = np.hstack([raw_df.values[::2, :], raw_df.values[1::2, :2]])
target = raw_df.values[1::2, 2]

 

Alternative datasets include the California housing dataset and theAmes housing dataset.

--------------------------------------------------------------------------------------------------------------------------

 

このメッセージには、Boston Housingの代替データの一つとして「California housing dataset」があることが記載されています。アメリカ東海岸のデータではなく西海岸のデータを使用するという単純な違いだけなく、データ数やデータの性質も大きく変わっています。

 

Masukawa_Nao_0-1714524187689.png

 

JMPでは、このCaliforniaのデータはサンプルとして含まれていませんが、JMP 18のPythonに関する新機能を使って、このデータをJMPで読み込んでみます。

 

JMP 18のPythonインテグレーション

JMPでは以前から同じマシンにインストールされたPythonに接続する機能があり、JMPからPythonのコマンドやライブラリを実行することができました。

 

新しいバージョン「JMP  18」では、Pythonインテグレーション機能が大幅に変更および強化されています。主な変更点、強化点は以下の通りです。

 

  • JMP 18をインストールすると、同時に組み込まれたPython(バージョン3.11)がインストールされます。そのため、JMPとは別にPythonをインストールする必要はなく、インストールされたPythonインスタンスで動作します。
  • ネイティブなPythonエディタ(JMP Pythonスクリプトエディタ)が搭載され、このエディタで直接Pythonのコマンドを書くことができます。(以前は、JMPのスクリプト言語(JSL)からPythonの呼び出しコマンドを使って接続する方法のみでした。)
  • JMPの利用に便利なPythonパッケージ(jmp, jmputils)を使用することができます。jmpパッケージはデータテーブルの操作(開く、閉じる、列の追加/削除/変更など)に、jmputilsはJMPのPython環境にパッケージをインストールする際に便利なパッケージです。

 

JMP Pythonスクリプトエディタの起動と実行

JMP 18のメニューバーから Pythonスクリプトを起動し、Pythonのプログラムを記述して実行([編集] > [スクリプトの実行])します。

 

Masukawa_Nao_1-1714459993692.png

 

以下は、scikit-learnのデータセットをpandasのdataframe形式にしたものを、JMPのデータテーブルとして読み込むコードです。このコードをJMP Pythonスクリプトに貼り付けて実行します。

 

#Install pandas and scikit-learn packages if you have not installed

#import jmputils
#jmputils.jpip('install', 'pandas scikit-learn')


#California dataset
from sklearn.datasets import fetch_california_housing
import pandas as pd
import jmp

california = fetch_california_housing()

# Transform to pandas DataFrame
df_features = pd.DataFrame(data=california.data, columns=california.feature_names)
df_features['MedHouseVal'] = california.target

column_names = df_features.columns.tolist()

# Create JMP Datatable from pandas DataFrame
dt = jmp.DataTable('California',df_features.shape[0])

for i in range( df_features.shape[1] ):
	dt.new_column(column_names[i])
	dt[i] = list(df_features.iloc[:,i])
	
# About california_housing_dataset
print(california.DESCR)	

 

注意:JMPのPythonでも、使用するパッケージを事前にインストールする必要があります。この例では、pandas、scikit-learnパッケージを使うので、インストールしていない場合は、上記の2,3行目をコメントアウト(#を削除する)して実行してください。

 

Californiaデータセット

JMPで読み込んだデータセットです。カリフォルニアの20,640ブロックの住宅価格(中央値)を示しており、これが目的変数(Y)になります。説明変数にはブロックあたりの所得(中央値)、築年数(中央値)、一世帯あたりの平均部屋数や寝室数、人口、世帯人数(平均値)、緯度、経度の8つが含まれます。

 

Masukawa_Nao_0-1714461529951.png

 

緯度、経度の情報を利用し、「グラフビルダー」を使って各ブロックの住宅価格(MedHouseVal)を地図上にプロットしてみました。Masukawa_Nao_1-1714461813851.png

 

海岸沿いのブロック、特にサンフランシスコやロサンゼルスといった大きな都市の周辺の住宅価格が高いようです。

 

次回のPart 2では、今回紹介したCaliforniaデータセットを用いて、JMP 18の新機能についてさらに詳しく説明していきます。

 

by  増川 直裕(JMP Japan)

Naohiro Masukawa - JMP User Community

Last Modified: Apr 30, 2024 8:56 PM