花了一个痛苦的夜晚调试
import pandas as pd
from imblearn.over_sampling import RandomOverSampler
x_trainvec_rand, y_train_rand = RandomOverSampler(random_state=0).fit_resample(pd.DataFrame.sparse.from_spmatrix(x_trainvec), y_train)
print(x_trainvec_rand)
其中,x_trainvec是csr稀疏矩阵,y_train是panda Dataframe , Dataframe 中两者的维数分别为(75060 x 52651)和(75060 x 1),错误值为“ValueError:传递值的形状为(290210,1),索引表示为(290210,52651)'。
突然间我决定试着
import pandas as pd
from imblearn.over_sampling import RandomOverSampler
x_trainvec_rand, y_train_rand = RandomOverSampler(random_state=0).fit_resample(x_trainvec, y_train)
print(x_trainvec_rand)
不知怎的,它起作用了。
你知道为什么吗?
文件说明:
fit_resample(X, y)[source]
Resample the dataset.
Parameters
X : {array-like, dataframe, sparse matrix} of shape (n_samples, n_features)
Matrix containing the data which have to be sampled.
y : array-like of shape (n_samples,)
Corresponding label for each sample in X.
1条答案
按热度按时间uujelgoq1#
文件上说它接受
这是
sparse matrix
,而不是稀疏 Dataframe 。在imbalaced-learn
源代码中,我发现测试表明稀疏类型必须是csr
或csr
,但无法进行进一步处理。但让我们看看Pandas稀疏。
稀疏矩阵:
派生的 Dataframe :
稀疏 Dataframe 存储与稀疏矩阵存储完全不同,它不是两类的简单合并。
我可能应该坚持查看错误的FULL回溯,
至少它可能会给予我们/你知道它试图做什么。但另一方面,专注于文档实际上说了什么,而不是你想让它说什么,就足够了。