错误:找到具有暗淡3的数组。估计量应小于等于2。MLPClassifier

时间:2018-07-09 11:50:06

标签: machine-learning artificial-intelligence

尝试使用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)

1 个答案:

答案 0 :(得分:0)

您收到的错误是由以下行引起的:

x =[(np.random.randn(36).reshape(12,3)).tolist()]

您在这里创建了一个包含12行3列的数组,可以很好地用作分类器的功能,然后使用tolist()将其转换为12个列表,每个列表包含3个项目,这是没有必要的。然后,您将得到一个列表理解[],当您真正需要的是一个像最初由reshape()创建的12x3数组对象时,它将创建一个包含3个项目的12个列表的列表。

改为使用以下行,该错误将消失:

x = np.random.randn(36).reshape(12,3)

我要补充一点,您正在使用一个非常小的训练集,这两个班都是从同一分布中随机产生的。这将导致无法很好地分离,因为它们本质上是相同的数据,它们随机分为malefemale的两个任意类别。

相反,如果要创建自己的数据集,则应该随机抽样两个不同的分布(均值和标准差),并使用更大的样本量进行培训和测试。我建议尝试一些sklearn datasets或查阅一些教程,以更好地理解我的意思。