machine-learning - 错误:找到暗淡 3 的数组。预计估计器 <= 2。MLPClassifier
问题描述
尝试使用 MLPClassifier。我在做正确的事吗?
下面是我的代码:
早些时候我写道:
x =[[181,80,44],[177,70,43],[160,60,30],[154,54,37],
[166,65,40],[190,90,47],[175,64,39],[177,60,43],
[171,57,44],[191,85,42],[165,55,40]]
但我试图减少我的代码如下:
x =[(np.random.randn(36).reshape(12,3)).tolist()]
y= ['male','female','female','female','female','male',
'male','female','male','female','male','female']
clf = MLPClassifier()
clf = clf.fit(x,y)
prediction = clf.predict([[0,0,0]])
print(prediction)
解决方案
你得到的错误是由这一行引起的:
x =[(np.random.randn(36).reshape(12,3)).tolist()]
在这里,您创建了一个包含 12 行和 3 列的数组,它可以用作分类器的特征,然后使用 将其转换为 3 个项目的 12 个列表tolist()
,这不是必需的。然后你有一个列表理解[]
,它创建一个包含 12 个列表的列表,每个列表包含 3 个项目,而你真正需要的只是一个 12x3 数组对象,就像你最初用reshape()
.
请改用以下行,该错误将消失:
x = np.random.randn(36).reshape(12,3)
我要补充一点,您使用的训练集非常小,两个类都是从同一分布中随机生成的。这将不允许很好的分离,因为它们本质上是相同的数据,在 和 的两个任意分类之间随机male
拆分female
。
如果您要创建自己的数据集,则应改为随机抽样两个不同的分布(不同的均值和标准差)并使用更高的样本量进行训练和测试。我建议尝试一些sklearn 数据集或查找一些教程以更好地了解我的意思。
推荐阅读
- bash - 根据 bash 中的计数变量构造命令
- qt - qml 中的日历(DaysofWeek)
- haskell - 如何跨模式匹配执行 where 子句
- java - 初始化数组列表时出现Java nullpointerException
- google-sheets - 左侧 Google 工作表上的修剪空间
- json - 由于大量文件中的无效字符,mongoimport 失败,可能是字符编码问题
- excel - VBA:我的条件 ElseIf 与 <= 运算符在预期时没有返回 true
- python - QGIS 3.12.3 - 启动 Python 错误:无法加载 SIP 模块
- node.js - 在 NodeJs 中处理缓慢的请求
- python - 如何调整误差线的水平线?