RapidMiner
機械学習で株価予測の最初の一歩 ~RapidMinerのwindowing株価データ扱い~
初めに
こんにちは、株式会社KSKアナリティクスの周です。
最近、機械学習が様々な領域に活かされており
時系列データを使って予測する事例もとても多くなっています。
こうなると、最も面白い、もしくはたくさん儲けられる時系列データが株価でしょうか。
時系列データを分析するにあたり、難しいPython等を使うイメージがあるかもしれません。
プログラミングの学習が大変だと思っている人にとっては非常に難しく感じられるでしょう。
しかし、ノンプログラミングで分析ができるツールがあります!
それがRapidMinerです!
さぁ、RapidMinerでノンプログラミング機械学習を始めましょう!
本記事では記事の都合上株価の予測までいくことができません。
しかし、株価データを扱う最初の一歩をまずは踏み出してみましょう。
また随時Python言語の方法と比較しながら、紹介していきたいと思います。
まずは株価のトレンドの確認をし、短期と中勢的な株価動向をさぐる25日移動平均線と中期的な株価動向をみる75日移動平均線を求めます。
そして最後に、この基本的な2本の線を可視化してみましょう。
Pythonプログラミングの扱い
データの準備
株式投資メモ
https://kabuoji3.com/stock/
こちらから簡単にcsv式の株価データをダウンロードできます。
例えば:1321 東証ETF 日経225連動型上場投資信託(ETF)の2017~2019年9月の年ごとデータをダウンロードします。
前処理
- 必要なライブラリーをインポートします。
import glob import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import datetime %matplotlib inline
- データを読み取り、結合します。
dflist = glob.glob("*.csv")
data = pd.DataFrame()
for i in dflist:
name = pd.read_csv(i,header=0, nrows=1, encoding='cp932') # 日本語を表記する
stock_name = name.columns[0]
df = pd.read_csv(i,header=1, encoding='cp932')
df["日付"] = pd.to_datetime(df["日付"], format="%Y-%m-%d")
data = data.append(df)
# 日付、終値を取ります
date = data.iloc[:,0]
price = data.iloc[:,4]
-
データ可視化
plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False plt.figure(figsize=(15,6)) plt.plot(date,price) plt.title(stock_name,fontsize=20) plt.xlabel('年月',fontsize=18) plt.ylabel('株価',fontsize=18);
移動平均を求めます
では、移動平均を求めましょう。Pythonならライブラリーpandasのrollingで求めます。
sma25 = price.rolling(window=25, center=False,axis=0).agg(["mean"])
sma75 = price.rolling(window=75, center=False,axis=0).agg(["mean"])
移動平均2線を追加しましょう
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.figure(figsize = (15,6))
plt.plot(date, price, color="b")
plt.plot(date, sma25, color="y")
plt.plot(date, sma75, color="g")
plt.legend(["Everyday","SMA25", "SMA75"])
plt.title(stock_name,fontsize=20)
plt.xlabel('年月',fontsize=18)
plt.ylabel('株価',fontsize=18);
ここまで見てくれてありがとうございます。
やっぱりコードを書くのが嫌でしょう。
RapidMinerを使うと、もっと効率的かつ楽に出来ますよ。
では、やり方を一緒に見ていきましょう。
RapidMinerの扱い
データ読み込み
オペレーターread_csvでデータを読み込み、結合します。
データをインポートする時、二つ注意すべきところがあります。
前処理
一つ目:元データの一行目が銘柄になっています。
これを削除するために、Header rowとStart rowを2に設定します。
そうすると、 Finishをクリックします。
早速確認!可視化
繋がって、実行すると、結合したデータを確認することができます。
いよいよwindowingで移動平均を求めよう
オペレーターProcess WindowsとExtract Aggregatesを使うと、簡単に移動平均を取ることができます。
まずはExtract AggregatesをProcess Windowsの中にいれます。
Extract AggregatesはWindowしたいカラム、とそ取りたい値を選択することができます。
オペレーターの設定は以下のようになっています。
RapidMinerのWindowingで他の項目を取ることもできます。右側のパラメータ欄をみると、mean、min、max。。。なども用意されています。
Process WindowsはWindowサイズの設定、カラムのタイプ、カラム名を選べます。
また25日移動平均を求めたい場合は、windows sizeを25で記入します(75日間なら、75を記入します。)
creat horizon(labels)にチェックし、日付を選びます。
●Rollingについては以下のブログもぜひ参考にしてください。
▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
https://www.ksk-anl.com/blog/time-series-as-supervised-learning-rolling-statistics/
▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
最後にAppendオペレーターを入れます。Appendでスライスした全てのWindowsのを結合します。
なぜAppendを入れるでしょうか?それはWindowingできた結果が一つ一つのファイルになっています。
結合すると全ての結果がまとめます。
今回で2線をWindowingしたいので、プロセスが下のようになっています。
早速確認!
Visualizationsから楽に移動平均の変動もみえます。
マウスを図で移動すると、各点の値も簡単に確認できます。
今回は平均値、最小値、と標準偏差もWindowingしました。
どうでしょうか、非常に便利でしょう。
ぜひ、可視化の機能も活かしてデータ分析を始めましょう。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
もしRapidMinerに興味を持ちましたら、
是非今度のハンズオンに参加してみましょう!
またご質問とかありましたら、下の連絡先まで連絡してください。
☞ https://ksk-anl.smktg.jp/public/application/add/43
1日で機械学習の基礎が学べる!無償ハンズオンセミナー随時開催中
☞ https://www.ksk-anl.com/event/
RapidMinerをもっと知りたい方はこちら
☞ https://www.rapidminer.jp/
早速使ってみたい!RapidMinerの体験版の無償DL
☞ https://www.rapidminer.jp/download/
導入を検討中!わかりやすい詳細なQ&A
☞ https://www.rapidminer.jp/faq/