※このページではアフィリエイト広告を利用しています

【機械学習入門】正規化なしでの株価の機械学習を行ってみた

Python

ここでは、「scikit-learn」を用いた株価の機械学習について解説しています。

スポンサーリンク
スポンサーリンク

行ったこと

「scikit-learn」を用いて「ニコン」の10年分の株価を機械学習させてみました。

正規化については、まだ勉強できていないので、とりあえず今回は、そのままデータを放り込みました。

プログラム

プログラムは以下の通りです。

#nikon機械学習
import glob
import pandas as pd
from sklearn import svm, metrics, model_selection

#1---フォルダ内のCSVファイルの一覧を取得
files = sorted(glob.glob('*.csv'))
#2---ファイル数を取得
file_number = len(files)
#3---CSVファイルの中身を読み出して、リスト形式にまとめる
csv_list = []
for file in files:
    csv_list.append(pd.read_csv(file,encoding='shift_jis',skiprows=[1]))
#4---CSVファイルの結合
merge_csv = pd.concat(csv_list)
#5---CSVファイル出力
merge_csv.to_csv('merge_nikon.csv', encoding='shift_jis')
#6---結合完了のメッセージ
print(file_number,' 個のCSVファイルを結合')
#7---データ読み込み
csv_merge_data = pd.read_csv('merge_nikon.csv',encoding='shift_jis')
#8---任意の列の抽出
csv_data = round(csv_merge_data[["7731 東証1部 (株)ニコン(精密機器)","Unnamed: 1","Unnamed: 2"]])
csv_label = round(csv_merge_data['Unnamed: 3'])
#9---学習用とテスト用に分割
train_data, test_data, train_label, test_label = \
    model_selection.train_test_split(csv_data, csv_label)
#10---データの学習・予測
clf = svm.SVC()
clf.fit(train_data, train_label)
pre = clf.predict(test_data)
#11---正解率を求める
ac_score = metrics.accuracy_score(test_label, pre)
print("正解率=", ac_score)
#11個のCSVファイルを結合
#正解率= 0.008968609865470852

1~6までの部分についての解説はこちらを参照して下さい。

では、7から解説していきます。

7の部分は結合したファイルを読み込んでいます。注意するべきところとしては、「encoding=’shift_jis’」と指定する必要がある点です。指定しないと「UnicodeDecodeError: ‘utf-8’~」となってしまいますので、必ず指定します。

次に8の部分です。読み込んだデータを任意の列を指定して抽出しています。9で学習用とテスト用に分けたデータをfit()メソッドに放り込むために、ここでは学習用データと正解ラベルに分割しています。

ここでの注意点はデータに小数点があるとfit()に放り込めないので、roundで丸めている点です。

10の部分で機械学習のSVMという手法を指定して学習させています。同時にpredict()メソッドで予測させています。

11でmetrics.accuracy_score()関数を用いて正解率を出力させています。

結果

結果としては「0.008968609865470852」です。

正規化していないからなのか、ダメダメでした。

もっと勉強して再チャレンジします。

関連記事

項目内容
正規化と標準化の特徴量のスケーリングの使い分け方法リンク先では機械学習を行う際の特徴量のスケーリングとして「正規化」と「標準化」の使い分けについて解説しています。
タイトルとURLをコピーしました