为了账号安全,请及时绑定邮箱和手机立即绑定

如何将目录中的一组图像输入python以用作训练集?

如何将目录中的一组图像输入python以用作训练集?

繁星点点滴滴 2021-05-13 10:42:39
我已经能够提取URL数据集和链接以用作训练/测试数据集,但是我想将其扩展为图像。基本上,如果我有150张猫的图像,如何输入该图像并进行分类?使用IRIS数据集从URL提取的当前代码import pandasfrom pandas.plotting import scatter_matriximport matplotlib.pyplot as pltfrom sklearn import model_selectionfrom sklearn.metrics import classification_reportfrom sklearn.metrics import confusion_matrixfrom sklearn.metrics import accuracy_scorefrom sklearn.neighbors import KNeighborsClassifierurl = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"names = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class']dataset = pandas.read_csv(url, names=names)print(dataset.shape)print(dataset.head(20))print(dataset.loc[1])print(dataset.describe())print(dataset.loc[1][0])plt.show()dataset.hist()plt.show()scatter_matrix(dataset)plt.show()array = dataset.valuesX = array[:,0:4]Y = array[:,4]validation_size = 0.20seed = 7X_train, X_validation, Y_train, Y_validation = model_selection.train_test_split(X, Y, test_size=validation_size, random_state=seed)seed = 7scoring = 'accuracy'models = []models.append(('KNN', KNeighborsClassifier()))# evaluate each model in turnresults = []names = []for name, model in models:    kfold = model_selection.KFold(n_splits=10, random_state=seed)    cv_results = model_selection.cross_val_score(model, X_train, Y_train, cv=kfold, scoring=scoring)    results.append(cv_results)    names.append(name)    msg = "%s: %f (%f)" % (name, cv_results.mean(), cv_results.std())    print(msg)fig = plt.figure()fig.suptitle('Algorithm Comparison')ax = fig.add_subplot(111)plt.boxplot(results)ax.set_xticklabels(names)plt.show()knn = KNeighborsClassifier()knn.fit(X_train, Y_train)predictions = knn.predict(X_validation)print(accuracy_score(Y_validation, predictions))print(confusion_matrix(Y_validation, predictions))print(classification_report(Y_validation, predictions))
查看完整描述

2 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

您可以使用选择的库读取具有顺序文件名的图像


import skimage as ski

filenames = ['image-%03d.jpg'%n for n in range(150)]

images = []

for f in filenames:

    im = ski.imread(f)

    images.append(im)

然后images是图像列表。


您还可以遍历任何类型的文件名,或使用该os模块仅从具有特定扩展名的目录中提取文件。原理是一样的。只是filenames根据需要构造。


但是,我建议使用pims,可能与处理管道一起使用


import pims

import numpy as np

images = pims.ImageSequence('images-*.jpg')


@pims.pipeline

def grayarr(im):

    return np.array(im)[:,:,0]


images = grayarr(images)

在这一点上,您可以images使用类似numpy的切片进行索引。pims当您处理太多无法将其保存在RAM中的图像时,此功能特别有用。您可以在pims文档中阅读有关这些内容的信息。


查看完整回答
反对 回复 2021-05-25
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

您可以使用Glob并从目录中提取数据


from PIL import Image

import glob

list_of_images = []


for filename in glob.glob('file_directory/.jpg'): #assuming you are dealing with #jpg

    training_set = Image.open(filename)

    list_of_images.append(training_set)


查看完整回答
反对 回复 2021-05-25
  • 2 回答
  • 0 关注
  • 225 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号