くぴんのブログ

くぴんのブログ

PR

プロフィール

くぴん74

くぴん74

カレンダー

カテゴリ

お気に入りブログ

dow 39134.76 +299.9… New! どらりん0206さん

2024~25主力株概況3… New! みきまるファンドさん

楽天ラッキーくじ更… じゃっかすさん

千秋楽だ!! Maryu21さん

自分を愛することは… まりあのじいじさん

キーワードサーチ

▼キーワード検索

2018年04月14日
XML
カテゴリ: プログラミング
多くのデータがあるとき、特徴が似た物どうしでグループを作ることにより、扱いやすくなる。→クラスター分析
seabornのclustermapやscipyのdendrogramを使うとクラスター分析を簡単にできる。
以下、為替の時系列データを例にしてみた。

みずほ銀行為替データから2002/4/1〜2018/4/13のデータを取得
https://www.mizuhobank.co.jp/rate/market/historical.html

seabornのclustermapとscipyのdendrogramでクラスター分析。
以下、ipythonで実行。

In [1]: import pandas as pd
In [2]: import matplotlib.pyplot as plt
In [3]: import seaborn as sns


#最初の日付(2002/4/1)の値で規格化し、df1
In [6]: df1=df/df.iloc[0]
In [7]: df1.head()
Out[7]:
USD GBP EUR CAD CHF SEK \
2002/4/1 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
2002/4/2 1.000376 1.010485 1.009128 0.998802 1.010974 1.010101
2002/4/3 1.000376 1.007745 1.007234 1.002036 1.009334 1.006216
2002/4/4 0.999624 1.007060 1.008870 1.002875 1.011352 1.004662
2002/4/5 0.993616 0.999737 1.001722 0.993771 1.002397 1.000000

DKK NOK AUD NZD ... PHP \

2002/4/2 1.008957 1.010610 0.998313 1.001020 ... 1.003831
2002/4/3 1.007678 1.009947 1.000000 1.000170 ... 1.003831
2002/4/4 1.008957 1.016578 0.995361 0.995238 ... 1.000000
2002/4/5 1.001280 1.009284 0.988614 0.992517 ... 0.996169

SGD THB KWD SAR AED MXN \

2002/4/2 0.999585 0.996743 1.002004 1.000282 1.000276 0.999325
2002/4/3 0.998754 0.990228 1.005620 1.000282 1.000276 0.997299
2002/4/4 1.000692 0.993485 1.002234 0.999437 0.999448 0.995949
2002/4/5 0.995015 0.990228 0.995554 0.993525 0.993657 0.989872

RUB TRY MYR
2002/4/1 1.000000 1.000000 1.000000
2002/4/2 1.007299 1.000000 1.000000
2002/4/3 1.000000 1.000000 1.000000
2002/4/4 1.000000 0.999378 1.000000
2002/4/5 1.000000 0.993163 0.994764

[5 rows x 24 columns]

In [10]: sns.clustermap(df1.corr(),annot=True)
In [11]: plt.show()




In [12]: from scipy.cluster.hierarchy import linkage,dendrogram
In [13]: li=linkage(df1.corr())
In [18]: r=dendrogram(li,labels=df1.columns)
In [19]: plt.show()
dendrogramは縦棒の長さがクラスター間の距離に対応している。
縦棒が短ければ、よく似ており、長ければ似ていないことを表す。




dendrogramの並び順を確認

In [20]: r["ivl"]
Out[20]:
['MYR',
'RUB',
'TRY',
'AUD',
'CHF',
'SGD',
'NZD',
'PHP',
'THB',
'KWD',
'HKD',
'BHD',
'SAR',
'USD',
'AED',
'GBP',
'NOK',
'CAD',
'SEK',
'EUR',
'DKK',
'ZAR',
'INR',
'MXN']

HKD,BHD,SAR,AEDはドルペッグ制でUSDと相関係数が1になる。

以前も似たようなことをやった。
https://plaza.rakuten.co.jp/takupin/diary/201705230000/


にほんブログ村 サラリーマン日記ブログ 戦うサラリーマンへ
にほんブログ村





お気に入りの記事を「いいね!」で応援しよう

最終更新日  2018年04月14日 22時36分44秒
コメント(0) | コメントを書く
[プログラミング] カテゴリの最新記事


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

© Rakuten Group, Inc.
Design a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: