【发布时间】:2019-07-12 14:03:54
【问题描述】:
我正在尝试使用简单的数据集运行逻辑回归以了解 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)
【问题讨论】:
-
有什么错误?
-
TypeError: Invalid param value given for param "featuresCol". Could not convert <class 'list'> to string type这是有道理的,因为根据语法,featuresCol="name_of_column"是一个字符串。 -
当你有
featuresCol="single_column"时,这真的是错误吗?
标签: python apache-spark machine-learning pyspark logistic-regression