Python Sklearn特征选择

Python Sklearn特征选择,python,scikit-learn,classification,feature-selection,Python,Scikit Learn,Classification,Feature Selection,我无法使用任何Sklearn特征提取方法而不会出现以下错误: “TypeError:无法使用灵活类型执行reduce” 从实例来看,特征提取方法似乎只适用于非分类问题。当然,我想做一个分类问题。我怎样才能解决这个问题 示例代码: from sklearn.feature_selection import RFE from sklearn.linear_model import LinearRegression from sklearn.datasets import load_boston im

我无法使用任何Sklearn特征提取方法而不会出现以下错误:

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

从实例来看,特征提取方法似乎只适用于非分类问题。当然,我想做一个分类问题。我怎样才能解决这个问题

示例代码:

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\uu
而不是
float\u
。这完全取决于您需要的数据类型

如果标签是
字符串
,则可以使用将标签编码为整数

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

你的load_boston()方法在哪里?通过线性回归处理分类问题可能不是正确的方法。将标签编码为整数不会导致问题吗?特征选择方法可能会理解类2比类3“小”,而实际上,这种关系并不存在。不,这不会产生任何问题。标签只是标签,对于分类任务来说应该无关紧要。您还可以获取字符串标签和转换后的整数标签之间的映射。