【问题标题】:Get a training set on pandas [duplicate]获得关于熊猫的训练集[重复]
【发布时间】:2018-09-26 18:24:06
【问题描述】:

我需要将读取到 csv 的 pandas 数据框分开,这个数据集需要分成 3 组,训练测试和验证。 但我的问题是我不知道 csv 有多少属性,因为我正在使用许多具有不同大小属性的 bases(一个有 3 或 4 个,而其他有 40 个以上) . 我需要分成几部分

  • 培训 = 50%
  • 测试 = 25%
  • 验证 = 25%

因此,如果我有 5 个属性,每个属性有 100 个值,我需要为火车获取 50 行。我如何分离所有属性,最后我为每个组获得一个新的数据框,始终保持正确的比例 已经实现了读取 csv 的功能,如果你能看到它们是通用的,因为它们只接收 csv 所在的路径并返回一个新的数据框。

import pandas as pd


class Entity:

    def __init__(self, path):
        self.data_frame = pd.read_csv(path)

    def get_value(self, attr):
        return self.data_frame[attr]

    def split_set(self):
        pass

这个类是通用的,我需要创建这个函数split_set 来分离集合。我现在从 panda 和 python 开始,很抱歉,如果这显然很容易解决,但我想不出一个好的方法来做到这一点。 提前致谢。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    将 R 列添加到您的数据中。为其分配行的哈希值或随机数,因此其值介于 0 和 1 之间。

    然后 0

    【讨论】:

    • 或者为从文件中读取的每一行掷骰子?
    【解决方案2】:

    我认为您可以随机重新排序数据帧并选择前 50% 作为训练,50%-75% 作为测试,75%-100%。

    df = df.sample(frac=1)  # randomly reorder the whole dataframe
    n_rows = len(df)
    
    train_idx = n_rows // 2
    test_idx = train_idx + n_rows // 4
    
    train = df.iloc[:train_idx, :]
    test = df.iloc[train_idx: test_idx, :]
    val = df.iloc[test_idx:, :]
    

    希望对你有帮助!

    【讨论】:

      【解决方案3】:

      您可以在 sklearn 库中使用一种方法是 sklearn.model_selection.train_test_split。

      import numpy as np
      from sklearn.model_selection import train_test_split
      
      X= np.arange(10).reshape((5, 2))
      X_train, X_test = train_test_split(X, test_size=0.33, random_state=42)
      

      然后您可以看到数据分为训练和测试数据集。对于更多数据集,您可以重复该步骤,直到获得所需的数据。

      【讨论】:

        【解决方案4】:

        你可以使用sklearn库

        import sklearn
        X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.25, train_size=0.5)
        

        【讨论】:

        • 这种情况下X_train和Y_train有什么区别?因为我不需要把它们分开
        • 因为如果我想将集合分成 3 个部分,我会这样做 train, test = train_test_split(data_frame, test_size=0.5, train_size=0.5),然后再做一个 test, validation = train_test_split(test, test_size=0.5, train_size=0.5) 来分离测试和验证?
        • 是的,您不需要添加 X_train Y_train,这只是一个示例 X 是条目,Y 是结果
        猜你喜欢
        • 2017-10-07
        • 1970-01-01
        • 2019-05-21
        • 1970-01-01
        • 2019-04-28
        • 1970-01-01
        • 1970-01-01
        • 2022-06-10
        相关资源
        最近更新 更多