0
数百の列を持つテキストファイルがありますが、列には列名がありません。spark mlを使用してモデルをトレーニングするときにテキストファイルから数百の列データを処理する方法
最初の列はラベルで、その他はフィーチャです。列車データの名前を明記する必要があるいくつかの例を読んだ。しかし、列が多すぎるので、すべての名前を指定するのは非常に面倒です。
どうすればこのような状況に対処できますか?
数百の列を持つテキストファイルがありますが、列には列名がありません。spark mlを使用してモデルをトレーニングするときにテキストファイルから数百の列データを処理する方法
最初の列はラベルで、その他はフィーチャです。列車データの名前を明記する必要があるいくつかの例を読んだ。しかし、列が多すぎるので、すべての名前を指定するのは非常に面倒です。
どうすればこのような状況に対処できますか?
VectorAssempler
とlist comprehension
を組み合わせて、モデルトレーニング用のデータを構成することができます。 2つの機能列(x1
およびx2
)と応答変数y
を持つこのサンプルデータを考えてみましょう。
df = sc.parallelize([(5, 1, 6),
(6, 9, 4),
(5, 3, 3),
(4, 4, 2),
(4, 5, 1),
(2, 2, 2),
(1, 7, 3)]).toDF(["y", "x1", "x2"])
まず、我々は"y"
ていない列名のリストを作成します。
colsList = [x for x in df.columns if x!= 'y']
今、私たちはVectorAssembler
を使用することができます。
from pyspark.ml.feature import VectorAssembler
vectorizer = VectorAssembler()
vectorizer.setInputCols(colsList)
vectorizer.setOutputCol("features")
output = vectorizer.transform(df)
output.select("features", "y").show()
+---------+---+
| features| y|
+---------+---+
|[1.0,6.0]| 5|
|[9.0,4.0]| 6|
|[3.0,3.0]| 5|
|[4.0,2.0]| 4|
|[5.0,1.0]| 4|
|[2.0,2.0]| 2|
|[7.0,3.0]| 1|
+---------+---+