为了账号安全,请及时绑定邮箱和手机立即绑定

尝试预测数字时出错:预期的二维数组,得到的是一维数组

尝试预测数字时出错:预期的二维数组,得到的是一维数组

慕尼黑8549860 2023-03-08 17:20:36
我最近开始在 youtube 教程中学习 ML。根据教程中的内容,我决定改进并应用到一种猜谜游戏中。游戏有多个场景和一些数字,玩家在进入下一阶段之前必须收集这些数字。所以我想将其应用于 ML 并尝试看看会发生什么。在我的 CSV 文件中,我有 16 列(阶段和 1 到 15 个数字)和很多行。因此,为了预测最后阶段(1988 年)的数字是多少,我直接输入了“...预测([[1988]]))”并得到了ValueError: Expected 2D array, got 1D array instead.我知道在这种情况下几乎不可能预测,但我的主要目标是减少错误数量,看看 ML 能有多好地解决这个问题。你们能告诉我我做错了什么以及哪里做错了吗?为了更好地解释,代码如下:import pandasfrom sklearn.tree import DecisionTreeClassifiergame_data = pandas.read_csv('game_data2.csv')game_list = game_data.drop(columns=['n1', 'n2', 'n3', 'n4', 'n5',                                     'n6', 'n7', 'n8', 'n9', 'n10',                                      'n11', 'n12', 'n13', 'n14', 'n15'])game_stage = game_data['STAGE']model = DecisionTreeClassifier()model.fit(game_stage, game_list)predictions = model.predict([[1988]])predictions先感谢您!
查看完整描述

2 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

game_stage在将变量传递给model.fit().


如果您像这样修改代码,则不会收到错误消息:


import pandas

from sklearn.tree import DecisionTreeClassifier

import numpy as np


# Read data

game_data = pandas.read_csv('game_data2.csv')

game_list = game_data.drop(columns=['n1', 'n2', 'n3', 'n4', 'n5', 'n6', 'n7', 'n8', 'n9', 'n10', 'n11', 'n12', 'n13', 'n14', 'n15'])

game_stage = game_data['STAGE']


# Reshape into 2D array using numpy

game_stage = np.asarray(game_stage)

# -1 means this dimension is inferred from the data

game_stage = game_stage.reshape(-1,1)


# Train model

model = DecisionTreeClassifier()

model.fit(game_stage, game_list)


# Prediction

predictions = model.predict([[1988]])

predictions


查看完整回答
反对 回复 2023-03-08
?
BIG阳

TA贡献1859条经验 获得超6个赞

您只需为 predict 方法提供相同的二维数组,但要处理一个(或多个)值。简而言之,您可以更换

[1988]

[[1988]]

它应该有效。

这个答案变得流行,所以我想我应该添加更多关于 ML 的解释。简短版本:我们只能对与训练数据 (X) 具有相同维度的数据使用预测。

在所讨论的示例中,我们在 X 中为计算机提供了一堆行,并在 y 中向其显示了正确的响应。当我们想要使用新值进行预测时,我们的程序期望相同 - 一堆行。即使我们只想对一行执行此操作,该行也必须是另一个数组的一部分。


查看完整回答
反对 回复 2023-03-08
  • 2 回答
  • 0 关注
  • 75 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信