Составление классификационных данных с использованием массива NP - PullRequest
0 голосов
/ 12 апреля 2019

Я пытаюсь построить классификационные данные, где поле X представляет собой двумерный массив с 12 столбцами в качестве объектов. Как это можно отобразить на графике, где первые 3000 полей принадлежат классу 1, а остальные 9000 данных относятся к данным класса 2. Данные выглядят примерно так.

[[4.860e+02 1.400e+01 4.700e+01 ... 1.500e+01 0.000e+00 0.000e+00] [1.897e+03 1.000e+01 3.850e+02 ... 1.200e+01 0.000e+00 0.000e+00] [1.330e+02 1.500e+01 4.700e+01 ... 1.000e+01 0.000e+00 0.000e+00] ... [8.700e+01 1.000e+00 1.000e+01 ... 9.800e+01 1.300e+01 1.000e+01] [5.700e+01 1.000e+00 7.000e+00 ... 9.000e+01 1.700e+01 2.600e+01] [1.200e+01 0.000e+00 2.000e+00 ... 9.600e+01 7.000e+00 1.200e+01]]

1 Ответ

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

Трудно понять вашу проблему по предоставленной вами информации. Пожалуйста, добавьте больше информации, чтобы она была более понятной. Я не могу поставить это как комментарий, потому что мне не хватает репутации, извините.

Так что я выложу ответ рядом. Как я понимаю ваш вопрос, у вас есть массив (9000 x 12), где 12 столбцов являются переменными, а 9000 строк являются наблюдениями? И вы хотите разделить данные на 2 класса и построить их на одном графике с другим цветом / linetyle / etc.?

Если вы хотите назначить категории («переменные классификации») для вашего массива, pandas будет оптимальным модулем для этого. Если вы хотите сделать это исключительно с NumPy, я бы использовал что-то вроде этого:

import numpy as np
import matplotlib.pyplot as plt

# Sample data
arr = np.random.randn(9000, 12)

# Split data
class_a = arr[:3001, :]
class_b = arr[3001:, :]

# Plot both classes in same plot
fig, ax = plt.subplots(1, 1)

ax.plot(class_a[:, 0], class_a[:, 1])  # Choose columns you want to plot
ax.plot(class_b[:, 0], class_b[:, 1])

Если вы используете 2 отдельных вызова plt.plot, matplotlib автоматически использует новый цвет. Подход с pandas и seaborn расширил бы переменную arr:

import pandas as pd
import seaborn as sns

df = pd.DataFrame(arr)

df['Class'] = 'A'
df.Class[3001:] = 'B'  # Hacky solution, but got no time to elaborate

sns.lineplot(data=df, x=0, y=1, hue='Class')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...