簡體   English   中英

嘗試使用朴素貝葉斯對 3D 圖像進行分類時出錯

[英]Error trying to classify 3D images using Naive Bayes

我已經制作了一個卷積神經網絡算法來對圖像進行分類,現在我想制作一個朴素貝葉斯算法進行比較。 我的圖像是 3D,我認為這是我遇到錯誤的原因。

錯誤:

raise ValueError("bad input shape {0}".format(shape))
ValueError: bad input shape (1776, 3)

我的代碼:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
import numpy as np

much_data = np.load('muchdata-50-50-30-normalizado.npy', allow_pickle=True)
X = [data[0] for data in much_data]
y = [data[1] for data in much_data]

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
gnb = GaussianNB()
y_pred = gnb.fit(X_train, y_train).predict(X_test)
print("Number of mislabeled points out of a total %d points : %d" % (X_test.shape[0], (y_test != y_pred).sum()))

我的 X[0] 格式如下:

  [[[0. 0. 0. ... 0. 0. 0.]
  [0. 0. 0. ... 0. 0. 0.]
  [0. 0. 0. ... 0. 0. 0.]
  ...
  [0. 0. 0. ... 0. 0. 0.]
  [0. 0. 0. ... 0. 0. 0.]
  [0. 0. 0. ... 0. 0. 0.]]
  ...
  [[0. 0. 0. ... 0. 0. 0.]
  [0. 0. 0. ... 0. 0. 0.]
  [0. 0. 0. ... 0. 0. 0.]
  ...
  [0. 0. 0. ... 0. 0. 0.]
  [0. 0. 0. ... 0. 0. 0.]
  [0. 0. 0. ... 0. 0. 0.]]]

我的 y[0]:

[0 1 0]

如果有人可以幫助我了解我做錯了什么,那將非常有幫助!

太感謝了!

通過查看您的y[0] ,您似乎有 3 個單熱編碼格式的類。 sklearn的機器學習算法通常不接受 one-hot 編碼格式的目標值。 此外,model 的輸入 (X) 應具有(no_samples, no_features)的形狀。 因此,您必須展平 3D 圖像。

  1. 去掉目標 (y) 中的 one-hot encodings 並獲得(no_samples,)格式的一維數組。 您可以通過將 3 個類定義為123來實現這一點。
  2. 將圖像展平。 您可以使用X = [data[0].flatten() for data in much_data]執行此操作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM