【问题标题】:How to split training and test sets?如何拆分训练集和测试集?
【发布时间】:2018-05-30 09:57:27
【问题描述】:

我们应该在哪里使用

X_train,X_test,y_train,y_test= train_test_split(data, test_size=0.3, random_state=42)

我们应该在哪里使用

train, test= train_test_split(data, test_size=0.3, random_state=0). 

前一个返回这个:

值错误:没有足够的值来解包(预期 4,得到 2)

【问题讨论】:

    标签: python split


    【解决方案1】:

    如果要拆分具有特征 (X) 和标签 (y) 的实例,则使用的第一种形式。如果您只想拆分特征 (X),则使用第二种形式。

    X_train, X_test, y_train, y_test= train_test_split(data, y, test_size=0.3, random_state=42)
    

    它对您不起作用的原因是您没有在 train_test_split() 函数中提供标签数据。以上应该可以正常工作。只需将y 替换为您的标签/目标数据即可。

    【讨论】:

      【解决方案2】:

      如果你有 1 个数据列表,它会拆分为 2 个,

                                   |---data_train
      data ----train_test_split()--|
                                   |---data_test
      

      如果你有 2 个数据列表,它会将数据列表的 EACH 拆分为 2 个,即总共 4 个。

                                             |---data_train_x
                                             |---data_train_y
      data_x, data_y ----train_test_split()--|
                                             |---data_test_x
                                             |---data_test_y
      

      n数据列表。

      【讨论】:

        【解决方案3】:

        train_test_split 方法可以根据需要接受尽可能多的数组作为参数。

        但是,由于您需要 四个 返回值,因此您必须将 2 数组作为 参数 传递。

        X_train, X_test, y_train, y_test= train_test_split(data, y_data, test_size=0.3, random_state=42)
        

        如果您需要传递许多数组,您可以使用 扩展可迭代解包 运算符。

        train_test_split(*arrays, test_size = test_size, random_state = 0)
        

        【讨论】: