“TypeError:'StratifiedShuffleSplit'对象不可迭代”的原因可能是啥?

Posted

技术标签:

【中文标题】“TypeError:\'StratifiedShuffleSplit\'对象不可迭代”的原因可能是啥?【英文标题】:What could be the reason for "TypeError: 'StratifiedShuffleSplit' object is not iterable"?“TypeError:'StratifiedShuffleSplit'对象不可迭代”的原因可能是什么? 【发布时间】:2019-05-22 18:27:24 【问题描述】:

我必须交付一个机器学习项目,我收到了一个名为 tester.py 的文件。在另一个文件中编写完代码后,我必须运行 tester.py 才能查看结果,但出现错误:TypeError: 'StratifiedShuffleSplit' object is not iterable

我在另一个主题和网站上研究过这个错误,解决方法总是一样的:使用 sklearn.model_selection 导入 GridSearchCV。从一开始我就已经这样做了,但是文件 tester.py 没有运行。

tester.py 中出现问题的部分代码是:

def main():
    ### load up student's classifier, dataset, and feature_list
    clf, dataset, feature_list = load_classifier_and_data()
    ### Run testing script
    test_classifier(clf, dataset, feature_list)

if __name__ == '__main__':
    main()

我自己的代码运行良好。

有什么帮助吗?

【问题讨论】:

显示完整的堆栈跟踪和使用 StratifiedShuffleSplit 的实际代码。 【参考方案1】:

尝试更改 tester.py 的以下行 当前版本的 StratifiedShuffleSplit 的工作方式与开发 tester.py 时的预期不同。

[..]
from sklearn.model_selection import StratifiedShuffleSplit
[..]
#cv = StratifiedShuffleSplit(labels, folds, random_state = 42)
cv = StratifiedShuffleSplit(n_splits=folds, random_state=42)
[..]
#for train_idx, test_idx in cv:
for train_idx, test_idx in cv.split(features, labels):
[..]

希望对你有用

【讨论】:

只是想说这是适用于 Python 3 的 Udacity ML 项目的最佳解决方案。我遇到了同样的问题,我可以确认这在 19 年 2 月仍然有效。谢谢,耶稣! 我验证了建议的解决方案适用于 Python 2.7.17。

以上是关于“TypeError:'StratifiedShuffleSplit'对象不可迭代”的原因可能是啥?的主要内容,如果未能解决你的问题,请参考以下文章