我正在Linear Regression
进行PySpark
建模,并对此进行了重新调整。我拥有的数据有categorical features
。我浏览了PySpark
上的文档,Linear Regression
的示例显示了这一点:
model = LinearRegressionWithSGD.train(parsedData)
它没有显示如何将categorical features
传递给Linear Regression
。在我Random Forest
PySpark
之前,我在encoded
的{{1}}工作过,然后将这些功能传递给模型,因为categorical features
提供了Random Forest
指定parameter
。 categorical features
在文档中没有显示任何此类参数。
任何人都可以通过为Linear Regression
categorical feature
Linear Regression
PySpark
到MLlib
模型的方法来帮助我
答案 0 :(得分:1)
要在预期数字特征时使用分类特征,可以使用虚拟编码。为此,MLLIB有一个oneHotEncoder。
答案 1 :(得分:0)
您需要使用“''VectorAssembler'''来构建“功能”列。 “功能”是功能列的默认名称,因此在单变量情况下,您可以LinearRegression(featurescol="catvar"). Here is a walkthrough of the whole process, assuming you started with
strVar in a dataFrame
df`”。
步骤1:建立一个映射到字符串变量的索引。
from pyspark.ml.feature StringIndexer, OneHotEncoder
from pyspark.ml.feature import VectorAssembler
varIdxer = StringIndexer(inputCol='strVar',outputCol='varIdx').fit(df)
df = varIdxer.transform(df)
步骤2:使用OneHotEncoder
df = OneHotEncoder(inputCol="varIdx", outputCol="varCat").transform(df)
步骤3:使用VectorAssembler
创建“功能”列。
assembler = VectorAssembler(inputCols=["varCat"],outputCol="features")
df = assembler.transform(df)
步骤4:拟合模型(我仅使用LinearRegression进行过测试)。
lr = LinearRegression(labelCol='y',featuresCol='features')