pythonTweet機械学習のデータとして特徴量を作るときの注意点や悩むことなどをメモっておきました。間違いなどが含まれているかもしれません。基本的な内容ですので調べればもっと適切なやり方があると思います。カテゴリカル・データカテゴリカル・データというのは、いくつかの限られた種類の値をとり、その大小関係に意味が無いものです。質的データとか名義尺度とか呼ばれることもあります。都道府県のデータを考えた時に、北海道と沖縄は違う値ですが、その大小関係は定義できません。(もちろん北海道と沖縄に面積的な大小関係などはありますが、欲しい情報ではないとします)カテゴリカル・データを特徴量にするときにはカテゴリーごとにその特徴であるかどうかの二値にするとよいと言われています以下に例を示します。東京:1ちなみに最近Pythonの機械学習ライブラリであるscikit-learnを使っているのですがDictVectorizerというのを使うと二値化もやってくれるみたいです。0.]]他の特徴量の与え方としてはカテゴリーを数値として扱うというのも考えられるのですが、無意味な擬似的な大小関係が生じるため多くの手法では悪影響があります。北海道を1、沖縄を2、東京を3とすると以下のようになります。住所:1住所:2住所:3頻度を使うそれとも?データ内に複数回出現する要素(単語など)についても様々な特徴量の作り方がされています。頻度そのものではなく割合にするとよくなったりすることがあります。Wikipediaなど)scikit-learnにもTf-idfの変換用のクラス(TfidfTransformer)があります。「時間」などの連続な値を持つ特徴量をどのように入れるかというのは大きな曖昧性があります。大小関係が特徴量で捉えたい傾向に合致しているとは限らないため、カテゴリカル・データでやったように特徴量をいくつかの区分に分けて、その区分に含まれるかどうかで考えるという離散化がよく行われます。この区分のやり方にもいろいろあって、単純な方法としては以下のようなものがあります。21-24時)区分ごとの頻度が等しくなるように(データを見て頻度が等しくなるように区分します)あるいは、この区分以下ならこの特徴量が1になるという入れ方も考えられます。15分以下の区分があるときにデータが7分なら、10分以下かつ15分以下なので、2つの特徴量が1になります。scikit-learnにはこの機能がありません。使ったことはないですが、同じくPythonのライブラリのorangeには離散化の機能があるみたいです。スケーリング取りうる値の大小が著しく異なる特徴量を入れると結果が悪くなることがあります。いうときは平均を引いて、標準偏差で割るとよくなることがあります。場合によっては悪くなることもあります。scikit-learnにはpreprocessing.scale関数があって簡単にスケーリングできます。時系列データなら前後の時間、画像データなら周りの画素などで平均を取ると結果がよくなることがあります。前にLIBSVMの重みの見方を書いた。Adsenseを使っています。(1)月別アーカイブはてなブログをはじめよう!sucroseさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。