0

これはナイーブかもしれませんが、私は PySpark と Spark を使い始めたばかりです。Pyspark の One Hot Technique を理解するのを手伝ってください。列の 1 つで OneHotEncoding を実行しようとしています。1 回のホット エンコーディングの後、データフレーム スキーマはベクトルを追加します。ただし、機械学習アルゴリズムを適用するには、既存のデータ フレームに個別の列を追加し、各列がカテゴリを表すようにする必要がありますが、ベクトル型の列ではありません。OneHotEncoding を検証する方法。

私のコード:

    stringIndexer = StringIndexer(inputCol="business_type", outputCol="business_type_Index")
    model = stringIndexer.fit(df)
    indexed = model.transform(df)
    encoder = OneHotEncoder(dropLast=False, inputCol="business_type_Index", outputCol="business_type_Vec")
    encoded = encoder.transform(indexed)
    encoded.select("business_type_Vec").show()

この表示:

+-----------------+
|business_type_Vec|
+-----------------+
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
+-----------------+
only showing top 20 rows

新しく追加された列はベクトル型です。それを各カテゴリの個々の列に変換するにはどうすればよいですか

4

1 に答える 1

0

あなたはおそらくすでに答えを持っていますが、他の誰かにとって役立つかもしれません. ベクトル分割の場合、この回答を使用できます(機能することを確認しました):

密なベクターを列に分割する方法 - pyspark を使用

ただし、ベクトルを変換して列に戻す必要はないと思います (mtoto が既に述べたように)。spark のすべてのモデルは実際には入力機能をベクトル形式で提供する必要があるためです (間違っている場合は修正してください)。

于 2016-10-30T18:35:29.747 に答える