Sklearn 将 Pandas 数据框和 CSR 矩阵拆分为测试和训练集
Sklearn split Pandas Dataframe and CSR Matrix into Test and Training set
我正在尝试使用 scikit-learn DecisionTree 和 Pandas Dataframe 对文本进行分类:
首先,我构建了一个如下所示的数据框:
cat1 cat2 corpus title
0 0 1 Test Test Test erster titel
1 1 0 Test Super Super zweiter titel
2 0 1 Test Test Test dritter titel
3 0 1 Test Super Test vierter titel
4 1 0 Super Test Super fuenfter titel
5 1 1 Super einfacher Test Super fuenfter titel
6 1 1 Super simple einfacher Test Super fuenfter titel
然后我生成一个 TF-IDF 矩阵:
_matrix = generate_tf_idf_matrix(training_df['corpus'].values)
其中 returns 一个 csr 矩阵(CountVectorizer -> TfidfTransformer)
对于我的分类器,我想使用
train_X = _matrix
train_Y = training_df[['cat1','cat2']]
对于多标签分类
我现在的问题是:
如何将数据框和 csr 矩阵拆分为测试集和训练集?
如果我在创建矩阵之前拆分我的数据框,则 csr 矩阵具有另一个大小,因为我的文档具有不同的功能。
限制:我不想将我的矩阵转换为数组,这样我就可以轻松拆分它。
scikit-learns
包已经包含了一个非常强大的训练-验证-测试交叉验证功能模块。您可以快速浏览一下整个模块 sklearn.cross_validation (here the API).
一般来说 train_test_split 可以胜任:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)
但是,如果您的 类 y
非常不平衡,您可能会对 StratifiedShuffleSplit 感兴趣,它将数据拆分为 train/test 数据集,但保持百分比每个 train/test 组中的每个 类。
因此,在您的情况下,首先创建 X = _matrix
和 y = training_df[['cat1', 'cat2']]
,然后使用 scikit-learn
的函数将其拆分为 train/test 个数据集。
我正在尝试使用 scikit-learn DecisionTree 和 Pandas Dataframe 对文本进行分类: 首先,我构建了一个如下所示的数据框:
cat1 cat2 corpus title
0 0 1 Test Test Test erster titel
1 1 0 Test Super Super zweiter titel
2 0 1 Test Test Test dritter titel
3 0 1 Test Super Test vierter titel
4 1 0 Super Test Super fuenfter titel
5 1 1 Super einfacher Test Super fuenfter titel
6 1 1 Super simple einfacher Test Super fuenfter titel
然后我生成一个 TF-IDF 矩阵:
_matrix = generate_tf_idf_matrix(training_df['corpus'].values)
其中 returns 一个 csr 矩阵(CountVectorizer -> TfidfTransformer)
对于我的分类器,我想使用
train_X = _matrix
train_Y = training_df[['cat1','cat2']]
对于多标签分类
我现在的问题是:
如何将数据框和 csr 矩阵拆分为测试集和训练集? 如果我在创建矩阵之前拆分我的数据框,则 csr 矩阵具有另一个大小,因为我的文档具有不同的功能。
限制:我不想将我的矩阵转换为数组,这样我就可以轻松拆分它。
scikit-learns
包已经包含了一个非常强大的训练-验证-测试交叉验证功能模块。您可以快速浏览一下整个模块 sklearn.cross_validation (here the API).
一般来说 train_test_split 可以胜任:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)
但是,如果您的 类 y
非常不平衡,您可能会对 StratifiedShuffleSplit 感兴趣,它将数据拆分为 train/test 数据集,但保持百分比每个 train/test 组中的每个 类。
因此,在您的情况下,首先创建 X = _matrix
和 y = training_df[['cat1', 'cat2']]
,然后使用 scikit-learn
的函数将其拆分为 train/test 个数据集。