为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']
暂无答案!
目前还没有任何答案,快来回答吧!