首页 > 解决方案 > 如何将稀疏矩阵拆分为训练集和测试集?

问题描述

我想了解如何使用稀疏矩阵。我有这段代码可以将多标签分类数据集生成为稀疏矩阵。

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>

是:

<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 数组。

标签: pythonnumpyscikit-learnsparse-matrix

解决方案


错误消息本身似乎暗示了解决方案。需要将X和都转换y为密集矩阵。

请执行以下操作,

X = X.toarray()
y = y.toarray()

X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, test_size=0.3)

推荐阅读