Python 构建特征矩阵和标签向量:

Python 构建特征矩阵和标签向量:,python,matplotlib,scikit-learn,Python,Matplotlib,Scikit Learn,我有一个数据集“数字”。该数据集包括1797个小图像(8x8像素),每个图像包括一个手写数字(0-9)。每个图像被视为一个以像素为特征的数据样本。因此,要构建特征表,必须将每个8x8图像转换为具有64个特征列(64个像素)的特征矩阵行。如何为它构建特征矩阵和标签向量 如果您使用的是numpy和cv2,您可以执行以下操作: import numpy as np import cv2 fname = "image1.jpg" image = cv2.imread(fname)

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

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

import numpy as np
import cv2

fname = "image1.jpg"
image = cv2.imread(fname)                    #  (8, 8, 1)

feature = image.reshape(64)                #  (64,)
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)
要读取一组图像并加载到“特征矩阵”(一个
numpy
数组),您可以执行以下操作:

import numpy as np
import cv2

fname = "image1.jpg"
image = cv2.imread(fname)                    #  (8, 8, 1)

feature = image.reshape(64)                #  (64,)
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维特征列表)

这有用吗

标签向量可以是1D numpy数组,即
labels=np.zero(N)

编辑:

有多种方法可以读取图像:

(1)
img=cv2.imread(文件名)

(2) 使用matplotlib:

import matplotlib.image as mpimg
img = mpimg.imread(filename)
(3) 使用PIL(或枕头):


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

您可以按照scikit学习教程的指导学习,在那里他们使用的是数字数据集

更详细地说。如果像示例中那样加载数据集,则可以简单地重塑图像:

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))

这使得
数据
成为一个2D矩阵,包含
n_样本
行和尽可能多的列,以适合展平图像。

对不起,我不知道cv2模块,没有它我们有什么办法吗?当然,我已经更新了三种最流行方法的答案。很可能您将在使用的任何python发行版中安装matplotlib,因此我建议您安装matplotlib。cv2是python opencv模块-它对于执行一般图像操作非常有用。我在一个文件夹中有1797个图像,如何在一个numpy数组中加载所有图像??您应该使用(并且可能接受)下面@KPLauritzen的答案,因为这正是您需要回答的问题。否则,要加载一幅图像,你可以找到更多的细节,所以我得到了它,并将其转换为特征矩阵和标签向量,然后应用随机森林,得到了大约92%的准确率。我有没有办法列出所有错误分类的图像?