ValueError:查询数据维度必须与培训数据维度匹配-Python SciPy ValueError
我试图让计算机根据玩家在之前的尝试中选择的内容预先猜测玩家将选择什么:ValueError:查询数据维度必须与培训数据维度匹配-Python SciPy ValueError,python,python-3.x,tensorflow,scikit-learn,Python,Python 3.x,Tensorflow,Scikit Learn,我试图让计算机根据玩家在之前的尝试中选择的内容预先猜测玩家将选择什么: import random from sklearn.datasets import load_iris from sklearn.neighbors import KNeighborsClassifier import numpy as np from sklearn.model_selection import train_test_split iris_dataset=load_iris() while Tr
import random
from sklearn.datasets import load_iris
from sklearn.neighbors import KNeighborsClassifier
import numpy as np
from sklearn.model_selection import train_test_split
iris_dataset=load_iris()
while True:
print()
print("Do you choose rock, paper or scissors?")
guessArray = []
resultArray = []
guess = str(input())
guess = guess.lower()
guessNum = 0
if guess == 'rock':
guessArray.append(1)
elif guess == 'paper':
guessArray.append(2)
elif guess == 'scissors':
guessArray.append(3)
else:
guessArray.append(4)
if guess == 'rock':
guessNum = 1
elif guess == 'paper':
guessNum = 2
elif guess == 'scissors':
guessNum = 3
else:
guessNum = 4
choices = ['rock', 'paper', 'scissors']
print('You guessed', guess)
X_train, X_test, y_train, y_test = train_test_split(iris_dataset["data"], iris_dataset["target"], random_state=0)
kn = KNeighborsClassifier(n_neighbors=1)
kn.fit(X_train, y_train)
x_new = np.array([guessArray])
prediction = kn.predict(x_new)
computer_guess = format(prediction)
print('Computer guess', computer_guess)
if guess in choices:
if guessNum == computer_guess:
result = 'Tie'
elif guessNum == 1:
if computer_guess == 3:
result = 'Win'
elif computer_guess == 2:
result = 'Loose'
elif guess == 2:
if computer_guess == 2:
result = 'Loose'
elif computer_guess == 1:
result = 'Win'
elif guess == 3:
if computer_guess == 2:
result = 'Win'
elif computer_guess == 1:
result = 'Loose'
else:
result = 'Invalid'
resultArray.append(result)
#Print result
#print("Predicted target value: {}\n".format(prediction))
#print("Predicted feature name: {}\n".format
# (iris_dataset["target_names"][prediction]))
#print("Test score: {:.2f}".format(kn.score(X_test, y_test))
代码运行良好,甚至可以打印所有内容,直到行“prediction=kn.predict(x_new)”出现,然后所有内容都乱了套。我发现我需要以某种方式重塑x#u这个新变量,但因为我今天才开始用python编程,除了.net和c#的基本功能外,我从未使用过任何其他机器学习
回溯(最近一次呼叫最后一次):
文件“rockpaperscissors.py”,第40行,在
预测=千牛预测(x_新)
文件“C:\Users\user\AppData\Local\Programs\Python37-32\lib\site packages\sklearn\neights\classification.py”,第149行,在predict中
neigh_dist,neigh_ind=self.kneighbors(X)
文件“C:\Users\viktor.landstrom.LEARNET\AppData\Local\Programs\Python\Python37-32\lib\site packages\sklearn\neighbors\base.py”,第454行,在kneighbors中
对于gen_偶数_切片中的s(X.shape[0],n_作业)
文件“C:\Users\user\AppData\Local\Programs\Python37-32\lib\site packages\joblib\parallel.py”,第1003行,在调用中__
如果self.dispatch\u一批(迭代器):
文件“C:\Users\user\AppData\Local\Programs\Python37-32\lib\site packages\joblib\parallel.py”,第834行,以批处理方式发送
自我分配(任务)
文件“C:\Users\user\AppData\Local\Programs\Python37-32\lib\site packages\joblib\parallel.py”,第753行,在调度中
作业=self.\u后端.apply\u异步(批处理,回调=cb)
文件“C:\Users\user\AppData\Local\Programs\Python37-32\lib\site packages\joblib\\u parallel\u backends.py”,第201行,在apply\u async中
结果=立即结果(func)
文件“C:\Users\user\AppData\Local\Programs\Python37-32\lib\site packages\joblib\\u parallel\u backends.py”,第582行,在初始化中__
self.results=batch()
文件“C:\Users\user\AppData\Local\Programs\Python37-32\lib\site packages\joblib\parallel.py”,第256行,在调用中__
对于self.items中的func、args、kwargs]
文件“C:\Users\user\AppData\Local\Programs\Python37-32\lib\site packages\joblib\parallel.py”,第256行,在
对于self.items中的func、args、kwargs]
文件“C:\Users\user\AppData\Local\Programs\Python\Python37-32\lib\site packages\sklearn\neights\base.py”,第291行,位于树\u query\u parallel\u helper中
返回树。查询(数据、n\u邻居、返回距离)
文件“sklearn\neights\binary_tree.pxi”,第1317行,位于sklearn.neights.kd_tree.BinaryTree.query中
ValueError:查询数据维度必须与培训数据维度匹配
请注意,代码中有您的全名。至于你的错误:据我所知,x_new的值是空的。@sander那么我能做些什么来将x_new从空变为空?你能打印x_train
和x_new
的形状并在这里分享吗<代码>打印(X_train.shape)应该有效。打印(X_train.shape)(112,4)@RishabhSahrawat
Traceback (most recent call last):
File "rockpaperscissors.py", line 40, in <module>
prediction = kn.predict(x_new)
File "C:\Users\user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\sklearn\neighbors\classification.py", line 149, in predict
neigh_dist, neigh_ind = self.kneighbors(X)
File "C:\Users\viktor.landstrom.LEARNET\AppData\Local\Programs\Python\Python37-32\lib\site-packages\sklearn\neighbors\base.py", line 454, in kneighbors
for s in gen_even_slices(X.shape[0], n_jobs)
File "C:\Users\user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\joblib\parallel.py", line 1003, in __call__
if self.dispatch_one_batch(iterator):
File "C:\Users\user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\joblib\parallel.py", line 834, in dispatch_one_batch
self._dispatch(tasks)
File "C:\Users\user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\joblib\parallel.py", line 753, in _dispatch
job = self._backend.apply_async(batch, callback=cb)
File "C:\Users\user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\joblib\_parallel_backends.py", line 201, in apply_async
result = ImmediateResult(func)
File "C:\Users\user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\joblib\_parallel_backends.py", line 582, in __init__
self.results = batch()
File "C:\Users\user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\joblib\parallel.py", line 256, in __call__
for func, args, kwargs in self.items]
File "C:\Users\user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\joblib\parallel.py", line 256, in <listcomp>
for func, args, kwargs in self.items]
File "C:\Users\user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\sklearn\neighbors\base.py", line 291, in _tree_query_parallel_helper
return tree.query(data, n_neighbors, return_distance)
File "sklearn\neighbors\binary_tree.pxi", line 1317, in sklearn.neighbors.kd_tree.BinaryTree.query
ValueError: query data dimension must match training data dimension