天天看點

python畫logistic拟合曲線_Python可視化27|seaborn繪制線型回歸圖曲線

本文詳細介紹seaborn繪制變量之間線型回歸(linear regression)曲線,涉及如下兩個重要函數:

seaborn.regplot

seaborn.lmplot

本文速覽

python畫logistic拟合曲線_Python可視化27|seaborn繪制線型回歸圖曲線

image

python畫logistic拟合曲線_Python可視化27|seaborn繪制線型回歸圖曲線

image

python畫logistic拟合曲線_Python可視化27|seaborn繪制線型回歸圖曲線

image

目錄

1、繪圖資料準備

2、seaborn.regplot

regplot預設參數線型回歸圖

分别設定點和拟合線屬性

置信區間(confidence interval)設定

拟合線延伸與坐标軸相交

拟合離散變量曲線

多項式回歸( polynomial regression)拟合曲線

3、seaborn.lmplot

按變量分類拟合回歸線

散點marker設定

散點調色盤

拟合線屬性設定

繪制分面圖

1、繪圖資料準備

依舊使用鸢尾花iris資料集,詳細介紹見之前文章。

#導入本帖要用到的庫,聲明如下:

import matplotlib.pyplot as plt

import numpy as np

import pandas as pd

import palettable

from pandas import Series,DataFrame

from sklearn import datasets

import seaborn as sns

import palettable

#導入鸢尾花iris資料集(方法一)

#該方法更有助于了解資料集

iris=datasets.load_iris()

x, y =iris.data,iris.target

y_1 = np.array(['setosa' if i==0 else 'versicolor' if i==1 else 'virginica' for i in y])

pd_iris = pd.DataFrame(np.hstack((x, y_1.reshape(150,1))),columns=['sepal length(cm)','sepal width(cm)','petal length(cm)','petal width(cm)','class'])

#astype修改pd_iris中資料類型object為float64

pd_iris['sepal length(cm)']=pd_iris['sepal length(cm)'].astype('float64')

pd_iris['sepal width(cm)']=pd_iris['sepal width(cm)'].astype('float64')

pd_iris['petal length(cm)']=pd_iris['petal length(cm)'].astype('float64')

pd_iris['petal width(cm)']=pd_iris['petal width(cm)'].astype('float64')

#導入鸢尾花iris資料集(方法二)

#該方法有時候會卡巴斯基,是以棄而不用

#import seaborn as sns

#iris_sns = sns.load_dataset("iris")

資料集簡單檢視

python畫logistic拟合曲線_Python可視化27|seaborn繪制線型回歸圖曲線

image

2、seaborn.regplot

seaborn.regplot(x, y, data=None, x_estimator=None, x_bins=None, x_ci='ci', scatter=True, fit_reg=True, ci=95, n_boot=1000, units=None, seed=None, order=1, logistic=False, lowess=False, robust=False, logx=False, x_partial=None, y_partial=None, truncate=True, dropna=True, x_jitter=None, y_jitter=None, label=None, color=None, marker='o', scatter_kws=None, line_kws=None, ax=None)

regplot預設參數線型回歸圖

plt.figure(dpi=100)

sns.set(style="whitegrid",font_scale=1.2)#設定主題,文本大小

g=sns.regplot(x='sepal length(cm)', y='sepal width(cm)', data=pd_iris,

color='#000000',#設定marker及線的顔色

marker='*',#設定marker形狀

)

python畫logistic拟合曲線_Python可視化27|seaborn繪制線型回歸圖曲線

image

分别設定點和拟合線屬性

plt.figure(dpi=100)

sns.set(style="whitegrid",font_scale=1.2)

