代码之家  ›  专栏  ›  技术社区  ›  alwayscurious

扩展元组有vs无循环

  •  0
  • alwayscurious  · 技术社区  · 7 年前

    我在做一个练习 实际操作机器学习 预订人 奥雷连杰隆 .

    假定 data 是一个数据帧:

    income_cat  index
    0         5.0      0
    1         5.0      1
    2         5.0      2
    3         5.0      3
    4         5.0      4
    
    from sklearn.model_selection import StratifiedShuffleSplit
    split = StratifiedShuffleSplit(n_splits=1, test_size=0.2, random_state=42)
    

    选项A(从书中):

    for test_indices, train_indices in split.split(data, data.income_cat):
        print(test_indices, train_indices)
    

    选项B:

     test_indices, train_indices = split.split(data, data.income_cat)
     print(test_indices, train_indices)    
    

    为什么选项B不起作用? 这是一个python问题,而不是sklearn问题。

    一个元组应该同时扩展有循环或没有循环,我能缺少什么? 选项A和B之间的唯一区别是for循环。

    选项A的输出:

    [4 2 1 0] [3]
    

    选项B的输出:

    ValueError: not enough values to unpack (expected 2, got 1)
    
    0 回复  |  直到 7 年前
        1
  •  2
  •   sophros    7 年前

    StratifiedShuffleSplit.split 返回 generator 不是单子。在 for __next__ 方法,并返回序列的下一个元素(该生成器最终生成)。此返回的元素将解压为两个变量: test_indices, train_indices .

    __下一个__ next() :

     test_indices, train_indices = next(split.split(data, data.income_cat))