我使用PySpark的ChiSqSelector来选择最重要的功能。代码运行良好,但是我无法验证我的索引或名称方面的功能
所以我的问题是:我如何识别这些值在所选功能中,功能是指?
我有下面的示例代码,为了便于可视化,我只使用了四列,但是,我必须对几乎有100列的DF执行此操作
df=df.select("IsBeta","AVProductStatesIdentifier","IsProtected","Firewall","HasDetections")
from pyspark.ml.feature import VectorAssembler
vec_assembler = VectorAssembler(inputCols = ["IsBeta","AVProductStatesIdentifier","IsProtected","Firewall"], outputCol="features")
vec_df = vec_assembler.transform(df)
selector = ChiSqSelector(featuresCol='features', fpr=0.05, outputCol="selectedFeatures",labelCol= "HasDetections")
result = selector.fit(vec_df).transform(vec_df)
print(result.show())
然而,当尝试应用我在this question中找到的解决方案时。我仍然无法理解根据名称或索引选择了哪些列。也就是说,哪些是要选择的特征
model = selector.fit(vec_df)
model.selectedFeatures
第一:请不要使用一个热编码特性,ChiSqSelector应该直接用于分类(非编码)列,如您所见here。 如果没有一个热编码的东西,选择器的使用是直接的:
现在让我们看看ChiSqSelector是如何使用的,以及如何按名称查找相关功能。 例如用法我将创建一个只包含2个相关列(AVProductStatesIdentifier和Firewall)的df,其他2个(IsBeta和iProtected)将保持不变:
首先,让我们将列
AVProductStatesIdentifier
分类现在,让我们将其组合起来,并选择两个最重要的列
现在执行:
导致
两个非常量列
相关问题 更多 >
编程相关推荐