Pythonでデータの挙動を見やすくする可視化ツールを作成してみた　まとめ編

# はじめに
私は今まで、Pythonを使って**データの可視化ツール**を作成してきました。

いくつかはQiitaにも投稿しましたが、記事やコードが分散していて分かりづらいと感じたので、**全機能をまとめて[「seaborn-analyzer」](https://pypi.org/project/seaborn-analyzer/)としてライブラリ化**し、概要を本記事にまとめました！
![image](https://user-images.githubusercontent.com/59557625/126887193-ceba9bdd-3653-4d58-a916-21dcfe9c38a0.png)
**「実際のデータ分析を通じて欲しいと思った機能」**を詰め込んだので、**実務で役立つ機能**がいくつもあるかと思います。
ぜひご活用頂ければと思います

# 構成
本ツールは以下のクラスからなります。
**使用法の詳細は、「使用法リンク」中の各記事、および[後述の「各機能の解説」](https://qiita.com/c60evaporator/items/8cb774e65d4423fd93ee#%E5%90%84%E6%A9%9F%E8%83%BD%E3%81%AE%E8%A7%A3%E8%AA%AC)をご参照ください**

|クラス名|パッケージ名|概要|使用法リンク|
|---|---|---|---|
|CustomPairPlot|custom_pair_plot.py|散布図行列と相関係数行列を同時に表示|[リンク](https://qiita.com/c60evaporator/items/20f11b6ee965cec48570)|
|hist|custom_hist_plot.py|ヒストグラムと各種分布のフィッティング|[リンク](https://qiita.com/c60evaporator/items/fc531aff0cdbafac0f42)|
|classplot|custom_class_plot.py|分類境界およびクラス確率の表示|[リンク](https://qiita.com/c60evaporator/items/43866a42e09daebb5cc0)|
|regplot|custom_reg_plot.py|相関・回帰分析の散布図・ヒートマップ表示|[リンク](https://qiita.com/c60evaporator/items/c930c822b527f62796ee)|

**コードは[GitHubにもアップロードしております](https://github.com/c60evaporator/seaborn-analyzer)**

# おすすめ機能
個人的に使用頻度の高い機能を紹介します
## おすすめ1：CustomPairPlot.pairanalyzer
相関係数と散布図行列を一括表示します。
**分析の初期段階でデータを一括で可視化**したいときにオススメです。
Rのggplot2ではほぼ同様の図が出力可能ですが、なぜかPythonには同様のツールがなかったので、作成しました。
散布図では表示が重なり見辛い**離散変数は、自動で箱ひげ図とバブルチャートに変更**する機能も追加しています。

```python
from seaborn_analyzer import CustomPairPlot
import seaborn as sns

titanic = sns.load_dataset("titanic")
cp = CustomPairPlot()
cp.pairanalyzer(titanic, hue='survived')
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610167/17198dc2-ed71-6e2c-607c-b9a2dfdf786c.png)

## おすすめ2：hist.plot_normality
正規性検定の結果をヒストグラムとともに表示します

**正規分布かどうか**の判断は曖昧な判定となりがちですが、
**定量的な裏付け**を付けたい時にオススメです

```python
from seaborn_analyzer import hist
from sklearn.datasets import load_boston
import pandas as pd
df = pd.DataFrame(load_boston().data, columns= load_boston().feature_names)
hist.plot_normality(df, x='LSTAT', norm_hist=False, rounddigit=5)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610167/d888bedb-0b24-43ac-9ece-c6f3c446c1f8.png)

## おすすめ3：regplot.linearplot
相関係数、P値、回帰式を同時算出し、散布図と一緒に表示します。。

頑張ればExcelでも算出できる簡単な指標ですが、
全てを同時算出してくれるツールは意外とありません。
多くの情報を1枚の図に集約できるので、ループ実行して多くの**変数の相関関係を定量的かつ効率的に見たい**時にオススメです

```python
from seaborn_analyzer import regplot
import seaborn as sns
iris = sns.load_dataset("iris")
regplot.linear_plot(x='petal_length', y='sepal_length', data=iris)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610167/2e98e5c7-af15-d330-fbe4-d24edc656429.png)

## おすすめ4：regplot.regression_heat_plot

説明変数が**2次元以上の回帰モデル**は可視化が難しいですが、
このメソッドを使えば4次元までならそれなりに**直感的な可視化**が可能となります。

```python:2次元説明変数での可視化例
import pandas as pd
from sklearn.linear_model import LinearRegression
from seaborn_analyzer import regplot
df_temp = pd.read_csv(f'./sample_data/temp_pressure.csv')
regplot.regression_heat_plot(LinearRegression(), x=['altitude', 'latitude'], y='temperature', data=df_temp)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610167/2ea8af3d-d027-8571-446a-08d7dd423c38.png)

```python:4次元説明変数での可視化例
import pandas as pd
from sklearn.linear_model import LinearRegression
from seaborn_analyzer import regplot
df = pd.read_csv(f'./sample_data/osaka_metropolis_english.csv')
regplot.regression_heat_plot(LinearRegression(), x=['2_between_30to60', '3_male_ratio', '5_household_member', 'latitude'],
                             y='approval_rate', data=df,
                             pair_sigmarange = 0.5, rounddigit_x1=3, rounddigit_x2=3)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610167/24f3783f-51ed-4460-553d-69a6bffba78b.png)

また、**クロスバリデーションの可視化や誤差上位の表示など、モデルの傾向把握に便利な機能**を多数実装しています。詳細は[こちらの記事](https://qiita.com/c60evaporator/items/c930c822b527f62796ee)を参照ください

```python:クロスバリデーション＆誤差上位を表示
import pandas as pd
from sklearn.linear_model import LinearRegression
from seaborn_analyzer import regplot
df_temp = pd.read_csv(f'./sample_data/temp_pressure.csv')
regplot.regression_heat_plot(LinearRegression(), cv=2, display_cv_indices=[0, 1], rank_number=3, rank_col='city',
                             x=['altitude', 'latitude'], y='temperature', data=df_temp)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610167/3eeeb0bc-4216-0bb6-c555-92bed1319ae3.png)


# 必要要件
* Python >=3.6
* Numpy >=1.20.3
* Pandas >=1.2.4
* Matplotlib >=3.3.4
* Seaborn >=0.11.0 (最新版の0.11.1では[バグがある](https://qiita.com/c60evaporator/items/20f11b6ee965cec48570#20218-%E6%B3%A8%E6%84%8F%E7%82%B9)ので、0.11.0を使用してください)
* Scipy >=1.6.3
* Scikit-learn >=0.24.2

# インストール方法
pipからインストールできます。

```
$ pip install seaborn-analyzer
```

# 各機能の解説
クラスおよびメソッドごとに機能と引数を解説します

## CustomPairPlotクラス (custom_pair_plot.py)
散布図行列と相関係数行列を同時に表示します。
1個のクラス「CustomPairPlot」からなります

**・CustomPairPlotクラス内のメソッド一覧**

|メソッド名|機能|
|---|---|
|pairanalyzer|散布図行列と相関係数行列を同時に表示します|

### pairanalyzerメソッド
#### 実行例

```python
from seaborn_analyzer import CustomPairPlot
import seaborn as sns

titanic = sns.load_dataset("titanic")
cp = CustomPairPlot()
cp.pairanalyzer(titanic, hue='survived')
```
![image](https://user-images.githubusercontent.com/59557625/115889860-4e8bde80-a48f-11eb-826a-cd3c79556a42.png)
#### 引数一覧

|引数名|必須引数orオプション|型|デフォルト値|内容|
|---|---|---|---|---|
|data|必須|pd.DataFrame|-|入力データ|
|hue|オプション|str|None|色分けに指定するカラム名 (Noneなら色分けなし)|
|palette|オプション|str|None|hueによる色分け用の[カラーパレット](https://matplotlib.org/stable/tutorials/colors/colormaps.html)|
|vars|オプション|list[str]|None|グラフ化するカラム名 (Noneなら全ての数値型＆Boolean型の列を使用)|
|lowerkind|オプション|str|'boxscatter'|左下に表示するグラフ種類 ('boxscatter', 'scatter', or 'reg')|
|diag_kind|オプション|str|'kde'|対角に表示するグラフ種類 ('kde' or 'hist')|
|markers|オプション|str or list[str]|None|hueで色分けしたデータの散布図プロット形状|
|height|オプション|float|2.5|グラフ1個の高さ|
|aspect|オプション|float|1|グラフ1個の縦横比|
|dropna|オプション|bool|True|[seaborn.PairGridのdropna引数](https://seaborn.pydata.org/generated/seaborn.PairGrid.html?highlight=pairgrid#seaborn.PairGrid)|
|lower_kws|オプション|dict|{}|[seaborn.PairGrid.map_lowerの引数](https://seaborn.pydata.org/generated/seaborn.PairGrid.html?highlight=pairgrid#seaborn.PairGrid)|
|diag_kws|オプション|dict|{}|[seaborn.PairGrid.map_diag引数](https://seaborn.pydata.org/generated/seaborn.PairGrid.html?highlight=pairgrid#seaborn.PairGrid)|
|grid_kws|オプション|dict|{}|[seaborn.PairGridの上記以外の引数](https://seaborn.pydata.org/generated/seaborn.PairGrid.html?highlight=pairgrid#seaborn.PairGrid)|

### CustomPairPlotクラス使用法詳細
こちらの記事にまとめました
https://qiita.com/c60evaporator/items/20f11b6ee965cec48570

## histクラス (custom_hist_plot.py)
ヒストグラム表示および各種分布のフィッティングを実行します。

**・histクラス内のメソッド一覧**

|メソッド名|機能|
|---|---|
|plot_normality|正規性検定とQQプロット|
|fit_dist|各種分布のフィッティングと、評価指標(RSS, AIC, BIC)の算出|

### plot_normalityメソッド
#### 実行例

```python
from seaborn_analyzer import hist
from sklearn.datasets import load_boston
import pandas as pd
df = pd.DataFrame(load_boston().data, columns= load_boston().feature_names)
hist.plot_normality(df, x='LSTAT', norm_hist=False, rounddigit=5)
```
![image](https://user-images.githubusercontent.com/59557625/117275256-cfd46f80-ae98-11eb-9da7-6f6e133846fa.png)
#### 引数一覧

|引数名|必須引数orオプション|型|デフォルト値|内容|
|---|---|---|---|---|
|data|必須|pd.DataFrame, pd.Series, or pd.ndarray|-|入力データ|
|x|オプション|str|None|ヒストグラム作成対象のカラム名 (dataがpd.DataFrameのときは必須)|
|hue|オプション|str|None|色分けに指定するカラム名 (Noneなら色分けなし)|
|binwidth|オプション|float|None|ビンの幅 (binsと共存不可)|
|bins|オプション|int|'auto'|ビンの数 (bin_widthと共存不可、'auto'なら[スタージェスの公式](https://numpy.org/devdocs/reference/generated/numpy.histogram_bin_edges.html)で自動決定)|
|norm_hist|オプション|bool|False|ヒストグラムを面積1となるよう正規化するか？|
|sigmarange|オプション|float|4|フィッティング線の表示範囲 (標準偏差の何倍まで表示するか指定)|
|linesplit|オプション|float|200|フィッティング線の分割数 (カクカクしたら増やす)
|rounddigit|オプション|int|5|表示指標の小数丸め桁数|
|hist_kws|オプション|dict|{}|[matplotlib.axes.Axes.histに渡す引数](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.hist.html)|
|subplot_kws|オプション|dict|{}|[matplotlib.pyplot.subplotsに渡す引数](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.subplots.html)|

### fit_distメソッド
#### 実行例

```python
from seaborn_analyzer import hist
from sklearn.datasets import load_boston
import pandas as pd
import matplotlib.pyplot as plt
from scipy import stats
df = pd.DataFrame(load_boston().data, columns= load_boston().feature_names)
all_params, all_scores = hist.fit_dist(df, x='LSTAT', dist=['norm', 'gamma', 'lognorm', 'uniform'])
df_scores = pd.DataFrame(all_scores).T
df_scores
```
![image](https://user-images.githubusercontent.com/59557625/115890066-81ce6d80-a48f-11eb-8390-f985d9e2b8b1.png)
![image](https://user-images.githubusercontent.com/59557625/115890108-8d219900-a48f-11eb-9896-38f7dedbb6e4.png)
#### 引数一覧

|引数名|必須引数orオプション|型|デフォルト値|内容|
|---|---|---|---|---|
|data|必須|pd.DataFrame, pd.Series, or pd.ndarray|-|入力データ|
|x|オプション|str|None|ヒストグラム作成対象のカラム名 (dataがpd.DataFrameのときは必須)|
|hue|オプション|str|None|色分けに指定するカラム名 (Noneなら色分けなし)|
|binwidth|オプション|float|None|ビンの幅 (binsと共存不可)|
|bins|オプション|int|'auto'|ビンの数 (bin_widthと共存不可、'auto'なら[スタージェスの公式](https://numpy.org/devdocs/reference/generated/numpy.histogram_bin_edges.html)で自動決定)|
|norm_hist|オプション|bool|False|ヒストグラムを面積1となるよう正規化するか？|
|sigmarange|オプション|float|4|フィッティング線の表示範囲 (標準偏差の何倍まで表示するか指定)|
|linesplit|オプション|float|200|フィッティング線の分割数 (カクカクしたら増やす)
|dist|オプション|str or list[str]|'norm'|分布の種類 ('norm', 'lognorm', 'gamma', 't', 'expon', 'uniform', 'chi2', 'weibull')|
|ax|オプション|matplotlib.axes.Axes|None|表示対象のax (Noneならmatplotlib.pyplot.plotで1枚ごとにプロット)|
|linecolor|オプション|str or list[str]|'red'|フィッティング線の[色指定](https://matplotlib.org/stable/gallery/color/named_colors.html) (listで複数指定可)|
|floc|オプション|float|None|フィッティング時のX方向オフセット (Noneなら指定なし(weibullとexponは0))|
|hist_kws|オプション|dict|{}|[matplotlib.axes.Axes.histに渡す引数](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.hist.html)|

### histクラス使用法詳細
こちらの記事にまとめました
https://qiita.com/c60evaporator/items/fc531aff0cdbafac0f42

## classplotクラス
分類の決定境界およびクラス確率の表示を実行します。
Scikit-Learn APIに対応した分類モデル (例: XGBoostパッケージのXGBoostClassifierクラス)が表示対象となります

**・classplotクラス内のメソッド一覧**

|メソッド名|機能|
|---|---|
|class_separator_plot|決定境界プロット|
|class_proba_plot|クラス確率プロット|

### class_separator_plotメソッド
#### 実行例

```python
import seaborn as sns
from sklearn.svm import SVC
from seaborn_analyzer import classplot
iris = sns.load_dataset("iris")
clf= SVC()
classplot.class_separator_plot(clf, ['petal_width', 'petal_length'], 'species', iris)
```
![image](https://user-images.githubusercontent.com/59557625/117274234-d7474900-ae97-11eb-9de2-c8a74dc179a5.png)
#### 引数一覧

|引数名|必須引数orオプション|型|デフォルト値|内容|
|---|---|---|---|---|
|clf|必須|Scikit-learn API|-|表示対象の分類モデル|
|x|必須|list[str]|-|説明変数に指定するカラム名|
|y|必須|str|-|目的変数に指定するカラム名|
|data|必須|pd.DataFrame|-|入力データ|
|x_chart|オプション　　|list[str]|None|説明変数のうちグラフ表示対象のカラム名|
|pair_sigmarange|オプション|float|1.5|グラフ非使用変数の分割範囲|
|pair_sigmainterval|オプション|float|0.5|グラフ非使用変数の1枚あたり表示範囲|
|chart_extendsigma|オプション|float|0.5|グラフ縦軸横軸の表示拡張範囲|
|chart_scale|オプション|int|1|グラフの描画倍率|
|plot_scatter|オプション|str|'true'|散布図の描画種類|
|rounddigit_x3|オプション|int|2|グラフ非使用軸の小数丸め桁数|
|scatter_colors|オプション|list[str]|None|クラスごとのプロット色のリスト|
|true_marker|オプション|str|None|正解クラスの散布図プロット形状|
|false_marker|オプション|str|None|不正解クラスの散布図プロット形状|
|cv|オプション|int or sklearn.model _selection.* |None|クロスバリデーション分割法 (Noneのとき学習データから指標算出、int入力時はkFoldで分割)|
|cv_seed|オプション|int|42|クロスバリデーションの乱数シード|
|cv_group|オプション|str|None|GroupKFold,LeaveOneGroupOutのグルーピング対象カラム名|
|display_cv_indices|オプション|int|0|表示対象のクロスバリデーション番号|
|clf_params|オプション|dict|None|分類モデルに渡すパラメータ|
|fit_params|オプション|dict|None|学習時のパラメータ|
|subplot_kws|オプション|dict|None|[matplotlib.pyplot.subplots](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.subplots.html)に渡す引数|
|contourf_kws|オプション|dict|None|グラフ表示用の[matplotlib.pyplot.contourf](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.contourf.html)に渡す引数|
|scatter_kws|オプション|dict|None|散布図用の[matplotlib.pyplot.scatter](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.scatter.html)に渡す引数|

### class_proba_plotメソッド
#### 実行例

```python
import seaborn as sns
from sklearn.svm import SVC
from seaborn_analyzer import classplot
iris = sns.load_dataset("iris")
clf= SVC()
classplot.class_proba_plot(clf, ['petal_width', 'petal_length'], 'species', iris,
                           proba_type='imshow')
```
![image](https://user-images.githubusercontent.com/59557625/117276085-a1a35f80-ae99-11eb-8368-cdd1cfa78346.png)
#### 引数一覧

|引数名|必須引数orオプション|型|デフォルト値|内容|
|---|---|---|---|---|
|clf|必須|Scikit-learn API|-|表示対象の分類モデル|
|x|必須|list[str]|-|説明変数に指定するカラム名|
|y|必須|str|-|目的変数に指定するカラム名|
|data|必須|pd.DataFrame|-|入力データ|
|x_chart|オプション　　　|list[str]|None|説明変数のうちグラフ表示対象のカラム名|
|pair_sigmarange|オプション|float|1.5|グラフ非使用変数の分割範囲|
|pair_sigmainterval|オプション|float|0.5|グラフ非使用変数の1枚あたり表示範囲|
|chart_extendsigma|オプション|float|0.5|グラフ縦軸横軸の表示拡張範囲|
|chart_scale|オプション|int|1|グラフの描画倍率|
|plot_scatter|オプション|str|'true'|散布図の描画種類|
|rounddigit_x3|オプション|int|2|グラフ非使用軸の小数丸め桁数|
|scatter_colors|オプション|list[str]|None|クラスごとのプロット色のリスト|
|true_marker|オプション|str|None|正解クラスの散布図プロット形状|
|false_marker|オプション|str|None|不正解クラスの散布図プロット形状|
|cv|オプション|int or sklearn.model _selection.* |None|クロスバリデーション分割法 (Noneのとき学習データから指標算出、int入力時はkFoldで分割)　　　　　　　　　　|
|cv_seed|オプション|int|42|クロスバリデーションの乱数シード|
|cv_group|オプション|str|None|GroupKFold, LeaveOneGroupOutのグルーピング対象カラム名|
|display_cv_indices|オプション|int|0|表示対象のクロスバリデーション番号|
|clf_params|オプション|dict|None|分類モデルに渡すパラメータ|
|fit_params|オプション|dict|None|学習時のパラメータ|
|subplot_kws|オプション|dict|None|[matplotlib.pyplot.subplots](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.subplots.html)に渡す引数|
|contourf_kws|オプション|dict|None|proba_type='contour'のとき[matplotlib.pyplot.contourf](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.contourf.html)、 proba_type='contour'のとき[contour](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.contour.html))に渡す引数|
|scatter_kws|オプション|dict|None|散布図用の[matplotlib.pyplot.scatter](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.scatter.html)に渡す引数|
|plot_border|オプション|bool|True|決定境界線の描画有無|
|proba_class|オプション|str or list[str]|None|確率表示対象のクラス名|
|proba_cmap_dict|オプション|dict[str, str]|None|クラス確率図のカラーマップ(クラス名と[colormap](https://matplotlib.org/stable/tutorials/colors/colormaps.html)をdict指定)|
|proba_type|オプション|str|'contourf'|クラス確率図の描画種類<br>(等高線'contourf', 'contour', or RGB画像'imshow')|
|imshow_kws|オプション|dict|None|proba_type='imshow'のとき[matplotlib.pyplot.imshow](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.imshow.html)に渡す引数|

### classplotクラス使用法詳細
こちらの記事にまとめました
https://qiita.com/c60evaporator/items/43866a42e09daebb5cc0

## regplotクラス
相関・回帰分析の散布図・ヒートマップ表示を実行します。
Scikit-Learn APIに対応した回帰モデル (例: XGBoostパッケージのXGBoostRegressorクラス)が表示対象となります

**・regplotクラス内のメソッド一覧**

|メソッド名|機能|
|---|---|
|linear_plot|ピアソン相関係数とP値を散布図と共に表示|
|regression_pred_true|予測値vs実測値プロット|
|regression_plot_1d|1次元説明変数で回帰線表示|
|regression_heat_plot|2～4次元説明変数で回帰予測値をヒートマップ表示|

### linear_plotメソッド
#### 実行例

```python
from seaborn_analyzer import regplot
import seaborn as sns
iris = sns.load_dataset("iris")
regplot.linear_plot(x='petal_length', y='sepal_length', data=iris)
```
![image](https://user-images.githubusercontent.com/59557625/117276994-65243380-ae9a-11eb-8ec8-fa1fb5d60a55.png)
#### 引数一覧

|引数名|必須引数orオプション|型|デフォルト値|内容|
|---|---|---|---|---|
|x|必須|str|-|横軸に指定するカラム名|
|y|必須|str|-|縦軸に指定するカラム名|
|data|必須|pd.DataFrame|-|入力データ|
|ax|オプション|matplotlib.axes.Axes|None|表示対象のAxes (Noneならmatplotlib.pyplot.plotで1枚ごとにプロット)|
|hue|オプション|str|None|色分けに指定するカラム名|
|linecolor|オプション|str|'red'|回帰直線の[色](https://matplotlib.org/stable/gallery/color/named_colors.html)|
|rounddigit|オプション|int|5|表示指標の小数丸め桁数|
|plot_scores|オプション|bool|True|回帰式、ピアソンの相関係数およびp値の表示有無|
|scatter_kws|オプション|dict|None|[seaborn.scatterplot](https://seaborn.pydata.org/generated/seaborn.scatterplot.html)に渡す引数|

### regression_pred_trueメソッド
#### 実行例

```python
import pandas as pd
from seaborn_analyzer import regplot
import seaborn as sns
from sklearn.linear_model import LinearRegression
df_temp = pd.read_csv(f'./sample_data/temp_pressure.csv')
regplot.regression_pred_true(LinearRegression(), x=['altitude', 'latitude'], y='temperature', data=df_temp)
```
![image](https://user-images.githubusercontent.com/59557625/117277036-6fdec880-ae9a-11eb-887a-5f8b2a93b0f9.png)
#### 引数一覧

|引数名|必須引数orオプション|型|デフォルト値|内容|
|---|---|---|---|---|
|estimator|必須|Scikit-learn API|-|表示対象の回帰モデル|
|x|必須|list[str]|-|説明変数に指定するカラム名のリスト|
|y|必須|str|-|目的変数に指定するカラム名|
|data|必須|pd.DataFrame|-|入力データ|
|hue|オプション　　　|str|None|色分けに指定するカラム名|
|linecolor|オプション|str|'red'|予測値=実測値の[線の色](https://matplotlib.org/stable/gallery/color/named_colors.html)|
|rounddigit|オプション|int|3|表示指標の小数丸め桁数|
|rank_number|オプション|int|None|誤差上位何番目までを文字表示するか|
|rank_col|オプション|str|None|誤差上位と一緒に表示するフィールド名|
|scores|オプション|str or list[str]|'mae'|文字表示する評価指標を指定 ('r2', 'mae', 'rmse', 'rmsle', or 'max_error')|
|cv_stats|オプション|str|'mean'|クロスバリデーション時に表示する評価指標統計値 ('mean', 'median', 'max', or 'min')|
|cv|オプション|int or sklearn.model _selection.* |None|クロスバリデーション分割法 (Noneのとき学習データから指標算出、int入力時はkFoldで分割)　　　　　　　　　　|
|cv_seed|オプション|int|42|クロスバリデーションの乱数シード|
|estimator_params|オプション|dict|None|回帰モデルに渡すパラメータ|
|fit_params|オプション|dict|None|学習時のパラメータをdict指定|
|subplot_kws|オプション|dict|None|[matplotlib.pyplot.subplots](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.subplots.html)に渡す引数|
|scatter_kws|オプション|dict|None|[seaborn.scatterplot](https://seaborn.pydata.org/generated/seaborn.scatterplot.html)に渡す引数|

### regression_plot_1dメソッド
#### 実行例

```python
from seaborn_analyzer import regplot
import seaborn as sns
from sklearn.svm import SVR
iris = sns.load_dataset("iris")
regplot.regression_plot_1d(SVR(), x='petal_length', y='sepal_length', data=iris)
```
![image](https://user-images.githubusercontent.com/59557625/117277075-78cf9a00-ae9a-11eb-835c-01f635754f7b.png)
#### 引数一覧

|引数名|必須引数orオプション|型|デフォルト値|内容|
|---|---|---|---|---|
|estimator|必須|Scikit-learn API|-|表示対象の回帰モデル|
|x|必須|str|-|説明変数に指定するカラム名|
|y|必須|str|-|目的変数に指定するカラム名|
|data|必須|pd.DataFrame|-|入力するデータ（Pandasのデータフレーム）|
|hue|オプション　　　|str|None|色分けに指定するカラム名|
|linecolor|オプション|str|'red'|予測値=実測値の[線の色](https://matplotlib.org/stable/gallery/color/named_colors.html)|
|rounddigit|オプション|int|3|表示指標の小数丸め桁数|
|rank_number|オプション|int|None|誤差上位何番目までを文字表示するか|
|rank_col|オプション|str|None|誤差上位と一緒に表示するフィールド名|
|scores|オプション|str or list[str]|'mae'|文字表示する評価指標を指定 ('r2', 'mae', 'rmse', 'rmsle', or 'max_error')|
|cv_stats|オプション|str|'mean'|クロスバリデーション時に表示する評価指標統計値 ('mean', 'median', 'max', or 'min')|
|cv|オプション|int or sklearn.model _selection.* |None|クロスバリデーション分割法 (Noneのとき学習データから指標算出、int入力時はkFoldで分割)　　　　　　　　　　|
|cv_seed|オプション|int|42|クロスバリデーションの乱数シード|
|estimator_params|オプション|dict|None|回帰モデルに渡すパラメータ|
|fit_params|オプション|dict|None|学習時のパラメータをdict指定|
|subplot_kws|オプション|dict|None|[matplotlib.pyplot.subplots](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.subplots.html)に渡す引数|
|scatter_kws|オプション|dict|None|[seaborn.scatterplot](https://seaborn.pydata.org/generated/seaborn.scatterplot.html)に渡す引数|

### regression_heat_plotメソッド
#### 実行例

```python
import pandas as pd
from sklearn.linear_model import LinearRegression
from seaborn_analyzer import regplot
df_temp = pd.read_csv(f'./sample_data/temp_pressure.csv')
regplot.regression_heat_plot(LinearRegression(), x=['altitude', 'latitude'], y='temperature', data=df_temp)
```
![image](https://user-images.githubusercontent.com/59557625/115955837-1b4f5b00-a534-11eb-91b0-b913019d26ff.png)
#### 引数一覧

|引数名|必須引数orオプション|型|デフォルト値|内容|
|---|---|---|---|---|
|estimator|必須|Scikit-learn API|-|表示対象の回帰モデル|
|x|必須|list[str]|-|説明変数に指定するカラム名のリスト|
|y|必須|str|-|目的変数に指定するカラム名|
|data|必須|pd.DataFrame|-|入力データ|
|x_heat|オプション　　　|list[str]|None|説明変数のうちヒートマップ表示対象のカラム名|
|scatter_hue|オプション|str|None|散布図色分け指定カラム名 (plot_scatter='hue'時のみ有効)|
|pair_sigmarange|オプション|float|1.5|ヒートマップ非使用変数の分割範囲|
|pair_sigmainterval|オプション|float|0.5|ヒートマップ非使用変数の1枚あたり表示範囲|
|heat_extendsigma|オプション|float|0.5|ヒートマップ縦軸横軸の表示拡張範囲|
|heat_division|オプション|int|30|ヒートマップ縦軸横軸の解像度|
|value_extendsigma|オプション|float|0.5|ヒートマップの色分け最大最小値拡張範囲|
|plot_scatter|オプション|str|'true'|散布図の描画種類|
|rounddigit_rank|オプション|int|3|誤差上位表示の小数丸め桁数|
|rounddigit_x1|オプション|int|2|ヒートマップ横軸の小数丸め桁数|
|rounddigit_x2|オプション|int|2|ヒートマップ縦軸の小数丸め桁数|
|rounddigit_x3|オプション|int|2|ヒートマップ非使用軸の小数丸め桁数|
|rank_number|オプション|int|None|誤差上位何番目までを文字表示するか|
|rank_col|オプション|str|None|誤差上位と一緒に表示するフィールド名|
|cv|オプション|int or sklearn.model _selection.* |None|クロスバリデーション分割法 (Noneのとき学習データから指標算出、int入力時はkFoldで分割)　　　　　　　　　　|
|cv_seed|オプション|int|42|クロスバリデーションの乱数シード|
|display_cv_indices|オプション|int|0|表示対象のクロスバリデーション番号|
|estimator_params|オプション|dict|None|回帰モデルに渡すパラメータ|
|fit_params|オプション|dict|None|学習時のパラメータをdict指定|
|subplot_kws|オプション|dict|None|[matplotlib.pyplot.subplots](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.subplots.html)に渡す引数|
|heat_kws|オプション|dict|None|ヒートマップ用の[seaborn.heatmap](https://seaborn.pydata.org/generated/seaborn.heatmap.html)に渡す引数|
|scatter_kws|オプション|dict|None|散布図用の[matplotlib.pyplot.scatter](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.scatter.html)に渡す引数|

### regplotクラス使用法詳細
こちらの記事にまとめました
https://qiita.com/c60evaporator/items/c930c822b527f62796ee

# おわりに
データ分析をしていれば、これらの機能がいずれ使える場面があるかと思うので、ぜひ活用いただければと思います。

もしこのツールを良いと思われたら、**[GitHubにStar](https://github.com/c60evaporator/seaborn-analyzer)**頂けるとありがたいです！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610167/2f141022-68c3-4f36-8ad0-f0276d84d661.png)