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

标签 python apache-spark machine-learning pyspark logistic-regression

我正在尝试使用简单的数据集运行逻辑回归来理解 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/

相关文章:

python - 在文本文件中搜索字符串,保存包含列表中项目的行,如果文本文件中不存在该项目,则返回 NA

machine-learning - 使用预训练 CNN 提取的特征作为 CNN/NN 的新特征

python - 为 kmeans scikit 堆叠 3 个变量

performance - 预测速度慢: Scikit Gaussian Process classification

python : Function which works on initial/default values if no parameters are passed

Python - 按钮内的 IF 函数

python - 在单个 Docker 容器中开发 ROS 节点?

hadoop - Spark 无法再执行作业。执行者创建目录失败

java - Apache Spark 机器学习 - 无法让 Estimator 示例工作

MongoDB Spark Connector - 聚合速度慢