Сиборн - линейные отношения
В большинстве случаев мы используем наборы данных, которые содержат несколько количественных переменных, и цель анализа часто состоит в том, чтобы связать эти переменные друг с другом. Это можно сделать с помощью линий регрессии.
При построении регрессионных моделей мы часто проверяем multicollinearity,где нам нужно было увидеть корреляцию между всеми комбинациями непрерывных переменных и предпринять необходимые действия для устранения мультиколлинеарности, если она существует. В таких случаях помогают следующие приемы.
Функции для построения моделей линейной регрессии
В Seaborn есть две основные функции для визуализации линейной зависимости, определенной посредством регрессии. Эти функцииregplot() и lmplot().
regplot против lmplot
заговор | lmplot |
---|---|
принимает переменные x и y в различных форматах, включая простые массивы numpy, объекты серии pandas или как ссылки на переменные в кадре данных pandas | содержит данные в качестве обязательного параметра, а переменные x и y должны быть указаны как строки. Этот формат данных называется данными «длинной формы». |
А теперь нарисуем сюжеты.
пример
Построение графика regplot, а затем lmplot с теми же данными в этом примере
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
sb.regplot(x = "total_bill", y = "tip", data = df)
sb.lmplot(x = "total_bill", y = "tip", data = df)
plt.show()
Вывод
Вы можете увидеть разницу в размере между двумя участками.
Мы также можем использовать линейную регрессию, когда одна из переменных принимает дискретные значения
пример
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
sb.lmplot(x = "size", y = "tip", data = df)
plt.show()
Вывод
Подгонка различных типов моделей
Использованная выше простая модель линейной регрессии очень проста в использовании, но в большинстве случаев данные нелинейны, и вышеуказанные методы не могут обобщить линию регрессии.
Давайте использовать набор данных Анскомба с графиками регрессии -
пример
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('anscombe')
sb.lmplot(x="x", y="y", data=df.query("dataset == 'I'"))
plt.show()
В этом случае данные хорошо подходят для модели линейной регрессии с меньшей дисперсией.
Давайте посмотрим на другой пример, когда данные имеют большое отклонение, что показывает, что линия наилучшего соответствия не является хорошей.
пример
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('anscombe')
sb.lmplot(x = "x", y = "y", data = df.query("dataset == 'II'"))
plt.show()
Вывод
График показывает большое отклонение точек данных от линии регрессии. Такой нелинейный более высокий порядок можно визуализировать с помощьюlmplot() и regplot()Они могут соответствовать модели полиномиальной регрессии для изучения простых видов нелинейных тенденций в наборе данных -
пример
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('anscombe')
sb.lmplot(x = "x", y = "y", data = df.query("dataset == 'II'"),order = 2)
plt.show()