0

私はPyFarkデータフレーム内のすべてのString型変数をカテゴリ変数に変換した後、データフレーム上で決定木を実行できます。私はパンダを使うことができず、リソースの制約のためにPySparkライブラリしか使用できません。私は可能な解決策としてVectorIndexerを識別しましたが、と言うことができるすべてのStringタイプの列をどのように変換するのか分かりません。pyspark内のすべての公称変数をカテゴリ変数に変換する

誰かがそれを行う方法の構文を教えてくれますか?

featureIndexer = VectorIndexer(inputCol=<list of input columns>, outputCol=<list of output columns>, maxCategories=10).fit(df) 

またはドキュメントがそれを行うことができることを示しているように見えるものは、それ自身にベクタ必要が出VectorIndexer姿を、させる:私はこのような何かの後です。

featureIndexer = VectorIndexer(df, maxCategories=10).fit(df) 

ありがとうございます。

答えて

1

VectorIndexerは、ベクトル型の列を入力として受け取りますが、文字列を含む列のように見えます。この場合、StringIndexerOneHotEncoderを使用することをお勧めします。

StringIndexerは、ラベルの文字列をラベルインデックス(ダブル)の列に使用します。 OneHotEncoderは、この列を各カテゴリを表す複数の列に変換し、カテゴリの機能として使用します。

これらのすべての機能を組み合わせて、VectorAssemblerの単一のベクターにまとめることができます。私は、すべての段階を分類器と一緒にするパイプラインの使用をお勧めします。

Hereは、使用可能なさまざまな機能の変換のドキュメントとその動作の例です。

+0

すみません、ありがとうございました。私はあまりにもそれを台無しにしました。また、どのようにすべての列を変換することができますか? inputCol引数に列名をリストとして渡そうとしましたが、エラーが発生しました。その理由は、変換が必要な50個の奇数列の列があり、すべてを手作業で行う必要がないからです。どうもありがとう! –

+0

@ words_of_wisdomパイプラインを使って一度に複数の列を変換する[this](https://stackoverflow.com/a/36944716/7579547)答えを見ることができます。 – Shaido

関連する問題