Категориальная оценка данных в Python с помощью get_dummies - PullRequest
0 голосов
/ 12 апреля 2019

Я хочу оценивать категориальные данные в Python с помощью дерева решений. Я хочу использовать категориальные данные и использовать binning для создания категориальных меток. Должен ли я? Проблема в том, что get_dummies возвращает кадр данных, длина которого отличается от заданных значений. Это на две строки короче исходных данных. Ранее я пытался использовать labelencode, но не сделал этого. Я попробовал форму панд get_dummies, которая стала мне проще.

Я проверил ссылку для функции get_dummies и искал проблему, но не смог найти, почему длина короче.

Делаем биннинг:

est = bine(n_bins=50, encode='ordinal', strategy='kmeans')
cat_labels = est.fit_transform(np.array(quant_labels).reshape(-1, 1))

Извлечь катерические данные (нужно?):

category = rd.select_dtypes(exclude=['number']).astype("category")
category = category.replace(math.nan, "None")
category = category.replace(0, "None")

Подготовить разделение:

one_hot_features = pd.get_dummies(category[1:-1])
X_train, X_test, y_train, y_test = train_test_split(one_hot_features, cat_labels, test_size = 0.6, random_state = None)

Ошибка:

ValueError: Found input variables with inconsistent number of samples: [1458, 1460]

Правильный размер выборок - 1460. Кодированный one_hot - это две короткие выборки. Почему так?

1 Ответ

1 голос
/ 12 апреля 2019

Когда вы кодируете свои данные, вы используете category[1:-1].Это закодирует все элементы от второго до второго элемента.

Объяснение:

1) Индексы начинаются с нуля, поэтому 1 - индекс второгоitem.
2) Индекс -1 означает от второго до последнего элемента.

Решение: Измените строку на one_hot_features = pd.get_dummies(category[:])

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