我正在使用PySpark中的数据框上的DecisionTrees创建模型:
(df_train, df_test) = df.randomSplit([0.7,0.3],seed=42)
cl = DecisionTreeClassifier(
labelCol='target',
featuresCol='features',
maxDepth=5
)
pipe = Pipeline(
stages=[
assembler,
vector_indexer,
cl
]
)
model = pipe.fit(df_train)
到目前为止一切顺利(assembler
是VectorAssembler
而vector_indexer
是VectorIndexer
maxCategories=10
)。现在我正在尝试验证我的结果,
prediction = model.transform(df_test)
我得到了例外
Task 186 in stage 2015.0 failed 4 times, most recent failure: Lost task 186.3 in stage 2015.0 (TID 303449): org.apache.spark.SparkException: Unseen label: 007
我相信这是由randomSplit
引起的,因为标签必须只在火车数据集上,而不在测试数据集中。有没有办法在火车上生成拆分并测试保证每个数据集都有所有标签?