我有一个包含42个要素和1个标签的数据集。
我想在执行决策树以检测异常之前应用库spark ML的选择方法卡方选择器,但是在卡方选择器应用期间遇到此错误:
org.apache.spark.SparkException:由于阶段失败,作业中止了:
阶段17.0中的任务0失败1次,最近一次失败:丢失的任务
17.0阶段的0.0(TID 45,本地主机,执行程序驱动程序):org.apache.spark.SparkException:卡方检验期望因子
(分类值),但发现了10000个以上的不同值
第11栏
这是我的源代码:
from pyspark.ml.feature import ChiSqSelector
selector = ChiSqSelector(numTopFeatures=1, featuresCol="features",outputCol="features2", labelCol="label")
result = selector.fit(dfa1).transform(dfa1)
result.show()
最佳答案
正如您在错误消息中看到的那样,您的features
列在vector中包含超过10000个不同的值,并且看起来它们是连续的而不是分类的,ChiSq只能处理1万个类别,并且您不能增加该值。
/**
* Max number of categories when indexing labels and features
*/
private[spark] val maxCategories: Int = 10000
在这种情况下,可以将
VectorIndexer
与.setMaxCategories()
参数 10k时,该方法才起作用。