在pyspark-ml中处理illegalargumentexception

nle07wnf  于 2021-05-24  发布在  Spark
关注(0)|答案(0)|浏览(347)

为decisiontreeclassifier创建ml管道时遇到问题。
我正在使用目标变量“attack”处理linux攻击数据集
我有以下代码:

inputCols = [col for col in df_memory.columns if col != "attack"
outputCols = [f"{col}_idx" for col in df_memory.columns if col not in ["attack"]]
outputCols.append('label')
stage_1 = StringIndexer(inputCols=inputCols, outputCols=outputCols)
inputCols_VA = [x for x in outputCols if x != "label"]
stage_2 = VectorAssembler(inputCols=inputCols_VA, outputCol="features")
print(inputCols_VA)
print(outputCols)

打印上面的结果如下:

['ts_idx', 'PID_idx', 'MINFLT_idx', 'MAJFLT_idx', 'VSTEXT_idx', 'VSIZE_idx', 'RSIZE_idx', 'VGROW_idx', 'RGROW_idx', 'MEM_idx', 'CMD_idx', 'type_idx']
['ts_idx', 'PID_idx', 'MINFLT_idx', 'MAJFLT_idx', 'VSTEXT_idx', 'VSIZE_idx', 'RSIZE_idx', 'VGROW_idx', 'RGROW_idx', 'MEM_idx', 'CMD_idx', 'type_idx', 'label']
stage_3 = DecisionTreeClassifier(labelCol='label', featuresCol = 'features')

正在创建要管道的阶段:

pipeline =  Pipeline(stages=[stage_1,stage_2,stage_3])
model = pipeline.fit(train_memory_df)

上面的代码给出了以下错误:

IllegalArgumentException: requirement failed: The number of input columns does not match output columns

如何解决这个问题?
我的训练数据框有以下列:

['ts',
 'PID',
 'MINFLT',
 'MAJFLT',
 'VSTEXT',
 'VSIZE',
 'RSIZE',
 'VGROW',
 'RGROW',
 'MEM',
 'CMD',
 'attack',
 'type']

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题