我正在对分类和数字特征进行逻辑回归
我想创建一个管道,它进行一些转换,但也包括数值列上的StandardScaler
,但不包括分类列
以下是我的管道当前的外观:
# Categorical Features (which are all strings)
stringindexers = [StringIndexer(
inputCol=column,
outputCol=column+"_Index") for column in categorical_columns]
onehotencoder_categorical = OneHotEncoderEstimator(
inputCols = [column + "_Index" for column in categorical_columns],
outputCols = [column + "_Vec" for column in categorical_columns])
categorical_columns_class_vector = [col + "_Vec" for col in categorical_columns]
categorical_numerical_inputs = categorical_columns_class_vector + numerical_columns
# Assembler for all columns
assembler = VectorAssembler(inputCols = categorical_numerical_inputs,
outputCol="features")
pipeline = Pipeline(
stages=[*stringindexers,
onehotencoder_categorical,
assembler,
StandardScaler(
withStd=True,
withMean=False,
inputCol="features",
outputCol="scaledFeatures")
]
)
pipeline.fit(df_pivot_sample).transform(df_pivot_sample).limit(2).toPandas()
但是,这会将标准缩放器应用于所有列,包括那些已从分类特征转换而来的列
如何构造上述管道,以便仅对数值列执行StandardScaler?我需要更改向量汇编程序的顺序吗
我是否应该更改汇编程序,使其仅在缩放数字列后执行assmebler。并使用新列后缀保存新列
这个answer似乎表明这是scikit学习的正确方式,但我不知道如何为ML Pyspark学习
目前没有回答
相关问题 更多 >
编程相关推荐