回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我试图将4D数组转换为2D数组以使用sklearn SVM模型,但当我尝试使用模型中的数据时,它给了我一些问题。
所以我把数据分成训练和测试数据,然后把它转换成一个np数组。在</p>
<pre><code>#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)
</code></pre>
<p>然后我看着这个形状</p>
^{pr2}$
<p>这给了我这个</p>
<pre><code>(28709, 48, 48, 1)
</code></pre>
<p>我试图通过这样做来改变它</p>
<pre><code>npXt.transpose((28709, 48, 48, 1)).reshape(np.prod(npXt.shape[:2]),-1)
</code></pre>
<p>但给出了这个错误。在</p>
<pre><code>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
</code></pre>
<p>我做错什么了?在</p>
<p>谢谢你的帮助</p>
<p><strong>更新:</strong>
感谢您的所有建议:
我试过了,结果出现了这样一个错误:</p>
<pre><code>ValueError: bad input shape (28709, 7)
</code></pre>
<p>所以这就是我要解决的问题。我认为问题是我目前没有重新构造数组。
所以我像这样下载数据,这样很好:</p>
<pre><code>x_train, y_train, x_test, y_test = aiu.getKaggleData(file,numClass)
</code></pre>
<p>结果是:</p>
<pre><code>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
</code></pre>
<p>我希望这个和这个和我建立的另一个模型一起工作。
接下来,我构建如下SVM模型:</p>
<pre><code>clf = SVC(C=0.01, kernel='linear', decision_function_shape='ovo', probability=True)
</code></pre>
<p>然后将训练和测试数据转换成np数组,如下所示</p>
<pre><code>#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)
</code></pre>
<p>然后使用建议的方法</p>
<pre><code>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)
</code></pre>
<p>这给了我这样一个结论:</p>
<pre><code>(1378032, 48) #for data
(28709, 7) #for lables
</code></pre>
<p>然后我试着像这样训练模特</p>
<pre><code>clf.fit(newXTrain,npYt)
</code></pre>
<p>这给了我这个</p>
<pre><code> raise ValueError("bad input shape {0}".format(shape))
ValueError: bad input shape (28709, 7)
</code></pre>
<p>谢谢你到目前为止的帮助</p>
<p>但我还是犯了个错误:</p>
<pre><code>newXTrain = np.transpose( my_array ).reshape(np.prod(npXt.shape[:1]),-1)
</code></pre>
<p>这让我看起来很有希望。在</p>
<pre><code>(28709, 2304)
(28709, 7)
</code></pre>
<p>但给出了与<code>ValueError: bad input shape (28709, 7)</code>相同的错误</p>