如何在 Spark 的逻辑回归分类器中将多个列作为特征传递?

How to pass multiple Columns as features in a Logistic Regression Classifier in Spark?

我正在尝试 运行 使用简单数据集进行逻辑回归以了解 pyspark 的语法。 我有看起来有 11 列的数据,其中前 10 列是特征,最后一列(第 11 列)是标签。 我想将这 10 列作为特征传递,将第 11 列作为标签传递。 但我只知道使用 featuresCol="col_header_name" 作为单列传递作为特征传递 我已经使用 pandas 从 csv 文件中读取数据,但我已将其转换为 RDD。 这是代码:

from pyspark.ml.classification import LogisticRegression
from pyspark.sql import SQLContext
from pyspark import SparkContext
import pandas as pd
data = pd.read_csv('abc.csv')
sc = SparkContext("local", "App Name")
sql = SQLContext(sc)
spDF = sql.createDataFrame(data)
tri=LogisticRegression(maxIter=10,regParam=0.01,featuresCol="single_column",labelCol="label")
lr_model = tri.fit(spDF)

如果我使用 featuresCol=[list_of_header_names] 我会出错。 我使用过 sk-learn,它的语法非常简单,例如:

reg=LogisticRegression()
reg=reg.fit(Dataframe_of_features,Label_array)

您需要使用 Vector Assembler 将所有列组合成一个特征数组。

from pyspark.ml.linalg import Vectors
from pyspark.ml.feature import VectorAssembler
assembler = VectorAssembler(inputCols=[list_of_header_names],outputCol="features")
spDF = assembler.transform(spDF)

然后您可以将所有变量的组合数组作为输入传递给逻辑回归。

tri=LogisticRegression(maxIter=10,
                       regParam=0.01,
                       featuresCol="features",
                       labelCol="label")
lr_model = tri.fit(spDF)