我正在使用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]
我没有得到任何错误。你能解释为什么上面的代码会出错吗?
答案 0 :(得分:0)
28 * 28 = 784,对于分割后的测试数据,只有783个值,这就是它在重塑过程中导致错误的原因。
您必须打开测试文件并查看确切的列数。如果只有784列,那么你应该这样做:
test_data = data2[0:27999,:]
并且true_label可能存储在其他地方。