Apache spark Spark ML:使用ChiSqSelector进行特征选择后在培训中出现问题
我是新手。我正在研究一个分类模型,并希望使用ChiSqSelector选择模型培训的重要功能。但是,当我使用ChiSqSelector选择的功能进行训练时,它会抛出以下错误: “IllegalArgumentException:u”功能0被标记为标称(分类),但它没有指定的值数。” 有趣的是,当我使用任何基于树的算法时,我得到了上面提到的错误。例如,天真的偏见和逻辑回归,我没有得到错误 当我在spark文档中使用示例代码中提供的数据时,我发现了相同的结果。可使用spark 2.1.1文档中的代码再现错误:Apache spark Spark ML:使用ChiSqSelector进行特征选择后在培训中出现问题,apache-spark,machine-learning,apache-spark-mllib,feature-selection,apache-spark-ml,Apache Spark,Machine Learning,Apache Spark Mllib,Feature Selection,Apache Spark Ml,我是新手。我正在研究一个分类模型,并希望使用ChiSqSelector选择模型培训的重要功能。但是,当我使用ChiSqSelector选择的功能进行训练时,它会抛出以下错误: “IllegalArgumentException:u”功能0被标记为标称(分类),但它没有指定的值数。” 有趣的是,当我使用任何基于树的算法时,我得到了上面提到的错误。例如,天真的偏见和逻辑回归,我没有得到错误 当我在spark文档中使用示例代码中提供的数据时,我发现了相同的结果。可使用spark 2.1.1文档中的代码
from pyspark.ml.feature import ChiSqSelector
from pyspark.ml.linalg import Vectors
df = spark.createDataFrame([
(7, Vectors.dense([0.0, 0.0, 18.0, 1.0]), 1.0,),
(8, Vectors.dense([0.0, 1.0, 12.0, 0.0]), 0.0,),
(9, Vectors.dense([1.0, 0.0, 15.0, 0.1]), 0.0,)], ["id", "features",
"clicked"])
selector = ChiSqSelector(numTopFeatures=2, featuresCol="features",
outputCol="selectedFeatures", labelCol="clicked")
result = selector.fit(df).transform(df)
print("ChiSqSelector output with top %d features selected" %
selector.getNumTopFeatures())
result.show()
from pyspark.ml.classification import DecisionTreeClassifier
dt = DecisionTreeClassifier(labelCol="clicked",
featuresCol="selectedFeatures")
model = dt.fit(result)
有人在Apache Spark用户列表(以下链接)中报告了该问题,但没有人响应
如果有人能解释一下,我将不胜感激。提前谢谢。我也遇到了这个问题。功能列SparseVector->DenseVector可以使其运行 我不知道是否有更好的方法