我有48x48的图片数据集,这些图片的像素值为(0,255),标签为0或1(一种情绪,无论照片上的人是否生气)。 格式如下:
label, pixels
0, '44 55 194 ... 93 174 244'
我的任务是使用最近邻居算法创建一个用于分类的模型。
因为该任务应该很简单,所以我不应该进行特征提取。因此,我决定只查找与标签相关的像素。
首先,我将数据集加载到Pandas,然后从那里读取字符串值(像素的矢量只是字符串)并将其保存到数组中。
ys = df.emotion
pixels_str = df.values[:,1]
row_num = pixels_str.shape[0]
row_length = 48*48
xs = np.zeros((row_num,row_length))
for row in range(row_num):
xs[row] = np.fromstring(pixels_str[row], dtype=np.float, sep=' ')
从那里我将值归一化
stdScaler = StandardScaler()
x_normed = stdScaler.fit_transform(xs)
和计算的相关性
focus_col = ["emotion"]
correlations = df.corr().filter(focus_col).drop(focus_col)
#show top 250 correlated pixels
correlations.abs().sort_values(kind="quicksort",by=['emotion']).iloc[::-1][:250]
我打算用这些(比如说250像素)作为我计算模型的特征。 但是,我还有另外7个文件(具有不同的值和情感),将字符串转换为矢量并计算相关性非常费时。
是否有更好,更快的方法来计算这些值?还是提取有价值的像素来创建模型?