どうも、月見(@Suzuka14144156)です。
今回は、「Sweetviz」で探索的データ解析(EDA)の方法について解説します。
なので、このようなお悩みの方におすすめの記事です。

- Sweetvizってどうなの?
- Pandas-profilingとどっちがいい?
Sweetvizとは?
Sweetvizは、探索的データ解析(EDA)用のライブラリです。
少々面倒くさいEDAの作業を数行のコードで実行できるといったものです。

こんな感じのダッシュボードが数行のコードで表示可能です。

Sweetvizのメリット
正直pandasーprofilingよりいいですね。

pandasーprofilingは、色々な相関係数とか算出してくれているのですが、必要な場面限られますねよね。
正直私は、Sweetvizで十分ですね。
Sweetvizを試すための環境の構築
今回は、Jupyte Labを用います。
Juptrer Labのインストール
インストール方法は以下2種類ある。

- どちらでもOKです
ただ、Anacondaをインストールする方が時間がかかるのでお急ぎの方は、「JupyterLabを直接インストール」がオススメ。
Anacondaをインストール
以下の記事を参考にしてください。
Python Anacondaとは?|インストール〜Jupyter Notebookの立ち上げ
JupyterLabを直接インストール
コマンドプロンプトから、以下のコードを入力ください。
pip install jupyterlab
JupyterLabの起動
コマンドプロンプトから、以下のコードを入力ください。
jupyter lab
以下赤枠のアイコンをクリック。

これで起動します。
Sweetvizのインストール
筆者は、Anacondaを利用しているので以下をコマンドプロンプトで実行することで、インストール可能でした。
conda install -c conda-forge sweetvizSweetvizを試す
今回は、仮想通貨ビットコインの価格を機械学習で予測するモデルを作成します。
説明変数には、以下を利用します。
- ‘DX-Y.NYB’:ドル指数
- ‘GC=F’:金
- ‘^DJI’:ダウ
- ‘^GSPC’:S&P500
- ‘^IXIC’:ナスダック
- ‘^TNX’:米国10年債利回り
各tickerのチャート取得
import pandas as pd
from pandas_datareader import data as pdr
import datetime
import yfinance as yf
import mplfinance as mpl
#BTCのチャートを取得
tickers = ['BTC-USD','^IXIC','^GSPC','^DJI','^TNX','DX-Y.NYB','GC=F']
#取得開始日を入力
start = "2022-01-01"
#取得終了日を入力
end = datetime.date.today()
#Yahoofinanceから取得するように設定
yf.pdr_override()
#データの取得を実行
data = pdr.get_data_yahoo(tickers, start, end)欠損値の処理
data = data.dropna()
dataSweetvizでEDA
# 必要なライブラリーのインポート
import numpy as np
import sweetviz as sv
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
df = data['Adj Close']
# 学習データと評価データを作成
x_train, x_test, y_train, y_test = train_test_split(df.iloc[:, 1:7], df.iloc[:, 0],
test_size=0.2, random_state=1)
df_train = pd.concat([x_train, y_train], axis=1)
df_test = pd.concat([x_test, y_test], axis=1)
my_report = sv.compare([df_train, "Train"], [df_test, "Test"], "BTC-USD")
#直接ブラウザに表示
my_report.show_html("sweetviz_report_2col.html")実行すると以下のダッシュボードが、表示されます。

各因子の相関係数も表示可能です。


見やすいですね。
このボタンをカチカチ切り替えることで、trainとtestデータとで、相関関係に不整合が起きていないか一瞬で確認可能で便利です。



両者のデータの各因子の相関関係にそこまで大きな差異がないことがわかりますね。
せっかくなので、このまま回帰モデルをランダムフォレストでつくってみます。
ランダムフォレストでモデル作成
from sklearn.ensemble import RandomForestRegressor as RFR
rg = RFR(n_jobs=-1, random_state=2525)
rg.fit(x_train, y_train)
predicted = rg.predict(x_test)
rg.score(x_test, y_test)スコアが、以下です。

なかなか良い結果です。
可視化
テストデータと予測データをプロットします。

かなり合っていますね。
重要因子の探索
fti = rg.feature_importances_
print('Feature Importances:')
for i in range(len(df.columns)):
print(df.columns[i+1],fti [i])実行結果は、以下です。

DX-Y.NYBの値が高いです。
- ドルインデックスとビットコインは、負の相関が強い
- なので、ほぼドルインデックスでビットコインの価格を予測できるという結果になったと推定されます
まとめ
今回は、「Sweetviz」で探索的データ解析(EDA)の方法について解説しました。
Sweetvizは、探索的データ解析(EDA)用のライブラリです。
今回の記事は以上です。





コメント