【发布时间】:2019-10-22 06:22:32
【问题描述】:
我的dataframe 有两个列,比如x 和y。下图显示了x 和y 的scatter plot。
基于散点图,我使用以下代码进行线性拟合,从而得到下图中的蓝色直线。
fig, ax = plt.subplots(nrows=1, ncols=1)
ax.scatter(df['x'], df['y'])
b, m = polyfit(df['x'], df['y'], 1)
ax.plot(df['x'], b + m * df['x'], 'blue', linewidth=1)
现在,我想制作散点图的另一条拟合曲线,可能是多项式。想要的结果类似于上图中的红色曲线。我尝试使用来自here 的以下内容。
coefs = np.polyfit(df['x'], df['y'], 2)
p = np.poly1d(coefs)
plt.plot(df['x'], df['y'], "bo", markersize= 2)
plt.plot(df['x'], p(df['x']), "r-")
但我的数据结果不正确,如下所示。
我应该怎么做?
编辑:数据是here。
【问题讨论】:
-
fit 是基于数据传播创建的[主要分组之外的几个点增加了计算错误]。可以删除主流数据以外的所有点,再试一次。或者您可以使用权重应用于样本点的 y 坐标
-
@Zaraki Kenpachi。我不介意包含有风险的异常值。问题是,如您所见,曲线不是单一的,而是来回多条线。
-
发布链接到你的数据,然后我尝试找到解决方案
-
问题出在排序上,看看下面的答案。对于线性拟合,您看不到它,因为在直线上的点之间来回走动仍然是直线路径
标签: python pandas matplotlib regression