【发布时间】:2020-01-11 14:48:30
【问题描述】:
我想了解如何使用稀疏矩阵。我有这段代码可以将多标签分类数据集生成为稀疏矩阵。
from sklearn.datasets import make_multilabel_classification
X, y = make_multilabel_classification(sparse = True, n_labels = 20, return_indicator = 'sparse', allow_unlabeled = False)
这段代码给了我以下格式的 X:
<100x20 sparse matrix of type '<class 'numpy.float64'>'
with 1797 stored elements in Compressed Sparse Row format>
y:
<100x5 sparse matrix of type '<class 'numpy.int64'>'
with 471 stored elements in Compressed Sparse Row format>
现在我需要将 X 和 y 拆分为 X_train、X_test、y_train 和 y_test,以便训练集构成 70%。我该怎么做?
这是我尝试过的:
X_train, X_test, y_train, y_test = train_test_split(X.toarray(), y, stratify=y, test_size=0.3)
并收到错误消息:
TypeError:传递了稀疏矩阵,但需要密集数据。采用 X.toarray() 转换为密集的 numpy 数组。
【问题讨论】:
-
错误消息本身提出了解决方案。通过调用
X.toarray()和y.toarray()将稀疏矩阵转换为密集矩阵后运行train_test_split()函数 -
@Chinni:谢谢!你能发布答案吗?
标签: python numpy scikit-learn sparse-matrix