Python可視化學(xué)習(xí)之seaborn繪制線型回歸曲線
本文速覽



1、繪圖數(shù)據(jù)準(zhǔn)備
依舊使用鳶尾花iris數(shù)據(jù)集,詳細(xì)介紹見(jiàn)之前文章。
#導(dǎo)入本帖要用到的庫(kù),聲明如下:
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
#導(dǎo)入鳶尾花iris數(shù)據(jù)集(方法一)
#該方法更有助于理解數(shù)據(jù)集
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中數(shù)據(jù)類型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')
#導(dǎo)入鳶尾花iris數(shù)據(jù)集(方法二)
#該方法有時(shí)候會(huì)卡巴斯基,所以棄而不用
#import seaborn as sns
#iris_sns = sns.load_dataset("iris")
數(shù)據(jù)集簡(jiǎn)單查看

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默認(rèn)參數(shù)線型回歸圖
plt.figure(dpi=100)
sns.set(style="whitegrid",font_scale=1.2)#設(shè)置主題,文本大小
g=sns.regplot(x='sepal length(cm)', y='sepal width(cm)', data=pd_iris,
color='#000000',#設(shè)置marker及線的顏色
marker='*',#設(shè)置marker形狀
)
分別設(shè)置點(diǎn)和擬合線屬性
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',},#設(shè)置散點(diǎn)屬性,參考plt.scatter
line_kws={'linestyle':'--','color':'r'}#設(shè)置線屬性,參考 plt.plot

置信區(qū)間(confidence interval)設(shè)置
注意擬合線周圍陰影面積變化
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,#置信區(qū)間設(shè)置,默認(rèn)為95%置信區(qū)間,越大線周圍陰影部分面積越大
)
擬合線延伸與坐標(biāo)軸相交
# 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,#讓擬合線與軸相交
)
擬合離散變量曲線
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此時(shí)為離散變量
color='#000000',
marker='*',
)

多項(xiàng)式回歸( 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,#默認(rèn)為1,越大越彎曲
scatter_kws={'s': 60,'color':'#016392',},#設(shè)置散點(diǎn)屬性,參考plt.scatter
line_kws={'linestyle':'--','color':'#c72e29'}#設(shè)置線屬性,參考 plt.plot
)
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結(jié)合seaborn.regplot()和FacetGrid,比seaborn.regplot()更靈活,可繪制更個(gè)性化的圖形。
按變量分類擬合回歸線
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)
散點(diǎn)marker設(shè)置
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'], #設(shè)置散點(diǎn)marker
)
g.fig.set_size_inches(10,8)
散點(diǎn)調(diào)色盤
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"],#調(diào)色盤
)
g.fig.set_size_inches(10,8)
擬合線屬性設(shè)置
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':'--'},#擬合線屬性設(shè)置
palette=["#01a2d9", "#31A354", "#c72e29"],
)
g.fig.set_size_inches(10,8)
繪制分面圖
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'},#直線屬性設(shè)置
)
g.fig.set_size_inches(10,8)
以上就是Python可視化學(xué)習(xí)之seaborn繪制線型回歸曲線的詳細(xì)內(nèi)容,更多關(guān)于Python seaborn線型回歸曲線的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
基于Python實(shí)現(xiàn)全自動(dòng)二維碼識(shí)別
這篇文章主要為大家詳細(xì)介紹了如何基于Python實(shí)現(xiàn)全自動(dòng)二維碼識(shí)別功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-11
Python實(shí)現(xiàn)根據(jù)指定端口探測(cè)服務(wù)器/模塊部署的方法
這篇文章主要介紹了Python根據(jù)指定端口探測(cè)服務(wù)器/模塊部署的方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-08-08
TensorFlow自定義模型保存加載和分布式訓(xùn)練
本篇文章將涵蓋 TensorFlow 的高級(jí)應(yīng)用,包括如何自定義模型的保存和加載過(guò)程,以及如何進(jìn)行分布式訓(xùn)練,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
Python 實(shí)現(xiàn)將某一列設(shè)置為str類型
這篇文章主要介紹了Python 實(shí)現(xiàn)將某一列設(shè)置為str類型,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07
Python中Playwright模塊進(jìn)行自動(dòng)化測(cè)試的實(shí)現(xiàn)
playwright是由微軟開發(fā)的Web UI自動(dòng)化測(cè)試工具,本文主要介紹了Python中Playwright模塊進(jìn)行自動(dòng)化測(cè)試的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12
Python開發(fā)的十個(gè)小貼士和技巧及長(zhǎng)常犯錯(cuò)誤
這篇文章主要介紹了Python開發(fā)的十個(gè)小貼士和技巧,其中一些是初學(xué)這門語(yǔ)言常常會(huì)犯的錯(cuò)誤,小編給大家一一列舉出來(lái)了,需要的朋友可以參考下2018-09-09

