python - 如何将稀疏矩阵拆分为训练集和测试集?
问题描述
我想了解如何使用稀疏矩阵。我有这段代码可以将多标签分类数据集生成为稀疏矩阵。
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 数组。
解决方案
错误消息本身似乎暗示了解决方案。需要将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)
推荐阅读
- angular - ngxs 有选择地序列化数组中的属性
- c# - 无法设置所选值
- javascript - 我可以在javascript中触发点击window.printer页面吗?
- android - setOnCreatePreferencesChangeListener 类型不匹配
- html - 请告诉我为什么 highlight.js 不起作用
- ios - 在通过 Xcode 调试构建时,在 firebase crashlytics 控制台上可以看到崩溃,但在通过 Jenkins 创建的企业构建上看不到
- authentication - asp.net core - stuck in authentication loop
- swift - 使用 iPhone TrueDepth 传感器检测真人脸与照片?
- ios - CGImageDestinationFinalize 失败,有时会崩溃
- angular - nativescript errorPubNub 调用失败,查看状态了解详情