カテゴリカルデータを数値に変換する。pythonを使うための下処理について。
自作したCSVファイル形式のデータをpython用に変換する。
さて、ここのところ予測はずーっとWEKAを使用してきました。
並行してpythonを使った予測も行おうと少しずつ機会を見て情報収集に努めていたわけですが、どうもデータの部分でつまずいていたわけで、以下に問題点をあげてみます。
1、WEKAにおいては漢字で表示されたデータ(たとえば対戦カードとか試合会場など)でも問題なくアルゴリズムを走らせることができたが、pythonにおいては、どういうふうにデータを書けばいいのか?分からなかった。
2、カテゴリーデータを単純に数値に置き換えただけでは表面的にみて数値に変わっただけで、データの本質的意味合いにおいてはまったくデタラメであり、データとしての意味はない。(たんなる識別番号)
特に ② において参考になるページがあったのでリンクをあげておきます。
特徴量(素性)を作るときのメモ + scikit-learnにちょっと触る
キーワードは”2値化”
リンクの記事を一通り読めば理解できますが、重要だと思うところを整理してみます。
1、質的データとか名義尺度は二値にするとよい。
2、カテゴリーを数値として扱うというのも考えられるが、無意味な擬似的な大小関係が生じるため多くの手法では悪影響がある。
以上。
他にも記述はありますが、とりあえずこの2点がいちばん私にとって必要な情報ではないかと。
トト予想の絡みで具体的にいいますと・・・
1、対戦カードを二値で表す。
2、試合会場も二値で表す。
このふたつが私のデータではカテゴリカルデータとなっています。
ついでに試合結果・・home,awat,draw なんかも二値化してみるのもいいかも。
ではどうやって二値化するのか?
リンク記事においてはpythonライブラリーを使っての変換方法が書かれていますが、じつはWEKAのフィルターで簡単に二値化できることが判明。
変換したファイルをいったんプリントアウトし、それをもう一度python用に整理すれば簡単に二値化したpython用データが作成できるのではないか・・・
WEKAによる具体的な二値化の方法
これは非常に簡単です。
データを普通に読み込ませた後、フィルターから ”nominal to binary" を選択して実行するだけ。
これでファイルの名義属性はすべて二値化されます。
変換させたくない属性があれば、それは設定画面で指定することができます。
試しに試行してみましたが、ばっちり上手くいきました。(ただし横に長いデータとなる。属性数はものすごく増えます)
これで python ライブラリー・・・scikit learn なども簡単に利用できるようになると思います。たぶん。。
何かデータ形式で悩んでいたのがバカみたいですね。。
まとめ・・というか次の段階へ
さて、二値化されたデータができたら、さっそくpythonを使っての予測ということになります。
以前から気になっていた”deep learning"・・・
これへの道筋が見えてくる。。
まずはその前に scikit learn がちゃんと動かせるかどうか?そいつを試してみたいと思います。