我在尝试对sklearn中的某些数据使用特征选择和f_classif(ANOVA测试)时收到以下警告消息:
C:\ Users \ Alexander \ Anaconda3 \ lib \ site-packages \ sklearn \ feature_selection \ univariate_selection.py:113:UserWarning:Features ...是常量。 UserWarning)
警告信息显示的功能显然是p值为0.我无法找到有关导致此警告的原因的任何信息。此特定函数的github文件位于:https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/feature_selection/univariate_selection.py
任何帮助都将不胜感激,谢谢。
答案 0 :(得分:1)
通过使用索引作为X中列数组的索引来获得功能:
X_train.columns[yourindex]
然后,您可以手动删除此功能,也可以使用VarianceFilter删除所有零方差功能:
from sklearn.feature_selection import VarianceThreshold
constant_filter = VarianceThreshold(threshold=0)
constant_filter.fit(X_train)
constant_columns = [column for column in X_train.columns
if column not in
X_train.columns[constant_filter.get_support()]]
X_test = constant_filter.transform(X_train)
X_test = constant_filter.transform(X_test)
for column in constant_columns:
print("Removed ", column)
您必须确定训练数据帧上的零方差特征,因为您的整个df可能多次包含该特征。然后从两个dfs中删除该功能。