传递了稀疏矩阵,但需要密集数据。使用X.toarray()转换为密集的numpy数组

时间:2015-05-28 09:18:58

标签: python scikit-learn

代码如下,我正在尝试使用GBRT回归树的训练数据,相同的数据对其他分类器有效,但为GBRT提供了上述错误。请帮忙:

dataset = load_files('train')
vectorizer = TfidfVectorizer(encoding='latin1')
X_train = vectorizer.fit_transform((open(f).read() for f in dataset.filenames)) 
assert sp.issparse(X_train)     
print("n_samples: %d, n_features: %d" % X_train.shape)
y_train = dataset.target
def benchmark(clf_class, params, name):
    clf = clf_class(**params).fit(X_train, y_train)

3 个答案:

答案 0 :(得分:4)

我遇到了同样的问题,试图使用GradientBoostingClassifier加载的数据训练load_svmlight_files。通过将稀疏矩阵转换为numpy数组来解决。

X_train.todense()

答案 1 :(得分:2)

因为 sklearn 请求中的 GBRT X(培训数据)是array-like而不是sparse matrix:{{3 }}

我希望这可以帮到你!

答案 2 :(得分:0)

最新版本的OneHotEncoder库不再支持

sklearn。该代码已修改为用户ColumnTransformer

from sklearn.preprocessing import OneHotEncoder
from sklearn.compose import ColumnTransformer
ct = ColumnTransformer([('town', OneHotEncoder(), [0])], remainder = 'passthrough')

X = ct.fit_transform(X)