Вычисление соотношения пикселей - PullRequest
0 голосов
/ 02 октября 2018

У меня есть набор данных изображений 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 таких файлов (с разными значениями и эмоциями), и преобразование строк в векторы и вычисление корреляции было мучительно долгим.

Есть ли лучший, более быстрый способ вычисления этих значений?Или извлечь ценные пиксели, с помощью которых я могу создать свою модель?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...