簡體   English   中英

散點圖的最佳擬合線

[英]Best fitting line for a scatter plot

如果我不知道2軸之間的關系(或者我可以使用scipy.optimize),有沒有辦法找到散點圖的最佳擬合線。我的散點圖看起來像這樣

散點圖

我想有這樣一條線 預期結果 我需要得到最佳擬合線的點數,以便我進一步計算

for j in lat :
l=94*j
i=l-92
for lines in itertools.islice(input_file, i, l):
    lines=lines.split()
    p.append(float(Decimal(lines[0])))
    vmr.append(float(Decimal(lines[3])))
    plt.scatter(vmr, p)

您可以使用LOWESS(局部加權散點圖平滑) ,一種非參數回歸方法。

Statsmodels 在這里有一個實現,你可以使用它來適應你自己的更順暢。

有關使用Statsmodels實現的示例,可以在散點圖中查看非線性關系的StackOverflow問題

您還可以在Seaborn visuzalization庫的regplot()函數中使用關鍵字參數lowess=True 有關詳細信息,請參閱Seaborn文檔

以下代碼是使用Seaborn和上面StackOverflow問題中的數據的示例:

import numpy as np
import seaborn as sns
sns.set_style("white")

x = np.arange(0,10,0.01)
ytrue = np.exp(-x/5.0) + 2*np.sin(x/3.0)

# add random errors with a normal distribution                      
y = ytrue + np.random.normal(size=len(x))

sns.regplot(x, y, lowess=True, color="black", 
            line_kws={"color":"magenta", "linewidth":5})

結果圖

這可能不是一個matplotlib問題,但我認為你可以用熊貓做這種事情,使用滾動中位數。

smoothedData = dataSeries.rolling(10, center = True).median()

實際上你可以用任何東西做滾動中位數,但是熊貓有內置功能。 Numpy也可能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM