![](/img/trans.png)
[英]SKlearn prediction on test dataset with different shape from training dataset shape
[英]Own dataset works with Sklearn SVM at training but not on prediction
我是 sklearn 的新手,我嘗試按照我在網上找到的示例在我的圖像上應用 SVM 分類器。 我通過制作一個類似的 Bunch 字典,用我自己的替換了來自 sklearn 的自定義數據集。 fit 方法有效,但預測無效(最后一行代碼print(clf.predict(dataset_images.data[-5]))
給出以下錯誤)
整個代碼
import pandas as pd
from sklearn import datasets
import numpy as np
from sklearn import svm
from sklearn.utils import Bunch
import cv2
DATABASE_PATH = "C://Users//Maria//Downloads//ees//CASIA-IrisV2"
csv_file = "generate_csv//generate_csv_correctly_detected.csv"
images_names = pd.read_csv(csv_file)
def getImagesAndLabels():
df = pd.read_csv(csv_file)
dataset_images = {"data": [], "target": []}
for index in range(len(df)):
img_path = DATABASE_PATH + "//" + images_names.iloc[index, 0]
img = cv2.imread(img_path)
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img = [list(part) for part in img]
flatten = lambda img: [item for sublist in img for item in sublist]
img = flatten(img)
dataset_images["data"].append(img)
dataset_images["target"].append(np.array(images_names.iloc[index, 1]))
dataset_images["data"] = np.array(dataset_images["data"])
dataset_images["target"] = np.array(dataset_images["target"])
dataset = Bunch(data = dataset_images["data"], target = dataset_images["target"])
return dataset
dataset_images = getImagesAndLabels()
digits = datasets.load_digits()
print(digits.data[:10])
print(digits.target[:10])
print("urm:")
print(dataset_images.data[:10])
print(dataset_images.target[:10])
clf = svm.SVC()
X, y = dataset_images.data[:-10], dataset_images.target[:-10]
clf.fit(X, y)
print(clf.predict(dataset_images.data[-5]))
predict
調用需要一個 2d 數組,因為這就是您傳遞訓練數據的方式。 要對單個樣本執行預測,您可以將predict
調用更改為:
clf.predict(dataset_images.data[-5].reshape(1,-1))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.