在python中为svm模型预处理图像

时间:2019-07-10 05:46:57

标签: python machine-learning svm

我是机器学习的初学者,我正在尝试使用python创建SVM图像分类器。 我有自己的图像数据集。我已完成以下步骤: 1)为每个类(二进制类)创建不同的文件夹 2)将所有图像导入到我的jupyter笔记本中。

现在,在创建可以输入到SVM模型中的适当数据集时遇到问题。 我试图将图像数组及其类添加到名为数据集的列表中。但是现在我无法将图像作为矢量展平。

请告诉我我的步骤是否正确? 如果正确,那我该怎么做才能正确地展平图像。

#path to the base dir
base_dir = "/home/khyati/projects/plant_project/try/dataset"

#path of various folders
apple_path = os.path.join(base_dir, "Apple___Apple_scab")
tomato_path = os.path.join(base_dir, "Tomato___Late_blight")

#list of available labels
classes = ["Apple___Apple_scab", "Tomato___Late_blight"]

dataset = []
for category in classes:
    path = os.path.join(base_dir, category)
    for img in os.listdir(path):
        #`enter code here`print(img)
        image = cv2.imread(os.path.join(path,img))
        label =classes.index(category)
        dataset.append([image,label])
print(dataset[1])

我希望这些数据采用可以输入分类模型的形式。

2 个答案:

答案 0 :(得分:0)

如果<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>JS Bin</title> </head> <body onresize="myFunction()"> <div class="header"> Header <div class="spinner-wrapper" id="spinner-wrapper"> <div class="spinner"></div> </div> </div> <div class="main"> <div class="content"> Content <div class="spinner-wrapper"> <div class="spinner"></div> </div> </div> <div class="side-menu"> Side menu <div class="spinner-wrapper" id="spinner-wrapper"> <div class="spinner"></div> </div> </div> </div> </body> </html>返回一个numpy数组,您可以使用cv2.imread(),或者(对于常规数据结构)itertools链也可以,请添加此import语句

image.ravel()

比你能做的

from itertools import chain

将图像作为平面列表或

dataset.append([list(chain(*image),label])

获得一个numpy数组

答案 1 :(得分:-1)

该站点详细说明了如何使用SVM的图像数据集。看一看 https://medium.com/@dataturks/understanding-svms-for-image-classification-cf4f01232700