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

我最近开始在 youtube 教程中学习 ML。根据教程中的内容,我决定改进并应用到一种猜谜游戏中。


游戏有多个场景和一些数字,玩家在进入下一阶段之前必须收集这些数字。所以我想将其应用于 ML 并尝试看看会发生什么。


在我的 CSV 文件中,我有 16 列(阶段和 1 到 15 个数字)和很多行。因此,为了预测最后阶段(1988 年)的数字是多少,我直接输入了“...预测([[1988]]))”并得到了


ValueError: Expected 2D array, got 1D array instead.

我知道在这种情况下几乎不可能预测,但我的主要目标是减少错误数量,看看 ML 能有多好地解决这个问题。


你们能告诉我我做错了什么以及哪里做错了吗?为了更好地解释,代码如下:


import pandas

from sklearn.tree import DecisionTreeClassifier



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']


model = DecisionTreeClassifier()

model.fit(game_stage, game_list)



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

predictions

先感谢您!


慕尼黑8549860
浏览 77回答 2
2回答

喵喔喔

game_stage在将变量传递给model.fit().如果您像这样修改代码,则不会收到错误消息:import pandasfrom sklearn.tree import DecisionTreeClassifierimport numpy as np# Read datagame_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 numpygame_stage = np.asarray(game_stage)# -1 means this dimension is inferred from the datagame_stage = game_stage.reshape(-1,1)# Train modelmodel = DecisionTreeClassifier()model.fit(game_stage, game_list)# Predictionpredictions = model.predict([[1988]])predictions

BIG阳

您只需为 predict 方法提供相同的二维数组,但要处理一个(或多个)值。简而言之,您可以更换[1988]和[[1988]]它应该有效。这个答案变得流行,所以我想我应该添加更多关于 ML 的解释。简短版本:我们只能对与训练数据 (X) 具有相同维度的数据使用预测。在所讨论的示例中,我们在 X 中为计算机提供了一堆行,并在 y 中向其显示了正确的响应。当我们想要使用新值进行预测时,我们的程序期望相同 - 一堆行。即使我们只想对一行执行此操作,该行也必须是另一个数组的一部分。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python