Сохранение категорийных кодов из Dataframe - PullRequest
0 голосов
/ 11 июля 2020

У меня есть фрейм данных, перечисленный для каждых 50 строк, которые они интерполируют между A и B. Я действительно не понимаю функцию Category.from_codes. У меня есть фрейм данных, содержащий мои функции, которые представляют собой просто 20 пикселей из 50 изображений, поэтому матрица 50x20. Значения Y - это просто значения индекса, например: пиксель 0, 1, 2, 3 и так далее. Это мой фрейм данных и его перечисление, как для данного фрейма данных, могу ли я извлечь X и Y, где X - мои данные, Y - мои категории.

import numpy as np
import pandas as pd

my_array = np.zeros((700, 20))
indices = sorted(list(range(0,int(my_array.shape[0]/50)))*50)
pixel_index = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
    11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

df = pd.DataFrame(my_array, columns=pixel_index)

class_names = list('AB')
target_names = ["Class_" + c for c in class_names]
n_sets = df.shape[0]//50
class_col = []
for name in target_names:
    class_col += [name]*50
n_sets = df.shape[0]//(50*len(target_names))
class_col = class_col*n_sets
df['class'] = class_col
X = pd.DataFrame(my_array, columns= pixel_index)
y = pd.Categorical.from_codes(indices,target_names)

1 Ответ

2 голосов
/ 11 июля 2020

Немного сложно понять, чего вы пытаетесь достичь. Если вы пытаетесь создать серию Y, равную 0/1, соответствующую классу, который вы создаете для каждой строки, замените эту строку:

y = pd.Categorical.from_codes(indices,target_names)

на

y = pd.Categorical(df["class"]).codes

тогда значение y будет 50 нулей, 50 единиц, 50 нулей, 50 единиц и т.д. c.

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