gpt4 book ai didi

Python 将 np 4D 数组 reshape 为 2D 数组。 Kaggle图像数据

转载 作者:行者123 更新时间:2023-11-28 22:17:04 26 4
gpt4 key购买 nike

我正在尝试将 4 维数组转换为 2 维数组以使用 sklearn SVM 模型,但是当我尝试使用模型中的数据时它给我带来了问题。所以我将数据拆分为训练数据和测试数据,然后像这样将其转换为 np 数组。

#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)

然后我就这样看形状

npXt.shape

这给了我这个,

(28709, 48, 48, 1)

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

npXt.transpose((28709, 48, 48, 1)).reshape(np.prod(npXt.shape[:2]),-1)

但是给出了这个错误。

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

我在这里做错了什么?

感谢您对此的任何帮助

更新:感谢您的所有建议:我试过了,有这样的错误:

ValueError: bad input shape (28709, 7)

所以这就是我要解决的问题。我认为问题在于我目前没有 reshape 阵列。所以我像这样下载数据并且工作正常:

x_train, y_train, x_test, y_test = aiu.getKaggleData(file,numClass)

结果如下:

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 模型:

clf = SVC(C=0.01, kernel='linear', decision_function_shape='ovo', probability=True) 

然后像这样把train和test数据转换成np数组

#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)

然后使用建议的内容

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)

这给了我这个:

(1378032, 48) #for data
(28709, 7) #for lables

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

clf.fit(newXTrain,npYt)

这给了我这个

 raise ValueError("bad input shape {0}".format(shape))
ValueError: bad input shape (28709, 7)

感谢您迄今为止的所有帮助

我什至试过了,但仍然报错:

newXTrain = np.transpose( my_array ).reshape(np.prod(npXt.shape[:1]),-1)

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

(28709, 2304)
(28709, 7)

但给出了与 ValueError: bad input shape (28709, 7)

相同的错误

最佳答案

我不明白你为什么在 reshape 之前转置数组但是,您使用的转置方式错误。

应该是:

my_array = np.ones((28709, 48, 48, 1))
np.transpose( my_array ).reshape(np.prod(npXt.shape[:2]),-1)

如果您将元组传递给转置函数,它会将其解释为矩阵轴索引的新顺序。因此转置轴号 28709 在这里没有意义。

如果你想 reshape 你可能根本不需要转置

关于Python 将 np 4D 数组 reshape 为 2D 数组。 Kaggle图像数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51648253/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com