g=sns.regplot(x='sepal length(cm)', y='sepal width(cm)', data=pd_iris,

color='#000000',

marker='*',

scatter_kws={'s': 60,'color':'g',},#設定散點屬性,參考plt.scatter

line_kws={'linestyle':'--','color':'r'}#設定線屬性,參考 plt.plot

python畫logistic拟合曲線_Python可視化27|seaborn繪制線型回歸圖曲線

image

置信區間(confidence interval)設定

注意拟合線周圍陰影面積變化

plt.figure(dpi=100)

sns.set(style="whitegrid",font_scale=1.2)

g=sns.regplot(x='sepal length(cm)', y='sepal width(cm)', data=pd_iris,

color='#000000',

marker='*',

ci=60,#置信區間設定,預設為95%置信區間,越大線周圍陰影部分面積越大

)

python畫logistic拟合曲線_Python可視化27|seaborn繪制線型回歸圖曲線

image

拟合線延伸與坐标軸相交

# extend the regression line to the axis limits

plt.figure(dpi=100)

sns.set(style="whitegrid",font_scale=1.2)

g=sns.regplot(x='sepal length(cm)', y='sepal width(cm)', data=pd_iris,

color='#000000',

marker='*',

truncate=False,#讓拟合線與軸相交

)

python畫logistic拟合曲線_Python可視化27|seaborn繪制線型回歸圖曲線

image

拟合離散變量曲線

plt.figure(dpi=100)

sns.set(style="whitegrid",font_scale=1.2)

x_discrete=[0 if i=='setosa' else 1 if i=='versicolor' else 2 for i in pd_iris['class']]#

g=sns.regplot(x=x_discrete, y='sepal width(cm)', data=pd_iris,#x此時為離散變量

color='#000000',

marker='*',

)

python畫logistic拟合曲線_Python可視化27|seaborn繪制線型回歸圖曲線

image

多項式回歸( polynomial regression)拟合曲線

plt.figure(dpi=110)

sns.set(style="whitegrid",font_scale=1.2)

g=sns.regplot(x='sepal length(cm)', y='sepal width(cm)', data=pd_iris,

marker='*',

order=4,#預設為1,越大越彎曲

scatter_kws={'s': 60,'color':'#016392',},#設定散點屬性,參考plt.scatter

line_kws={'linestyle':'--','color':'#c72e29'}#設定線屬性,參考 plt.plot

)

python畫logistic拟合曲線_Python可視化27|seaborn繪制線型回歸圖曲線

image

3、seaborn.lmplot

seaborn.lmplot(x, y, data, hue=None, col=None, row=None, palette=None, col_wrap=None, height=5, aspect=1, markers='o', sharex=True, sharey=True, hue_order=None, col_order=None, row_order=None, legend=True, legend_out=True, x_estimator=None, x_bins=None, x_ci='ci', scatter=True, fit_reg=True, ci=95, n_boot=1000, units=None, seed=None, order=1, logistic=False, lowess=False, robust=False, logx=False, x_partial=None, y_partial=None, truncate=True, x_jitter=None, y_jitter=None, scatter_kws=None, line_kws=None, size=None)seaborn.lmplot結合seaborn.regplot()和FacetGrid,比seaborn.regplot()更靈活,可繪制更個性化的圖形。

按變量分類拟合回歸線

plt.figure(dpi=100)

sns.set(style="whitegrid",font_scale=1.2)

g=sns.lmplot(x='sepal length(cm)', y='sepal width(cm)', data=pd_iris,

hue='class',

)

g.fig.set_size_inches(10,8)

python畫logistic拟合曲線_Python可視化27|seaborn繪制線型回歸圖曲線

image

散點marker設定

plt.figure(dpi=100)

sns.set(style="whitegrid",font_scale=1.2)

g=sns.lmplot(x='sepal length(cm)', y='sepal width(cm)', data=pd_iris,

hue='class',

markers=['+','^','o'], #設定散點marker

)

g.fig.set_size_inches(10,8)

python畫logistic拟合曲線_Python可視化27|seaborn繪制線型回歸圖曲線

image

散點調色盤

plt.figure(dpi=100)

sns.set(style="whitegrid",font_scale=1.2)

g=sns.lmplot(x='sepal length(cm)', y='sepal width(cm)', data=pd_iris,

hue='class',

markers=['+','^','*'],

scatter_kws={'s':180},

palette=["#01a2d9", "#31A354", "#c72e29"],#調色盤

)

g.fig.set_size_inches(10,8)

python畫logistic拟合曲線_Python可視化27|seaborn繪制線型回歸圖曲線

image

拟合線屬性設定

plt.figure(dpi=100)

sns.set(style="whitegrid",font_scale=1.2)

g=sns.lmplot(x='sepal length(cm)', y='sepal width(cm)', data=pd_iris,

hue='class',

markers=['+','^','*'],

scatter_kws={'s':180},

line_kws={'linestyle':'--'},#拟合線屬性設定

palette=["#01a2d9", "#31A354", "#c72e29"],

)

g.fig.set_size_inches(10,8)

python畫logistic拟合曲線_Python可視化27|seaborn繪制線型回歸圖曲線

image

繪制分面圖

plt.figure(dpi=100)

sns.set(style="whitegrid",font_scale=1.2)

g=sns.lmplot(x='sepal length(cm)', y='sepal width(cm)', data=pd_iris,

col='class',#按class繪制分面圖

markers='*',

scatter_kws={'s':150,'color':'#01a2d9'},

line_kws={'linestyle':'--','color':'#c72e29'},#直線屬性設定

)

g.fig.set_size_inches(10,8)

python畫logistic拟合曲線_Python可視化27|seaborn繪制線型回歸圖曲線

image 參考文獻: