Линия регрессии ведет себя странно на графике Seaborn / Matplotlib - PullRequest
0 голосов
/ 26 апреля 2018

Есть ли лучший способ построения функции вдоль диаграммы рассеяния в seaborn / matplotlib?Я просто делаю regplot, но по какой-то причине линия регрессии просто делает ... это.

Бонусный вопрос: есть ли способ, которым я могу заставить seaborn сказать мне, какую функцию он использует для линии?

Мне просто нужны линия и реальная функция наилучшим образом с этими точками.

Спасибо

a = { 4:44, 8:167, 16:479, 32:1239, 64: 2991, 128: 7012, 256: 15997, 512: 35922, 1024: 79590, 2048: 174699, 4096:380155,
8192: 821857, 16384: 1766870, 32768: 3779259, 65536: 8050043, 131072:17983451, 262144: 36133203, 524288: 76198683,
1048576:160262930, 2097152: 336255735, 4194304: 703966918, 8388608: 1470850124, 16777216: 3067526261, 33554432: 6386708998}



df = pd.DataFrame({'n':list(a.keys()), 'operations':list(a.values())})
f, ax = plt.subplots(figsize=(6, 6))
ax.set(xscale="log", yscale="log")

ax= sns.regplot('n', 'operations', df, ci=None)

plt.show()

enter image description here

1 Ответ

0 голосов
/ 26 апреля 2018

Это показывает только то, что ваша линия регрессии не проходит через начало координат (0, 0).

Вы можете получить наклон и смещение полиномиальной аппроксимации первой степени с помощью numpy's

import numpy as np
k = np.polyfit(df['n'], df['operations'], 1)

и нанесите его как

plt.plot(df['n'], df['n']*k[0]+k[1])

Однако это приведет к (почти) тому же самому изображению.Но с polyfit у вас есть возможность взвесить Баллы ваших данных.И если вы дадите источник, например, 1000, а остальные 1, вы получите строку, проходящую через (0, 0).

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