我有一个文件夹,其中包含不同尺寸的JPG映像,我想从中生成火车和通过sklearn.model_selection.train_testrongplit()的swime and test集。
到目前为止,这是我的代码:
helper = list()
y = list()
for path, subdirs, files in os.walk(inputDir):
for s in subdirs:
y.append(s)
for f in files:
img_path = os.path.join(path,f)
pixels = Image.open(img_path).getdata()
helper.append(pixels)
x = np.asarray(helper)
x_train, x_test, y_train, y_test = train_test_split(x,y) #error occurs here
我收到以下错误消息:
文件" gettraintestset.py",第57行,在getTraintestset中 x_train,x_test,y_train,y_test = train_testrongplit(x,y)
文件"/usr/local/lib/python2.7/dist-packages/sklearn/model_selection/_split.py",第1689行,在trib_testrongplit中 数组=索引(*数组)
文件"/usr/local/lib/python2.7/dist-packages/sklearn/utils/validation.py",第206行,在可索引中 check_consistent_length(*结果)
文件"/usr/local/lib/python2.7/dist-packages/sklearn/utils/validation.py",第181行,在check_consistent_length "样品:%r"%[int(l)长度])
ValueError:发现的输入变量,示例数不一致:[120,0]
请帮助我解决此问题。
预先感谢!
编辑:我以一种不会与train_testrongplit()函数混乱的方式弄清楚了如何进行操作:
y = list()
helpers = list()
for path, subdirs, files in os.walk(inputDir):
for s in subdirs:
files = glob.glob(inputDir+ s + '/*.jpg')
helpers.append(np.array([np.array(Image.open(f)) for f in files]))
y.append(s)
x = np.array([np.array(h) for h in helpers])
x_train, x_test, y_train, y_test = train_test_split(x,y)
我相信问题是len(y)
和x.shape[0]
必须相等。我的最终X具有形状(4,),因为我有4个子目录,总共有图像文件。
感谢大家的输入!
x
应该是大小的二维数组[no_of_samples,no_of_features]。这样做:
x = np.atleast_2d(x).T