微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – Sklearn将Pandas Dataframe和CSR Matrix分成测试和训练集

我正在尝试使用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:

_matrix = generate_tf_idf_matrix(training_df['corpus'].values)

返回一个csr-Matrix(CountVectorizer – > TfidfTransformer)

对于我想要使用的分类

    train_X = _matrix
    train_Y = training_df[['cat1','cat2']]

用于多标签分类

我现在的问题是:

如何将我的数据帧和我的csr矩阵分成测试和训练集?
如果我在创建矩阵之前拆分数据帧,则csr矩阵具有另一个大小,因为我的文档具有不同的特征.

限制:我不想将我的矩阵转换为数组,因此我可以轻松地将其拆分.

解决方法:

scikit-learn包已经包含了一个非常强大的train-val-test交叉验证功能模块.您可以快速查看整个模块sklearn.cross_validation(此处为API).

一般情况下,train_test_split可以胜任:

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

但是,如果你的类y非常不平衡,你可能会对StratifiedShuffleSplit感兴趣,它会在训练/测试数据集中分割数据,但保留每个训练/测试集中每个类的百分比.

因此,在您的情况下,首先创建您的X = _matrix和y = training_df [[‘cat1′,’cat2’]],然后使用scikit-learn的功能将其拆分为训练/测试数据集.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