我一直无法使用任何Sklearn功能提取方法,而不会出现以下错误:

“ TypeError:无法使用灵活类型执行归约”

从示例来看,特征提取方法似乎仅适用于非分类问题。我当然是在尝试分类问题。我怎样才能解决这个问题?

示例代码:

from sklearn.feature_selection import RFE
from sklearn.linear_model import LinearRegression
from sklearn.datasets import load_boston
import random

# Load data
boston = load_boston()
X = boston["data"]
Y = boston["target"]

# Make a classification problem
classes = ['a', 'b', 'c']
Y = [random.choice(classes) for entry in Y]

# Perform feature selection
names = boston["feature_names"]
lr = LinearRegression()
rfe = RFE(lr, n_features_to_select=1)
rfe.fit(X, Y)

print "Features sorted by their rank:"
print sorted(zip(map(lambda x: round(x, 4), rfe.ranking_), names))

最佳答案

我想以下将解决您的问题。

X = np.array(X, dtype = 'float_')
Y = np.array(X, dtype = 'float_')


在调用fit方法之前执行此操作。您也可以使用int_代替float_。这完全取决于您所需的数据类型。

如果标签为string,则可以使用LabelEncoder将标签编码为整数。

from sklearn import preprocessing
le = preprocessing.LabelEncoder()
le = le.fit_transform(Y)
model.fit(X, le)

关于python - Sklearn功能选择,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40749783/

10-09 12:43