Pythonで機械学習を使ってみる(大失敗編)
早速大遅刻をかましましたよこの男。
というわけで初の記事投稿の時点ですでに2週間が経過しております。
週1投稿と言っていた口はどこに行ったのでしょうか。
さて、反省もほどほどに今回は機械学習を使って判定をしてみましょう。
今回参考にさせていただいた書籍はこちらです↓
Python機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear)
- 作者: Sebastian Raschka,株式会社クイープ,福島真太朗
- 出版社/メーカー: インプレス
- 発売日: 2016/06/30
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (4件) を見る
こちらのP49に書かれているサンプルコードを使ってやってみたいと思います。
sckit-learnを用いて実装しているみたいですね!!!!
ですが考えてもみてください。
このまま書き写してそのまま実行すれば正答率90%のプログラムは確かに実装できますが私が求めているのはそうじゃない。そう、お金ですね。
というわけで最近暴落して金額が楽しいことになっているBitcoinを使ってみましょう。
なんと私の手元には11月後半から1分毎に取得したbitcoinの価格表が存在しています!!
これを使って1分後の価格を予測してみようじゃありませんか!!!
このブログで書かれているコードはgithub上で公開しております。
というわけで早速実装
エディタはVisualStudioCodeを使用しております。
select_databaseというのはSQLとそれを実行した結果を返すだけのアプリです。
これで変数 data には数万件の価格データが入りました。
ここでついでなので学習のためのデータを成型してしまいましょう。
今回の目的は1分後の価格予測……という風にしたかったのですが、この本のP49に書かれているのは分類です。AかBかを判定するためのプログラムです。
なので今回は過去60分間の価格から1分後に価格が上がっているかどうかを判定してみましょう。
さて次にsklearnを実装します。
train_test_split関数は与えられた学習データ(この場合はlData)とその答えあるいはラベルデータ(この場合はaData)をテスト用のデータ(正答率を調べるためのテスト)と学習用のためのデータに分けます。
この時の割合が「test_size=0.3」の部分です。これは30%をテストデータとして使用しますという事が書いてあります。
「random_state=0」はその分類の仕方をランダムにするかどうかが聞かれています。今回は使用しません。
詳しくはtrain_test_split関数でデータ分割 — PyQ 1.0 ドキュメントこちらのサイトをご覧ください。
さて残り少しだ!
標準化部分なので割愛。
パーセプトロンを用いた判定を使用することを書いています。
「n_iter=40」はトレーニング回数
「eta0=0.1」は学習率
ここらへんはテキストをそのまま流用しました。
どのような値を入れるかは考えなくてはならないのでしょうが、今回は気にしません。
あとはfit()を使って学習を開始します。これによってppnに学習結果が保存されました。
次にやるのは学習結果をもとにテストを行います。
これだけ。
変数「pred」の中にテスト結果が入りましたのであとはこれをテストのラベルである変数「aData_test」と比較してあげれば結果が分かります。
あ、結果いります?
予想通りだと思いますが、以下の通りです。
正解率:51%
一分後の価格変動なんて予測できるわけないですよね!!!
結果としては残念でしたが調べながらプログラムを書くのはとても勉強になりました。
今後はこれを習慣化していきたいと思います。
改変しているとはいえコードが載ってしまっていていますので、怒られたら即座に消します。
それではまた来週!
大失敗編とありますが成功編はありません。
このブログの趣旨
このブログは最近(ここ一年くらい)IT系の技術に興味を持ち始めた弱小IT系企業社員が何となく頑張っている様子を一週間毎にまとめるためのブログです。
以下の4点が注意事項となります。
- 知識が偏っています
- 環境系の知識は皆無です
- Linux系はほぼわかりません
- 謝った知識が記載されている可能性が多大にあります(重要)
誤った知識が記載されていた場合にはご指摘いただけると幸いです。
最初の一行がこのブログの全てではございますが、以下自己紹介兼このブログの説明とさせていただきます。
挨拶が遅れてしまい申し訳ございません。
皆様あけましておめでとうございます。
本日からブログを開始いたしました、本年からどうぞよろしくお願いいたします。
私はIT系企業に勤めて3年目の底辺技術者です。
一年前まで技術にも興味がなく働いておりましたがとあるイベントをきっかけに技術力を付けようと思い立ち、最近AIの分野について興味を持ちました。
とは言っても最終学歴が専門学校の私はAIの基礎部分について触れると大学レベルの数学(偏微分や線形代数、統計学)がどうしてもネックになってしまうと考えてそこは考えないようにしています。
ですのでこのブログではTensorflowやKerasを使用して、計算部分については全く欠片も関わろうとせずにアプリを作成してみることを目標としております。
将来的には内部の計算部分についても学習して胸を張って「AI作れます!!!!!」と言えるようになりたいと考えております。
一年の計は元旦にありという言葉もございますし今年一年
目指すはAI作成、目標は転職して給料アップ
を合言葉に頑張っていきますので、どうぞこれからよろしくお願いいたします。
因みに元旦は地球防衛軍5をして過ごしました。