【发布时间】:2018-03-11 21:27:37
【问题描述】:
我有以下数据框,我希望对其执行一些回归。我正在使用 Seaborn,但似乎无法找到适合的非线性函数。下面是我的代码及其输出,下面是我正在使用的数据框 df。注意我已经截断了这个图中的轴。
我想拟合泊松或高斯分布的函数样式。
import pandas
import seaborn
graph = seaborn.lmplot('$R$', 'Equilibrium Value', data = df, fit_reg=True, order=2, ci=None)
graph.set(xlim = (-0.25,10))
但是,这会产生下图。
df
R Equilibrium Value
0 5.102041 7.849315e-03
1 4.081633 2.593005e-02
2 0.000000 9.990000e-01
3 30.612245 4.197446e-14
4 14.285714 6.730133e-07
5 12.244898 5.268202e-06
6 15.306122 2.403316e-07
7 39.795918 3.292955e-18
8 19.387755 3.875505e-09
9 45.918367 5.731842e-21
10 1.020408 9.936863e-01
11 50.000000 8.102142e-23
12 2.040816 7.647420e-01
13 48.979592 2.353931e-22
14 43.877551 4.787156e-20
15 34.693878 6.357120e-16
16 27.551020 9.610208e-13
17 29.591837 1.193193e-13
18 31.632653 1.474959e-14
19 3.061224 1.200807e-01
20 23.469388 6.153965e-11
21 33.673469 1.815181e-15
22 42.857143 1.381050e-19
23 25.510204 7.706746e-12
24 13.265306 1.883431e-06
25 9.183673 1.154141e-04
26 41.836735 3.979575e-19
27 36.734694 7.770915e-17
28 18.367347 1.089037e-08
29 44.897959 1.657448e-20
30 16.326531 8.575577e-08
31 28.571429 3.388120e-13
32 40.816327 1.145412e-18
33 11.224490 1.473268e-05
34 24.489796 2.178927e-11
35 21.428571 4.893541e-10
36 32.653061 5.177167e-15
37 8.163265 3.241799e-04
38 22.448980 1.736254e-10
39 46.938776 1.979881e-21
40 47.959184 6.830820e-22
41 26.530612 2.722925e-12
42 38.775510 9.456077e-18
43 6.122449 2.632851e-03
44 37.755102 2.712309e-17
45 10.204082 4.121137e-05
46 35.714286 2.223883e-16
47 20.408163 1.377819e-09
48 17.346939 3.057373e-08
49 7.142857 9.167507e-04
编辑
附上两张图,当订单参数增加到超过 20 时,这两个数据集和另一个数据集生成。
【问题讨论】:
-
尝试将您的订单更改为 3
-
@BenT 我已经尝试了 order 参数的多个值:/
-
它不会修改曲线的形状吗?它使用 np.polyfit 应该使用高阶函数来降低成本函数。你能把它对你的图表做了什么吗?
-
@BenT 嗯,实际上你是对的,现在看起来确实更好,因为我将值推得很高(25 + )。然而,它有点跳跃,不是一条连续的曲线。
-
令我惊讶的是,仅使用 3 阶函数看起来并没有更好。预计会有如此复杂的曲线,其中拟合线的 25 阶多项式函数。如果您想将曲线与高斯曲线进行比较,您可能只想绘制一条实际的高斯曲线,而不是试图拟合一条曲线。你也可以把它做成一个线图,清楚地表明数据点看起来是高斯的。
标签: python seaborn non-linear-regression