我正在使用2个单独的数据集,一个用于训练,另一个用于测试

import numpy as np
import pandas as pd
import matplotlib.pyplot as pt
from sklearn.tree import DecisionTreeClassifier

data = pd.read_csv("train.csv").as_matrix()
data2 = pd.read_csv("test.csv").as_matrix()
clf = DecisionTreeClassifier()
# Dataset for training

train_data = data[0:41999,1:]
train_label = data[0:41999,0]

clf.fit(train_data,train_label)

# Dataset for Testing

test_data = data2[0:27999,1:]
actual_lable = data2[0:27999,0]
index = 5

sample = test_data[5]

sample.shape=(28,28)
pt.imshow(255-sample,cmap='gray')

print(clf.predict([test_data[5]]))
pt.show()


我在第35行出现以下错误:

sample.shape=(28,28)


我收到以下错误:

ValueError: cannot reshape array of size 783 into shape (28,28)


但是,如果我使用来自train_data的值,那么就没有错误

而不是使用

sample = test_data[5]


如果我用

sample = train_data[5]


我没有任何错误。您能否解释一下以上代码为什么会出错?


项目清单

最佳答案

28 * 28 = 784,分割后的测试数据只有783个值,这就是为什么它会在整形过程中引起错误。

您将必须打开测试文件,并确切查看其中有多少列。如果只有784列,则应该执行以下操作:

test_data = data2[0:27999,:]


并且true_label可能存储在其他位置。

07-24 09:52