我正在使用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可能存储在其他位置。