尝试使用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)
答案 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)
我要补充一点,您正在使用一个非常小的训练集,这两个班都是从同一分布中随机产生的。这将导致无法很好地分离,因为它们本质上是相同的数据,它们随机分为male
和female
的两个任意类别。
相反,如果要创建自己的数据集,则应该随机抽样两个不同的分布(均值和标准差),并使用更大的样本量进行培训和测试。我建议尝试一些sklearn datasets或查阅一些教程,以更好地理解我的意思。