首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python将np 4D数组重塑为2D数组。Kaggle图像数据

Python将np 4D数组重塑为2D数组。Kaggle图像数据
EN

Stack Overflow用户
提问于 2018-08-02 15:47:53
回答 2查看 636关注 0票数 2

我正在尝试将一个4D数组转换为2D数组,以便使用sklearn SVM模型,但当我尝试使用模型中的数据时,它给我带来了问题。因此,我将数据拆分为训练数据和测试数据,然后将其转换为np数组,如下所示。

代码语言:javascript
复制
#Train data
npXt = np.array(x_train)
npYt = np.array(y_train)
#Eval test data
npXT = np.array(x_test)
npYT = np.array(y_test)

然后我这样看它的形状

代码语言:javascript
复制
npXt.shape

这就给了我这个

代码语言:javascript
复制
(28709, 48, 48, 1)

我试着通过这样做来改变它;

代码语言:javascript
复制
npXt.transpose((28709, 48, 48, 1)).reshape(np.prod(npXt.shape[:2]),-1)

但是给出了这个错误。

代码语言:javascript
复制
AxisError                                 Traceback (most recent call last)
<ipython-input-8-2682876229f4> in <module>()
----> 1 npXt.transpose((28709, 48, 48, 1)).reshape(np.prod(npXt.shape[:2]),-1)

AxisError: axis 28709 is out of bounds for array of dimension 4

我在这里做错了什么?

感谢你在这方面的帮助

更新:谢谢你的所有建议:我试过了,出现了如下错误:

代码语言:javascript
复制
ValueError: bad input shape (28709, 7)

下面是我为达到这个目的所做的修复。我认为的问题是,我目前没有对数组进行重塑。所以我像这样下载数据,这样就可以很好地工作:

代码语言:javascript
复制
x_train, y_train, x_test, y_test = aiu.getKaggleData(file,numClass)

结果如下所示:

代码语言:javascript
复制
Creating Testing and Training datasets
Filling datasets
Transforming data to fit model's needs
Normalizing traing/testing datasets
Reshaping data
28709 train samples
3589 test samples

我希望这个和这个在我构建的另一个模型中工作。接下来,我像这样构建SVM模型:

代码语言:javascript
复制
clf = SVC(C=0.01, kernel='linear', decision_function_shape='ovo', probability=True) 

然后将训练和测试数据转换为np数组,如下所示

代码语言:javascript
复制
#Train data
npXt = np.array(x_train)
npYt = np.array(y_train)
#Eval test data
npXT = np.array(x_test)
npYT = np.array(y_test)

然后使用所建议的内容

代码语言:javascript
复制
my_array = np.ones((28709, 48, 48, 1))
newXTrain = np.transpose( my_array ).reshape(np.prod(npXt.shape[:2]),-1)
print(newXTrain.shape)
print(npYt.shape)

这给了我这样的结论:

代码语言:javascript
复制
(1378032, 48) #for data
(28709, 7)    #for lables

然后我试着像这样训练模型

代码语言:javascript
复制
clf.fit(newXTrain,npYt)

这就给了我这个

代码语言:javascript
复制
 raise ValueError("bad input shape {0}".format(shape))
 ValueError: bad input shape (28709, 7)

感谢你到目前为止的所有帮助

我甚至尝试过这样做,但仍然给出一个错误:

代码语言:javascript
复制
newXTrain = np.transpose( my_array ).reshape(np.prod(npXt.shape[:1]),-1)

这给了我一个看起来很有希望的东西。

代码语言:javascript
复制
(28709, 2304)
(28709, 7)

但给出了与ValueError: bad input shape (28709, 7)相同的错误

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51648253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档