python - 如何将多项式回归线拟合到数据中
问题描述
#plotting values
x_max = np.max(X) + 100
x_min = np.min(X) - 100#calculating line values of x and y
x = np.linspace(x_min, x_max, 1000)
y = b0 + b1 * x #plotting line
plt.plot(x, y, color='#00ff00', label='Linear Regression')#plot the data point
plt.scatter(X, Y, color='#ff0000', label='Data Point')# x-axis label
plt.xlabel('Time')#y-axis label
plt.ylabel('Signal Strength MHz')
plt.legend()
plt.show()
我无法将多项式回归线拟合到数据中。
coefs = np.polyfit(X, Y, 4)
x_new = np.linspace(X[0], X[-1], num=len(X)*10)
ffit = poly.polyval(x_new, coefs)
plt.plot(x_new, ffit, label = 'Polynomial Regression')
plt.scatter(X, Y, color='#ff0000', label='Data Point')# x-axis label
plt.xlabel('Time')#y-axis label
plt.ylabel('Signal Strength MHz')
plt.show()
解决方案
您已切换多项式系数和 x 值的顺序。根据docs,第一个参数是多项式系数:
numpy.polyval(p, x)
参数:
p : array_like 或 poly1d object 一维多项式系数数组(包括等于零的系数)
x : array_like or poly1d object 一个数字、一个数字数组或 poly1d 的一个实例,用于计算 p。
更改以下行
ffit = poly.polyval(x_new, coefs)
到
ffit = poly.polyval(coefs, x_new)
编辑:
或者,尝试以下方法
coefs = np.polyfit(X, Y, 4)
x_new = np.linspace(X[0], X[-1], num=len(X)*10)
ffit = np.poly1d(coefs)
plt.plot(x_new, ffit(x_new), label = 'Polynomial Regression')
推荐阅读
- c++ - cpp 2d 向量参数(大小,?)?
- javascript - 根据选中的单选按钮显示幻灯片
- rx-java - Schedulers.io() 是同步还是异步运行作业?
- c# - Elasticsearch NEST PUT 映射以添加字段/属性
- java - 是否可以使用“java.util.logging”创建按日期分隔的滚动文件附加程序?
- python - 检查输入时出错:预期 conv2d_6_input 有 4 个维度,但得到了形状为 (270, 50, 50) 的数组
- c++ - 在 C++ 中使用带有类的模板时,类成员函数的错误答案?
- rust - 为什么功能即使移入新线程也会阻塞
- python - 等式运算符 (==) 无效
- c# - 如何获取 Visual Studio 解决方案的所有方法?