-2

私は機械学習の初心者です。私は分類/回帰の問題に取り組んでいます。データセットでカテゴリフィーチャーを変換する方法

、気象機能があるので、いくつかのカテゴリ値をとります、晴れ、雨、風の曇りを、など

この機能を変換するための2つのオプションの方法、

1があります。

date   weather  indexedWeather 
2017-11-01  Sunny    0 
2017-11-02  Cloudy    1 
2017-11-03  Snow    3 
2017-11-04  Cloudy    1 
2017-11-05  Windy    2 
2017-11-06  Sunny    0 
2017-11-07  Snow    3 
2017-11-08  Cloudy    1 

スパークMLLibとして、各カテゴリの数値指標を.Giveすると、この作業を行うにはVectorIndexer tranformerを持って

2.Tranformバイナリーベクターにこの機能:

date   weather   indexedWeather 
2017-11-01  Sunny    1 0 0 0 
2017-11-02  Cloudy    0 1 0 0 
2017-11-03  Snow    0 0 1 0 
2017-11-04  Cloudy    0 1 0 0 
2017-11-05  Windy    0 0 0 1 
2017-11-06  Sunny    1 0 0 0 
2017-11-07  Snow    0 0 1 0 
2017-11-08  Cloudy    0 1 0 0 

スパークMLLibは、タスクのこの種のtranformerを提供していません。

どちらがお勧めですか?これらの2つのオプションは実際に使用されているように見えますが、私の意見では2番目の選択肢が好きですが、皆さんの理解から聞いています。

答えて

2

2番目のアプローチでは、実際にはあなたのためにそれを行うスパークの変圧器があります:OneHotEncoder。この場合は、StringIndexerと一緒に使用する必要があります(hereを参照)。

天候は厳密に分類されており、ソートできないので、バイナリベクトルを使用する方が適切です。これは、アルゴリズムが継続的な機能を期待し、値に応じてデータを分割する場合(ロジスティック回帰など)に当てはまります。 明確なランクまたは並べ替え可能な注文があり、アルゴリズムを考慮する場合は、ワンホットエンコーダを使用する必要があります。

+0

ありがとう@shaido。日曜日、月曜日、...、土曜日のような平日の場合、それは明確な並べ替え可能な順序を持っていますが、私はそれがまだワンホットエンコーダを使って扱われるべきだと思いますか? – Tom

+0

@Tomはい、その場合でも、ワンホットエンコーディングでは適切です。私はそれをもっと明瞭にするために少しだけ私の答えを告げるつもりです。 – Shaido

関連する問題