【Pythonでデータ分析】scikit-learnのサンプルデータセットをグラフで可視化

## Pythonグラフの物足りなさ
:::note info
Pythonでデータを扱っていて「<font color="red">**Matplotlibを使えば一応グラフは描けて、データを可視化できるけれど、なんだか少し物足りないな**</font>」と感じたことはありませんか？
:::
2024年リリースの最新バージョンで<font color="red">Pythonとの親和性が大幅に高まった統計ソフト[**「JMP（ジャンプ）」**](https://www.jmp.com/ja_jp/home.html)</font>は、データを深掘りするのに最適です。そこで今回は、scikit-learnのサンプルデータセットを例に、ドリルダウンできるグラフを作成してみます。
#### ※今回の内容はYouTube動画でもご紹介しています。
<iframe width="560" height="315" src="https://www.youtube.com/embed/g8kZ21qiAHg?si=xe6NWJ_BMTXecgnq" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

## Pythonスクリプトの起動・実行
1.JMPを起動し、「ファイル」>「新規作成」>「Pythonスクリプト」で起動します。
![画像1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/417820/cdf8a259-7afa-0825-79a1-fc6d6550de09.png)
<br>
2.下のコードをJMPのPythonスクリプトに貼り付けます。

このコードは、scikit-learnのデータセットをPandasのDataFrame形式にして、それをJMPのデータテーブルとして読み込むものです。
<font color="red">※以下のコードは、ネイティブのPythonでは動作しません。</font>
```
#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でも、Pythonパッケージを事前にインストールする必要があります。今回はpandas、scikit-learnパッケージを使うので、インストールしていない場合は、上記の2,3行目をコメントアウト（#を削除する）して実行してください。

![画像2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/417820/ab2f086f-3357-f6b4-e0f2-6e94c03362f3.png)

3.画面上の「編集」 > 「スクリプトの実行」で上記のプログラムを実行します。すると、以下のようなJMPのデータテーブルが表示されます。
![画像3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/417820/580039e3-0f16-ba2c-b9af-faf628e6b0c4.png)
注) JMPでは、列にさまざまなグラフを表示できるので、データの分布等をサッと確認するのに便利です。

## JMPのグラフビルダーでscikit-learnのサンプルデータを可視化
今回使用するのは、scikit-learnのサンプルデータセット「**California Housing**」です。

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


このデータセットを可視化してみます。まず画面上の「グラフ」>「グラフビルダー」と進み、「X」に「Longtitude」、「Y」に「Latitude」、右上の「色」に「MedHouseVal」を入れます。

そして、画面上に横並びになっているアイコンの左から2つ目「平滑線」をオフにし、グラフの白い部分で右クリックし「グラフ」>「背景地図」と進んで、「背景地図の設定」で「細かい衛星写真」と右のリストの「米国の州」にチェックを入れて、「OK」を押します。

![画像5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/417820/7b12faf8-3dc7-21b0-4289-2cfe89155d8e.png)

![画像6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/417820/e91b3ce3-1e7f-05ea-1b17-0e5533988b2d.png)

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/417820/a0ccd75c-c1de-0705-200b-5a4c2b5456fe.png" width=70%>

すると、以下のような各ブロックの住宅価格（MedHouseVal）が地図上にプロットされたグラフを描けました。

![画像8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/417820/b094b089-c5dc-d76e-462e-2213acba5012.png)

このグラフを見ると、サンフランシスコやロサンゼルスといった大都市を含む海外沿いのブロックの住宅価格が高いことが分かります。


## JMPの特長：グラフとデータの連動
さらに、気になるデータプロットがあれば、それをグラフ上で選択することで、<font color="red">グラフと連動したデータテーブルでそのブロックのデータを詳しく確認</font>することができます。
![画像9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/417820/29e61d77-cade-982a-a837-07cb26aec93e.png)

![画像10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/417820/4e5e4d3d-bf50-3df2-ed1e-3aac27991169.png)

これがJMPの便利なところです。

## 最後に
JMP 18は、Pythonを使用するデータアナリスト、科学者、エンジニア向けに、プログラミングが簡素化され、分析に集中しやすくなりました。

具体的には、
- **JMP 18にはPython（バージョン3.11）があらかじめ組みこまれているため、シンプルかつ使い慣れたPythonプログラミングをJMP上で実行可能**
- **Pythonを使用しながら、今までよりスムーズにデータの可視化、深掘りができるようになり、データからより多くの発見が生まれる**

等の特長があります。

<br>
Pythonとの連携が強化されたJMP 18で、今までのデータ分析をより豊かに、そして、深いインサイトを得られるものに進化させませんか？

:::note info
JMP 18の新機能は[**こちら**](https://www.jmp.com/ja_jp/software/new-release/new-in-jmp.html?utm_campaign=ot&utm_source=facebook&utm_medium=social)

:::