【问题标题】:Build the feature matrix and label vector:构建特征矩阵和标签向量:
【发布时间】:2018-05-05 15:22:03
【问题描述】:

我有一个数据集“数字”。该数据集包括 1797 个小图像(8x8 像素),每个图像都包含一个手写数字(0-9)。每个图像都被视为以像素为特征的数据样本。因此,要构建特征表,您必须将每个 8x8 图像转换为特征矩阵的行,其中 64 个特征列对应 64 个像素。如何为其构建特征矩阵和标签向量???

【问题讨论】:

    标签: python matplotlib scikit-learn


    【解决方案1】:

    您可以按照关于监督学习的 scikit-learn 教程进行操作,他们使用的是 Digit 数据集

    http://scikit-learn.org/stable/tutorial/basic/tutorial.html#loading-an-example-dataset

    更多细节here。如果按照示例加载数据集,则可以简单地重塑图像:

    from sklearn import datasets
    digits = datasets.load_digits()
    # To apply a classifier on this data, we need to flatten the image, to
    # turn the data in a (samples, feature) matrix:
    n_samples = len(digits.images)
    data = digits.images.reshape((n_samples, -1))
    

    这使得data 成为一个二维矩阵,具有n_samples 行和尽可能多的列以适应展平图像。

    【讨论】:

      【解决方案2】:

      如果您使用的是numpycv2,您可以执行以下操作:

      import numpy as np
      import cv2
      
      fname = "image1.jpg"
      image = cv2.imread(fname)                    #  (8, 8, 1)
      
      feature = image.reshape(64)                #  (64,)
      

      要读取一堆图像并加载到“特征矩阵”(numpy 数组)中,您可以执行以下操作:

      N = 10 # number of images
      data = np.zeros((N, 64))
      
      for index in range(N):
      
          # get the current image and convert to feature, as above
      
          data[index] = np.copy(feature)
      

      您的数据矩阵的每一行现在都是一个示例(64 个暗淡的特征列表)。

      这有帮助吗?

      标签向量可以只是一个一维numpy数组,即labels = np.zeros(N)

      编辑:

      有多种读取图像的方法:

      (1)img = cv2.imread(filename)

      (2) 使用matplotlib:

      import matplotlib.image as mpimg
      img = mpimg.imread(filename)
      

      (3) 使用 PIL(或 PILLOW):

      from PIL import Image
      img = Image.open(filename)
      

      在读取图像后检查图像的形状是值得的,这样您就知道它处于适合您的应用程序的正确通道、宽度、高度顺序。

      【讨论】:

      • 对不起,我对 cv2 模块一无所知,没有它我们有什么办法吗?
      • 当然,我已经更新了三种最流行方法的答案。您很可能会将 matplotlib 作为您正在使用的任何 python 发行版的一部分安装,所以我推荐那个。 cv2 是 python opencv 模块 - 它对于执行一般图像处理非常有用。
      • 我在一个文件夹中有 1797 张图片,如何将所有图片加载到一个 numpy 数组中??
      • 您应该使用(并且可能接受)下面@KPLauritzen 的答案,因为这正是您对这个问题所需要的。否则,要加载图像,您可以在 scipy-lectures.org/advanced/image_processing 找到更多详细信息
      • 所以我得到它并将其转换为特征矩阵和标签向量并应用随机森林并获得大约 92% 的准确度。有什么办法可以列出所有错误分类的图像?
      猜你喜欢
      • 1970-01-01
      • 2012-08-08
      • 1970-01-01
      • 2018-10-31
      • 2019-04-27
      • 1970-01-01
      • 2018-10-12
      • 1970-01-01
      • 2022-06-14
      相关资源
      最近更新 更多