Как изменить количество ячеек в функции pairplot () seaborn? - PullRequest
1 голос
/ 11 января 2020

У меня есть набор данных из 36000 строк и 51 столбца. Каждый ряд является наблюдением, а первые 50 столбцов представляют собой 50 различных признаков каждого наблюдения. 51-й столбец - это столбец со значениями 0 или 1, где 0 означает, что наблюдение принадлежит классу A, а 1 означает, что оно принадлежит классу B.

Теперь, скажем, я хочу составить гистограмму значений значений первый столбец, назовите его Feature1. Насколько я знаю, plt.hist () из matplotlib не имеет возможности рисовать 2 гистограммы на одном графике, одна из которых соответствует функциям Feature1 из класса A, а другая соответствует функциям из класса B. Кроме того, sns.distplot от Seaborn не делает этого также. Поэтому я решил попробовать пару seaborn следующим образом:

sns.pairplot(df, vars = ["Feature1"], hue= "Class", diag_kind = "hist", diag_kws= dict(alpha=0.55))

Feature1 - это имя 1-го столбца, а Class - имя последнего столбца, который содержит метки классов для каждого наблюдения. Гистограмма отображается нормально, но я бы хотел увеличить количество используемых корзин. К сожалению, я не нашел никакого способа сделать это с помощью этой конкретной функции.

Кто-нибудь знает решение этой проблемы? Спасибо

1 Ответ

1 голос
/ 12 января 2020

Чтобы изложить комментарии к Bugbeeb , при использовании diag_kind = 'hist' diag_kws передается в plt.hist(). Это не описано в документации, но ясно из источника ,

def PairPlot(...):
    # ...
    if diag_kind == "hist":
        grid.map_diag(plt.hist, **diag_kws)
    # ...

Так как plt.hist() принимает аргумент bins в качестве целого числа для управления количеством бинов, которые вы можете просто сделать

sns.pairplot(df, vars = ["Feature1"], hue = "Class", diag_kind = "hist", 
             diag_kws = {'alpha':0.55, 'bins':n})

Где n - это количество бинов, желаемое как int.

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