ほぼPython

Not技術ブログBut勉強ブログ 内容には誤りがあることが多いです

機械学習を使ってTwitterアカウントからオタクかどうか判定するデモサイト作ってみたものの・・・

 

 機械学習の基本的な理論を勉強してます。

今は、教師あり学習の「分類」のところをやってます。

その中でも、もっとも基本的な「1次元入力2クラス分類」の勉強をして、実際にpythonで実装してみました。

とりあえず、適当に選んだツイッターの100人のユーザーをオタクかウェイか独断と偏見でラベル付けして、彼らの一日あたりの平均ツイート数をpythonでグラフにしてみました。

 

f:id:short_4010:20180405142928p:plain

 

 

 これを見ると、ウェイの平均ツイート数はかなり0~5あたりに集中していて、オタクの平均ツイート数はウェイよりも若干多い値に集中していてなおかつ幅広く分散していることがわかります。

 

果たしてこのような分布が今回の分析に適しているのか微妙なところですが、とりあえず、分類してみました。

 

pythonで勾配法で交差エントロピー誤差が最小になるようロジスティック回帰モデルのパラメータを決めるプログラムを書いて分類しました。結果はこんな感じになりました。

 

f:id:short_4010:20180405145748j:plain

 ちなみに式で書くとこんな感じ。

 y = \frac {1} {1 + e^{-0.17x + 1.13}}

 

うーん。。。なんか微妙。。。

 

ちなみに理想はこんな感じ。。。(こうなってほしかった・・・!)

 

f:id:short_4010:20180405150426j:plain

 まあでも、とりあえずモデルは出来たので、ツイート数からオタクかどうか分類するwebアプリをデモ的に作ってみました。安定のHerokuです。(時間帯によってはページが存在しないと表示されますが、アクセスすると表示されます)

 

otakudetecter.herokuapp.com

 

ちなみにページに書いてある「結果の目安」には根拠はありません。そして、本当はオタクに属する確率を計算しているだけですが「オタク度」と書いてます。

いろんなひとのアカウントで試してみましたが、可もなく不可もなく、40とか60パーセントとかの微妙な値が多かった印象です。(そしてなんと、DetectorをDetecterと打ってしまっていることが判明・・・いつか修正します。)

 

理論の勉強はこれくらいにして、そろそろライブラリとかを駆使して本格的にいい感じのものを作ってみたいなあと思います。

 

ただ、卒研と院試の勉強(科目は化学。。。)があるのでなかなか時間はとれないかもって感じですね。。。

 

いろいろとがんばります。。。

 

 

P.S.

 

なんかherokuのページは重いなあと思っていたらこんなことが判明しました。

 

 

だからたまにアクセスすると重かったわけですね。しかも時間制限があるので、本当にwebアプリとして運用していくなら有料プランに移行する必要がありそうです。