【问题标题】:Error: Found array with dim 3. Estimator expected <= 2. MLPClassifier错误:找到暗淡 3 的数组。预计估计器 <= 2。MLPClassifier
【发布时间】:2018-07-09 21:07:33
【问题描述】:

尝试使用 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-learning artificial-intelligence


    【解决方案1】:

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

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

    在这里,您创建了一个包含 12 行和 3 列的数组,它可以用作分类器的特征,然后您使用 tolist() 将其转换为一组 12 个包含 3 个项目的列表,即不必要。然后你有一个列表理解 [] 围绕它创建一个包含 12 个列表的列表,每个列表包含 3 个项目,而你真正需要的只是一个 12x3 数组对象,就像你最初使用 reshape() 创建的那样。

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2016-04-24
      • 2019-06-01
      • 2018-01-16
      • 2020-07-10
      • 2016-11-28
      • 2021-04-16
      • 2019-07-19
      • 2020-10-04
      • 2018-07-13
      相关资源
      最近更新 更多