我正在做一个性别分类项目。我在 Python 中使用 Numpy 数组提取图像的像素,类似于下面的:
[[[129 155 191] [123 150 185] [120 149 183]]
我如何使用这些值来提取一个有意义的数字,以便在 csv 文件中用于 K-最近邻算法。例如单个数字,如
0.34232
总之,我怎样才能[[[129 155 191] [123 150 185] [120 149 183]]变成一个像0.34232
我正在做一个性别分类项目。我在 Python 中使用 Numpy 数组提取图像的像素,类似于下面的:
[[[129 155 191] [123 150 185] [120 149 183]]
我如何使用这些值来提取一个有意义的数字,以便在 csv 文件中用于 K-最近邻算法。例如单个数字,如
0.34232
总之,我怎样才能[[[129 155 191] [123 150 185] [120 149 183]]变成一个像0.34232
欢迎来到数据科学!你的问题需要更多细节......有很多方法可以将数组变成一个数字。你应该多说一点关于有意义的意思。
以下是一些示例,使用您的示例数组,这可能看起来非常简单,但确实构成了现代研究中使用的许多技术的基础:
In [1]: import numpy as np
In [2]: x = np.array([[129, 155, 191], [123, 150, 185], [120, 149, 183]], dtype=np.float32)
In [3]: x
Out[3]:
array([[129., 155., 191.],
[123., 150., 185.],
[120., 149., 183.]], dtype=float32)
现在这里有一些(随机选择的)方法可以从你的数组中创建一个数字:
In [4]: np.mean(x) # the mean / average
Out[4]: 153.88889
In [5]: np.sum(x) # the sum
Out[5]: 1385.0
In [6]: np.std(x) # the standard deviation
Out[6]: 25.722641
In [7]: np.linalg.norm(x) # the Frobius norm - a distance measure
Out[7]: 468.07156
In [8]: np.max(x)
Out[8]: 191.0
这些可能看起来很简单,但如果我们将您的数组视为来自更大图像数组的单个块,那么这些可能代表用于在数组通过神经网络时对数组进行下采样的池化层。看看Keras 库中可用的池化层。
您可能想要使用哪种方法在很大程度上取决于您的用例、数据集和模型。