【问题标题】:Extract smaller table from pivot table pandas从数据透视表 pandas 中提取较小的表
【发布时间】:2020-03-23 15:03:19
【问题描述】:

我想将以下数据透视表拆分为训练集和测试集(以评估推荐系统),并考虑提取两个具有非重叠索引 (userID) 和列值 (ISBN) 的表。我怎样才能正确拆分它?谢谢。

【问题讨论】:

  • 如果你有scikit-learn库,它有很好的test train split函数,可以让拆分数据帧变得非常简单和容易。
  • 仅供参考,关于您的表格,推荐数据的格式通常采用user, product, rating 的形式。您的矩阵的问题在于,将有许多具有空评级或零评级的值(如果零表示非评级)。这将导致一个具有大量内存开销的巨大表,并且会随着您的用户/产品数据增长而呈指数增长。

标签: python pandas pivot-table train-test-split


【解决方案1】:

按照@moys 的建议,在首先拆分数据框列作为不重叠的列名之后,可以使用scikit-learn 中的train_test_split

例子:

import pandas as pd import numpy as np from sklearn.model_selection import train_test_split

生成数据:

df = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'))

以某种方式拆分 df 列,例如一半:

cols = int(len(df.columns)/2) df_A = df.iloc[:, 0:cols] df_B = df.iloc[:, cols:]

使用train_test_split:

train_A, test_A = train_test_split(df_A, test_size=0.33) train_B, test_B = train_test_split(df_B, test_size=0.33)

【讨论】:

    猜你喜欢
    • 2017-05-13
    • 2021-11-03
    • 2013-03-12
    • 2021-02-20
    • 2017-07-07
    • 1970-01-01
    • 1970-01-01
    • 2016-07-08
    • 2018-09-27
    相关资源
    最近更新 更多