我正在尝试使用简单的数据集运行逻辑回归来理解 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)
最佳答案
您需要使用向量汇编器将所有列组合成一个特征数组。
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)
关于python - 如何在 Spark 中将多个列作为逻辑回归分类器中的特征传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54759966/