TypeError:参数值不可迭代或分布

Posted

技术标签:

【中文标题】TypeError:参数值不可迭代或分布【英文标题】:TypeError: Parameter value is not iterable or distribution 【发布时间】:2020-10-23 05:55:06 【问题描述】:

我是 Python 新手,想实现一个简单的矩阵分解分类器。

正如我在另一篇文章中所读到的,有一些可以使用的可能性,我选择了sklearn decomposition.NMF:https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.NMF.html

不幸的是,我收到以下错误:

TypeError: Parameter value is not iterable or distribution (key='n_components', value=2)

我正在尝试这个:

self.clf = decomposition.NMF()                
    self.random_parameters = [
    "n_components": 2, "init": None, "solver": 'cd', "beta_loss": 'frobenius', "tol": 0.0001, "max_iter": 200,"random_state": None, "alpha": 0.0, "l1_ratio": 0.0, "verbose": 0, "shuffle": False
]

有趣的是,我之前从Sklearn 实现了RandomForestClassifier,效果很好:

self.clf = ensemble.RandomForestClassifier()    
self.random_parameters = [
    "n_estimators": stats.randint(20, 200), "criterion": ["gini"], "max_depth": stats.randint(1, 1500),
    "n_estimators": stats.randint(20, 200), "criterion": ["gini"], "max_depth": [None]]

我也从 sklearn 网站获得了这个:https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html

我已经在谷歌上搜索了几个小时,但很遗憾找不到合适的解决方案。

如果有人可以提供帮助,我将不胜感激!祝您身体健康!

【问题讨论】:

重新格式化的代码块和一些语法、缩进和换行,使帖子更易于阅读和理解。 【参考方案1】:

试试这个:

“n_components”:[2]

【讨论】:

请阅读***.com/help/how-to-answer并编辑您的qnswer【参考方案2】:

对于n_estimators,尝试传递一个变量列表,我认为它会起作用!

self.clf = ensemble.RandomForestClassifier() self.random_parameters = [ "n_estimators": [20,50,100,200], "criterion": ["gini"], "max_depth": stats.randint(1, 1500), "n_estimators": [20,50,100,200], "criterion": ["gini"], "max_depth": [None]]

【讨论】:

以上是关于TypeError:参数值不可迭代或分布的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:“PosixPath”类型的参数不可迭代

连接到 SQL 服务器时,Python pymssql 错误“TypeError:'NoneType' 类型的参数不可迭代”

为啥在带有字符串和 NaN 的系列上得到“TypeError:'float' 类型的参数不可迭代”?

Django TypeError:“PosixPath”类型的参数不可迭代

TypeError:“KFold”对象不可迭代

TypeError:'float' 对象在内置 max 函数的列表中不可迭代