【问题标题】: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 的实际代码。

标签: python-2.7 scikit-learn


【解决方案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。
猜你喜欢
  • 2013-09-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-27
  • 2018-10-10
  • 2021-12-13
  • 2019-02-20
  • 2020-03-27
  • 2018-12-12
相关资源
最近更新 更多