暗号通貨.py

ビットコインやブロックチェーンの技術に衝撃を受け、プログラミングの勉強を開始。現在はPythonを勉強中。

Bitcoin Programming

機械学習(scikit-learn)を使ってビットコインの価格を予想する その2

2016/11/27

前回無謀にも「機械学習でビットコイン価格を予想する」ことにチャレンジしました。

機械学習(scikit-learn)を使ってビットコインの価格を予想する(未完成)

結果は惨敗でしたが、できそうになればリベンジしようと思っていたところ、突然コメント欄に親切な猛者が登場したので完成しました。笑

他力本願な形になって情けないですね。

恥ずかしい話、このコードを読んでもあまり理解できていません。

疑問点が多すぎて解説をお願いしたいところです。

コードを提供してくれたteraさんありがとうございます。コメントとコードを載せます。

面白そうだったので貴殿のコードを参考にトライしてみました。
trainStartDayから過去のデータで学習して、trainStartDayの次の日のBTC価格を予想します。
パラメータを変えて試してみましたが、あまり正答率は高くなかったです。参考までです。

import numpy as np
import pandas as pd
from sklearn import tree

trainStartDay=1 #>=1
trainDataLength=30
kyoushiDataNumber=30

def importData():
    csvfile='coindesk-bpi-USD-close.csv'
    btc_price = pd.read_csv(csvfile)
    data=np.array(btc_price['Close'])
    return np.array(data[::-1])

def trainData(data):
    train_X = []
    train_y = []
    for i in range(0,kyoushiDataNumber):
        values=data[trainStartDay+1+i:trainStartDay+trainDataLength+1+i]
        zenjitsuValue=values[0]
        toujitsuValue=data[trainStartDay+i]
        train_y.append(int(zenjitsuValue<toujitsuValue))
        train_X.append(values)
        return np.array(train_X), np.array(train_y)

def prediction():
    X=data[trainStartDay:trainStartDay+trainDataLength]
    zenjitsuValue = X[0]
    toujitsuValue = data[trainStartDay-1]
    y=int(zenjitsuValue<toujitsuValue)
    y_Prediction=clf.predict(X)
    return y_Prediction ,y

data=importData()
train_X, train_y = trainData(data)

clf = tree.DecisionTreeClassifier()
clf.fit(train_X, train_y)

y_Prediction ,y=prediction()

print('Kyoushi:'+ str(train_y).replace(',',''))
print('Gakushuu:'+ str(clf.predict(train_X)))

print('RealValue:'+ str(y))
print('PredictionValue:'+ str(y_Prediction[0]))

気になる明日のビットコイン価格は?

先程のコードを実行してみました。

データは前回と同じくcoindeskの終値をcsvファイルでダウンロードして使用しています。

7/15時点での終値は664.876ドル

実行結果は

Kyoushi:[1]

Gakushuu:[1]

RealValue:1

PredictionValue:1

予測結果であるPredictionValueは1、つまり前日価格の664.876ドルより上昇するとなりました。

coindeskで発表されているこの終値が何時現在のデータなのかがよくわかりませんが、scikit-learnの決定木分析によると、16日はビットコイン価格が上がるとの予想です。

よし仕込むかw

pythonの機械学習ライブラリ、scikit-learnを使って予想しているわけですが、教師データは30日間のビットコイン価格の推移だけです。

言ってしまえば、これまでの価格の推移から将来の価格を予想するだけなので、実際正答率はそこまで上がらないと思います。

価格は複合的な要因で動くもので、私はチャート分析もあまり興味がないというか、期待していません。←できないだけ。

最終的にはTensolFlowやChainerを利用してディープラーニングで予想するところまでいきたいですが、遠すぎて足下も見えてません。

悪戦苦闘しながら、少しずつでも勉強していきたいと思います。

改めてコードを提供してくれたteraさんにお礼申し上げます。少額ですがお礼のビットコイン送ってます。笑

そして、teraさんにソースコードのことで色々とお聞きしたいことあるので、ぜひまたコメントお待ちしてます。笑

最後にあくまで投資は自己責任でお願いします。

スポンサーリンク

adsense

スポンサーリンク

日本で一番簡単にビットコインが買える取引所 coincheck bitcoin

-Bitcoin, Programming