我遇到了以下代码的类型错误,其中因子A和B用于预测C
df = df[['A','B','C']]
print (df.head())
print (df.tail())
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
names = ['A','B']
for n in range(0, len(names)):
test = SelectKBest(score_func=chi2, k=all)
fit = test.fit(X_train, y_train)
print(" %s : %.2f") % (names[n], fit.scores_[n])
数据框如下
A B C
1 -0.000078 0.115441 0
2 -0.002767 0.089734 1
3 -0.000848 0.069986 1
4 0.001235 0.079025 1
5 0.004776 0.087153 0
A B C
2831 -0.001210 0.109015 1
2832 -0.003597 0.109474 1
2833 0.000190 0.115139 1
2834 0.003153 0.134228 1
2835 0.005453 0.133333 0
它产生以下错误
TypeError: '<=' not supported between instances of 'int' and 'builtin_function_or_method'
我不明白如何解决这个错误,有人可以提出建议吗?
答案 0 :(得分:0)
在
SelectKBest(score_func=chi2, k=all)
all
是一个内置的Python函数。你需要的是
SelectKBest(score_func=chi2, k="all")
拥有字符串。
此外,对于此方法,X值必须为非负值,因此如果您使用df[['A', 'B']]
作为X_train
也会出现问题。
最后,将fit方法放在该循环中是没有意义的。您可能想要打印循环。
这是一个有效的例子;我取了abs
个X值使它们成为非负值;在你的背景下这是否有意义我无法分辨。
test = SelectKBest(score_func=chi2, k="all")
fit = test.fit(np.abs(df[['A', 'B']]), df['C'])
for n in range(len(names)):
print("{} : {:.2g}".format(names[n], fit.scores_[n]))