機械学習入門 vol.5 グラフ(Seaborn)の基本操作

本コンテンツは機械学習入門講座を各所でやっている内容の一部を、受講者の皆様の予習・復習のために公開しているものです。対象読者は、Pythonをやったことがほとんどない方やつまづいてしまっている方でも概ね実行できるようになるレベルで書いています。解説は講座でそれなりに詳しくしているため、コードにコメントする以上の説明はあまり記述していません。

各コードはJupyterシリーズやiPythonで記述しながら実行できるように記述しています。

AI/DX/機械学習/Pythonのアドバイザリー、社内研修、セミナー等承っております。
webサイトからお問い合わせください。
[BeeComb Grid株式会社](https://beecomb-grid.co.jp/)

# 機械学習入門シリーズ記事

1. [機械学習入門 vol.1 Pythonの基礎１ 記述とデータ型](https://qiita.com/mychaelstyle/items/500f67b01fda79c215d0) -> 講座第3回に相当
1. [機械学習入門 vol.2 Pythonの基礎2 条件分岐と処理](https://qiita.com/mychaelstyle/items/891dcad83e94f8edd3aa) -> 講座第3回に相当
1. [機械学習入門 vol.3 Pythonの基礎3 関数・クラス・モジュール](https://qiita.com/mychaelstyle/items/d5506f372219b162c8c8) -> 講座第3回に相当
1. [機械学習入門 vol.4 表（Pandas）の基本操作](https://qiita.com/mychaelstyle/items/96ea9e8c679f908205ab) -> 講座第3回/第4回に相当
1. 機械学習入門 vol.5 グラフ(Seaborn)の基本操作 -> 講座第3/4回に相当
1. [機械学習入門 vol.6 回帰 - 線形回帰](https://qiita.com/mychaelstyle/items/a12882a75d348952b1b9) -> 講座第4回に相当
1. [機械学習入門 vol.7 回帰 - ランダムフォレストとパラメータチューニング](https://qiita.com/mychaelstyle/items/48238d70c7602ca14a0c) -> 講座第4回に相当
1. [機械学習入門 vol.8 回帰 - その他の回帰 (k近傍法,ラッソ回帰,リッジ回帰..etc)](https://qiita.com/mychaelstyle/items/fc51cf384b517fb405f8) -> 講座第4回に相当
1. [機械学習入門 vol.9 判別（分類）](https://qiita.com/mychaelstyle/items/34ca447a625c752dbfda) -> 講座第5回に相当
1. [機械学習入門 vol.10 次元削減](https://qiita.com/mychaelstyle/items/69aab0c098dfa1e19e7d) -> 講座第6回に相当
1. [機械学習入門 vol.11 クラスタリング](https://qiita.com/mychaelstyle/items/89d04ce33c3e05d9545c) -> 講座第6回に相当

# 機械学習入門 vol.5 グラフ(Seaborn)の基本操作

```python
import pandas as pd
import seaborn as sb

# インストールされていて利用できるGothicかMinchoのフォントを表示
import matplotlib.font_manager
for ff in matplotlib.font_manager.fontManager.ttflist:
    if "Gothic" in ff.name or "Mincho" in ff.name :
        print(ff.name)
```

```python
import matplotlib as mpl
# 以下のHiragino Maru Gothic Proの部分は
# 自分の環境で表示されたフォント名に置き換えてください
mpl.rcParams['font.family'] = 'Hiragino Maru Gothic Pro'
sb.set(font=['Hiragino Maru Gothic Pro'])
```

本ページのプログラムは、プログラム実行ファイルと同じフォルダに下記データファイルが保存されていることを前提として書いています。ダウンロードしてご利用ください。

[data.xlsx](https://docs.google.com/spreadsheets/d/1HZacWBy9WnFYkKd0HJQdno_Pmx1cGibm/edit?usp=sharing&ouid=106210867555036201160&rtpof=true&sd=true)
[data.csv](https://drive.google.com/file/d/1ntEMB0tTxJ4fu2wTxVoi4SRb8TR56xYi/view?usp=sharing)

データを読み込んでおきます。

```python
# Pandasでデータを読み込みます
df = pd.read_excel('./data.xlsx', sheet_name='データ')
# ラベル間違いを直しておきます。
df = df.rename(columns={"合憲点数":"合計点数"})
df
```

## 散布図

```python
# 散布図
sb.scatterplot(x='合計点数', y='週の学習時間', data=df)
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/28471/6cac1f3e-317e-c11c-4ce7-a17a37ba58e2.png)

系列で色分けする場合はhueに列ラベル名を指定します。

```python
sb.scatterplot(x='合計点数', y='週の学習時間', data=df, hue='クラス')
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/28471/00bf345e-d763-d366-954b-ac49726a6aca.png)

## 散布図とヒストグラム

```python
# 散布図とヒストグラム
sb.pairplot(data=df)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/28471/316d54de-7284-a111-fb88-fd9259426ea7.png)

```python
sb.pairplot(data=df, hue='クラス')
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/28471/f862a546-95b0-4e8e-b8cf-7cee00cabe5e.png)

## 散布図（回帰直線付き）

```python
# 回帰散布グラフ
sb.lmplot(x="合計点数", y="週の学習時間", data=df)
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/28471/b13d6256-b844-5d31-039b-e29423c48c73.png)

```python
sb.lmplot(x="合計点数", y="週の学習時間", data=df, hue="クラス")
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/28471/08e0da8d-42b5-b50c-ba68-85822d9b209a.png)

## 折れ線グラフ

```python
# 折れ線グラフ
sb.lineplot(data=df, x="週の学習時間", y="合計点数")
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/28471/dbd345b4-7b2f-a2ee-d362-bc0471f5235c.png)

```python
sb.lineplot(data=df, x="週の学習時間", y="合計点数", hue="クラス")
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/28471/9738550e-1c58-914d-7161-ebdeb5504da1.png)

## 棒グラフ

```python
# 棒グラフ
sb.barplot(data=df, x="週の学習時間", y="合計点数")
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/28471/257f8a3d-9a10-5a0c-69bf-77d30503577d.png)

## ヒストグラム

```python
# ヒストグラム
sb.displot(df['国語'])
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/28471/d9125fd8-0a9b-23aa-ab8f-c6aacc00adee.png)

## 箱ひげ図

```python
sb.boxplot(data=df, x="クラス", y="合計点数")
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/28471/9515f349-1b3c-bd0b-4462-7291558cb50f.png)

```python
# 科目を系列にするためのデータ整形
df2 = df[['国語']].copy().rename(columns={"国語":"点数"})
df2["科目"] = '国語'
df3 = df[['算数']].copy().rename(columns={"算数":"点数"})
df3["科目"] = '算数'
df4 = df[['英語']].copy().rename(columns={"英語":"点数"})
df4["科目"] = '英語'
# 科目ごとの箱ヒゲ図を見てみる
df2 = df2.append(df3).append(df4)
sb.boxplot(data=df2,x="科目", y="点数")
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/28471/9e2c688e-a1dc-0d05-ed43-11a54036cd29.png)

# 機械学習入門シリーズ記事

1. [機械学習入門 vol.1 Pythonの基礎１ 記述とデータ型](https://qiita.com/mychaelstyle/items/500f67b01fda79c215d0) -> 講座第3回に相当
1. [機械学習入門 vol.2 Pythonの基礎2 条件分岐と処理](https://qiita.com/mychaelstyle/items/891dcad83e94f8edd3aa) -> 講座第3回に相当
1. [機械学習入門 vol.3 Pythonの基礎3 関数・クラス・モジュール](https://qiita.com/mychaelstyle/items/d5506f372219b162c8c8) -> 講座第3回に相当
1. [機械学習入門 vol.4 表（Pandas）の基本操作](https://qiita.com/mychaelstyle/items/96ea9e8c679f908205ab) -> 講座第3回/第4回に相当
1. 機械学習入門 vol.5 グラフ(Seaborn)の基本操作 -> 講座第3/4回に相当
1. [機械学習入門 vol.6 回帰 - 線形回帰](https://qiita.com/mychaelstyle/items/a12882a75d348952b1b9) -> 講座第4回に相当
1. [機械学習入門 vol.7 回帰 - ランダムフォレストとパラメータチューニング](https://qiita.com/mychaelstyle/items/48238d70c7602ca14a0c) -> 講座第4回に相当
1. [機械学習入門 vol.8 回帰 - その他の回帰 (k近傍法,ラッソ回帰,リッジ回帰..etc)](https://qiita.com/mychaelstyle/items/fc51cf384b517fb405f8) -> 講座第4回に相当
1. [機械学習入門 vol.9 判別（分類）](https://qiita.com/mychaelstyle/items/34ca447a625c752dbfda) -> 講座第5回に相当
1. [機械学習入門 vol.10 次元削減](https://qiita.com/mychaelstyle/items/69aab0c098dfa1e19e7d) -> 講座第6回に相当
1. [機械学習入門 vol.11 クラスタリング](https://qiita.com/mychaelstyle/items/89d04ce33c3e05d9545c) -> 講座第6回に相当

AI/DX/機械学習/Pythonのアドバイザリー、社内研修、セミナー等承っております。
webサイトからお問い合わせください。
[BeeComb Grid株式会社](https://beecomb-grid.co.jp/)