機械学習 ~ MovieLens のデータを pandas.DataFrame にする時に悩むこと
機械学習や レコメンド エンジン の開発時にサンプルデータとしてよく使われる MovieLens のデータ。
その筋の方々は データ を pandas の DataFrame に変換して使うことが多いと思います。
わたしも何度かそんなことをしていましたが、毎回地味にめんどくさい!と思っていたアレ!をなんとか効率的にできないか考えてみました。
機械学習 の定番・ MovieLens のデータ
MovieLens (英語サイト) というのは、GroupLens と呼ばれる ミネソタ大学 の 機械学習 とか 人工知能 の研究所が無料で公開している、非商用のレコメンド サービスです。
GroupLens はサービスを提供するだけではなく、その開発に用いられているデータを無償で公開しており、機械学習 関係の人々に広く使われています。
Python の 機械学習 の本といえば最近は Python機械学習プログラミング 達人データサイエンティストによる理論と実践 が Am○zon でベストセラーになっているようですが、この本が出るまでは個人的に鉄板に君臨していた、オライリー の Pythonによるデータ分析入門 でも MovieLens のデータを扱ったデータ分析が紹介されています。
Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理
- 作者: Wes McKinney,小林儀匡,鈴木宏尚,瀬戸山雅人,滝口開資,野上大介
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/12/26
- メディア: 大型本
- この商品を含むブログ (12件) を見る
MovieLens のデータを pandas.DataFrame にする時にめんどくさいアレとは
MovieLens のデータを pandas の DataFrame 形式に変換するのは簡単です。
DataFrame の from_csv メソッドは、ファイルパスにインターネット上の URL も指定できるので、例えば、MovieLens のユーザーの行動履歴のデータであれば、ほら、こんなに簡単。
え?これの何がめんどくさいって・・・?
機械学習 実は大事なカラムの名前がない
さっきの方法で DataFrame にした MovieLens のデータですが、データのカラム名がついてません。
何のデータなのかを表すカラム名は、 機械学習 業界では feature とか言って、これにまつわるエトセトラで本や論文が出るぐらいアツいのです。それが名無しだなんて・・・!
何度かやってると地味〜にめんどくさいんですよね。
特に Item のデータはカラムがたくさんあるので、毎回カラム名手打ちはツライ・・・
MovieLens のデータ・カラム名無し問題を解決する
と、いうわけで、地味だけど毎回いい加減にしてよ!と言いたくなるこの問題をどうにかできないか考えました。
結果、以下のようにコピペとワンライナーで乗り切ることができました!
1. README.txt からカラム名をコピペ
README.txt(英語) に、どのファイルにどんなデータが入っているか、が説明されてますが、ここにカラム名も書いてます。
赤枠部分に注目。とりあえずこれをコピペ。
gist.github.com
ただ、Python のプログラムの中で使えるわけではないので、ちょっと料理が必要。
2. ワンライナーで Python の list にする
1.でコピペした文字列を map と lambda 関数で料理します。
gist.github.com
3. DataFrame のカラムにセットする
2.で作った list を movielens.columns = item_features な感じで DataFrame の カラムに指定します。
コード全体はこんな感じ。
こんなめんどくさいことが数行でできちゃうなんて Python ってスゴいねっ!
機械学習 ~ MovieLens のデータを pandas.DataFrame にする時に悩むこと 参考図書
Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理
- 作者: Wes McKinney,小林儀匡,鈴木宏尚,瀬戸山雅人,滝口開資,野上大介
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/12/26
- メディア: 大型本
- この商品を含むブログ (12件) を見る
Python機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear)
- 作者: Sebastian Raschka,株式会社クイープ,福島真太朗
- 出版社/メーカー: インプレス
- 発売日: 2016/06/30
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (2件) を見る