从一些数据中生成二次多项式

Generating 2nd degree polynomial out of some data

我有一些数据想要生成像这样的二阶 polyfit 作为示例:

我尝试了两种不同的代码,但多项式只是试图遍历所有点。

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

data = pd.read_csv('TESTEXskelet.csv', sep=",")

x = data.Gennemsnitlig_hastighed
y1 = data.Sum_VSP

np.polyfit(x,y1,2)

plt.grid()
plt.title("VSP sum/hastighed")
plt.ylabel('VSP - kW/ton')
plt.xlabel('Hastighed - km/t')

plt.scatter(x,y1,s=5) # Definere selve plottet
plt.plot(x, y1)

但随后它通过每个点绘制它。

我也尝试过 sklearn,如果需要我可以上传。

您正确地拟合了一个二阶多项式。你只是没有在之后的情节中使用它。

plt.scatter(x,y1,s=5) 绘制原始数据的散点图,plt.plot(x, y1) 绘制贯穿所有数据的直线。

要绘制多项式,您需要将多项式拟合到一个变量中。然后为要绘制的 x-axis 定义一个范围,并根据多项式拟合预测 y 值:

p = np.polyfit(x,y1,2)

xn = np.linspace(np.min(x), np.max(x), 100)
yn = np.poly1d(p)(xn)

plt.scatter(x,y1,s=5)
plt.plot(xn, yn)

polyfit returns 多项式的参数,试试

p = np.polyfit(x,y1,2)
y2 = np.polyval(p, x)
plt.plot(x, y2)