2016-10-13 3 views
0

数百の列を持つテキストファイルがありますが、列には列名がありません。spark mlを使用してモデルをトレーニングするときにテキストファイルから数百の列データを処理する方法

最初の列はラベルで、その他はフィーチャです。列車データの名前を明記する必要があるいくつかの例を読んだ。しかし、列が多すぎるので、すべての名前を指定するのは非常に面倒です。

どうすればこのような状況に対処できますか?

答えて

1

VectorAssemplerlist 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| 
+---------+---+ 
関連する問題