【Kaggle】#2 感情分析・株価分析
2週間ぶりにデータ分析の勉強をする気になった。
今日やったことをまとめる。
※内容が正しいかどうかは保証できません。間違っていたら教えて下さい。
■概要
世論の感情の浮き沈みと株価の変動には関連があるという前提で、
直近3日間のITライフハック記事の感情変動と株価の変動から、4日目の株価を予測するモデルを作成。
■流れ
1.ITライフハック記事読込>日ごとのPN値計算>(日付ーPN値)の一覧作成
2.株価データ読み込み>日ごとの株価終値計算>(日付ー株価終値)の一覧作成
3.1.と2.を内部結合>(日付ーPN値ー株価終値)の一覧作成
4.3をトレーニングデータとテストデータに分ける
5.PN値・株価終値それぞれで3日間の変動を算出
6.K近傍法により学習・予測
7.K近傍法のハイパーパラメータn_neighborsを1~10まで変化させ、どの値が最も精度が良いか検討
■K近傍法とは?
・学習用データセットが100個あるとする。
・未知のデータの結果を予測したい場合、学習済みデータ100個のうち、このデータと最も似ているk個のデータの結果の平均や多数決から結果を予測をする。
・kがハイパーパラメータのn_neighbors。
・この値が大きすぎると、精度は悪くなると予想
※「似ている」とは
・このデータセットは、特徴量がA,Bの2種類あるとする。
・A,Bの値が最も近いということ
■重要なコード
▼k近傍法モデルの学習・予測・精度算出
・トレーニングデータ:train_feature_arr、train_label_arr
・テストデータ:test_feature_arr, test_label_arr
・ハイパーパラメータの範囲:1-10
--
k_list = [i for i in range(1, 11)]
accuracy = []
for k in k_list:
model = KNeighborsClassifier(n_neighbors=k)
model.fit(train_feature_arr, train_label_arr )
accuracy.append(model.score(test_feature_arr, test_label_arr ))
--
■最も精度の良いn_neighborsの値
1だった。n_neighborsが大きくなるにつれて精度が下がった。
■文章から感情を判断する
・ここでいう感情はPositive/Negativeのこと。
・PN値という数値で表す。
・PN値とは、「うれしい」などの+の感情のとき1、「悲しい」などーの感情のとき-1、どちらでもないとき0を表すようなもの。
・「形態素解析」をすることで、このPN値を算出できる。
■形態素解析
・「形態素」とは、言葉の最小単位のこと。
・例えば、「僕と踊りましょう。」を形態素に分割すると、僕と/踊りましょう になる。
▼形態素解析の流れ
1.形態素に分割
「僕と踊りましょう。」>僕と/踊りましょう
2.品詞に分け、品詞のタグ付けをする。
品詞わけ:踊り/ましょう
タグ付け:「踊り」:動詞 「ましょう」:助動詞
3.活用形は原形に
「踊り」>「踊る」 「ましょう」>「ます」
4.PN値を判定する。「極性辞書」を使う。
踊る:1
ます:0
5.一語ずつPN値を算出したら、記事全体で平均をとる
▼極性辞書
・極性辞書にはいろいろ種類がある。今回は「IPA辞書」を使った。
・IPA辞書はMeCabを使って以下のように定義する
m = MeCab.Tagger('')
・使う時はこんな感じ(「text」が形態素解析されてPN値を返す)
parsed = m.parse(text)
今日はここまで。
この記事が気に入ったらサポートをしてみませんか?