データ分析難しすぎるって話
近況
最近、学内のIR(Institution Reserch)事業に関連したプロジェクトに関わっておりまして、なかなか思うような進捗が生めず、厳しい状況です。
授業評価アンケートの先行研究は盛りだくさんなのに、成績データを対象にした先行研究がほぼ存在しない(当社調べ)ので、解析手法の採択も自分で手探りでやっている状態です。
作業のほとんどは、論文の収集(もう50本は読んだんじゃないかなぁ...)と、Python pandasでのデータ整形でございます。
本稿では、色々見てきた上での経験談を語ろうかなぁと思います。
①、論文の見つけ方
これに関しては、本当に重要なテーマだと思っていて、検索ワードによって引っかかる論文は大きく変わると身をもって理解しました。(n敗)
某K教授に、教育データ解析の論文の探し方を聞きに行くと、「(大学名)やe-ポートフォリオで検索してみるといいんじゃない?」とアドバイスがもらえるので、聞きに行くのも大事かなぁと思います。
※尚、それが当たるかは別問題。自分は論文の引用先を見に行って、良い論文を探し当てられた
そして、論文は全部読む必要は無くて、目的と分析,結論を読んで、自分のやりたい事と近いと思ったら、ダウンロードするのが〇だと思います。(J-St〇geでも、たまに消えたりするので注意が必要)
②、データ分析のお話
scikit-learn,Rでもデータの前処理が最重要です。
そして、適切な前処理をするには、取り扱う手法の弱みや仕組みを理解していないと、出力される結果は無意味になります。
しかし、安易にライブラリを通しただけで、1週間分の分析結果の進捗として報告をしてくる人が後を絶ちません。(n=2)
特に、扱うデータが質的変数なのか量的変数なのか、関数の中で欠損値はどのように扱われているのか等、気を付けなければいけないことは多くあります。
もちろん、機械学習のアルゴリズムを理解するのは、学習コストが半端じゃないです。(数式で機械学習のアルゴリズムを解説する本を3ページ読み進めるのに1週間かかりました...)
ただ少なくとも、必要に駆られたらscikit-learnのAPIリファレンスに目を通しておくことをお勧めします。
③、技術的な小話
import pandas as pd
ということでPandasのお話です。
Pandasに関しては、某ゲームエンジンUn〇tyとは違って、リファレンスが分かりやすく整備されているので、リファレンスと利用例を探しに行くのが早かったです。
面白かった仕様としては、Pandasがfor文を使われることをよく思っていないという点ですね。コード例を出すと、
import pandas as pd
df = pd.read_csv('~~~.csv')
for(i = 0;i < 10;i++):
df[i] += 2
という書き方はPandas側からすると、好ましくないそうで、
どうするかというと、**拡張for文とかlambda式(無名関数)**で書いて欲しいらしい。
他には、Excelファイルをプログラムから書き込んでいる途中に強制終了すると、なんと**.zipファイルになる**という謎仕様があった。
notebook = open('~~~.xlsx')
notebook.activate()
//エクセルを開いている状態でプログラムを強制停止すると...
//開いていた~~~.xlsxがzipファイル扱いになる
notebook.save()
この仕様に気付かず、プログラムを再起動すると、~~~.xlsxが開けません。というエラーが出るので注意が必要。
終わり
ここまで読んでいただきありがとう。
では、最後に一つだけ
私たちはポケモンとともに生きている。
人にはそれぞれポケモンと出会うべき時がある。
ともに歩むべき世界がある。
いいか?世界にはとてもたくさんのポケモンが居る!
つまり、それだけたくさんのドキドキが待っている!
さあ行きたまえ。
いま、君の冒険が始まるのだ!
byナナカマド博士
というわけでポケモンをやりましょう()