首页 > 解决方案 > 错误:找到暗淡 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)

标签: machine-learningartificial-intelligence

解决方案


你得到的错误是由这一行引起的:

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 数据集或查找一些教程以更好地了解我的意思。


推荐阅读