python - 如何在python中做Bspline
问题描述
我正在尝试Bspline
用我的回归数据绘制 a ,但它不起作用。该图显示了散点图,但没有插值spline
:
#library##
import numpy as np
from numpy.polynomial.polynomial import polyfit
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.pipeline import Pipeline
from sklearn.metrics import mean_squared_error
import scipy.interpolate as interpolate
from scipy.interpolate import BSpline
##select x,y ##
select2 = df.groupby('Customer_Age')['Customer_Gender'].value_counts().rename('count').reset_index()
x = pd.DataFrame(select2['Customer_Age']).values.reshape(-1, 1)
y = select2['count'].values.reshape(-1, 1)
## polinomal ##
pre_process = PolynomialFeatures(degree=2)
x_poly = pre_process.fit_transform(x)
##predict#
pr_model = LinearRegression()
pr_model.fit(x_poly, y)
y_pred = pr_model.predict(x_poly)
##B-spline##
t, c, k = interpolate.splrep(x, y, s=0, k=4)
N = 100
xmin, xmax = x.min(), x.max()
xx = np.linspace(xmin, xmax, N)
spline = interpolate.BSpline(t, c, k, extrapolate=False)
##plot##
plt.plot(x, y, 'bo', label='Original points')
plt.plot(xx, spline(xx), 'r', label='BSpline')
plt.grid()
plt.legend(loc='best')
plt.show()
我的方法导致以下输出t, c, k
:
t: [17. 17. 17. 17. 17. 18. 18.5 19. 19.5 20. 20.5 21. 21.5 22.
22.5 23. 23.5 24. 24.5 25. 25.5 26. 26.5 27. 27.5 28. 28.5 29.
29.5 30. 30.5 31. 31.5 32. 32.5 33. 33.5 34. 34.5 35. 35.5 36.
36.5 37. 37.5 38. 38.5 39. 39.5 40. 40.5 41. 41.5 42. 42.5 43.
43.5 44. 44.5 45. 45.5 46. 46.5 47. 47.5 48. 48.5 49. 49.5 50.
50.5 51. 51.5 52. 52.5 53. 53.5 54. 54.5 55. 55.5 56. 56.5 57.
57.5 58. 58.5 59. 59.5 60. 60.5 61. 61.5 62. 62.5 63. 63.5 64.
64.5 65. 65.5 66. 66.5 67. 67.5 68. 68.5 69. 69.5 70. 70.5 71.
71.5 72. 72.5 73. 73.5 74. 74.5 75. 75.5 76. 76.5 77.5 78. 78.5
79.5 80.5 81. 81.5 83. 84. 84.5 85.5 87. 87. 87. 87. 87. ]
c: [nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan 6. 0. 0. 0. 0. 0.]
k: 4
这是我的 x 和 y 数据的结构:
Customer_Age Customer_Gender count
0 17 M 846
1 17 F 460
2 18 M 970
3 18 F 790
4 19 M 1188
解决方案
推荐阅读
- .net-5 - 在托管服务器上时,Blazor 应用程序未运行服务器代码
- node.js - React 前端连接到我的计算机上的开发服务器,而不是 Azure VM 上的 Node 服务器,从为什么使用 localhost 托管它
- python - 从同一个python类中另一个函数中的函数访问变量
- python - Python ffmpeg 子进程制作无法播放的文件,但大小合适,只是挂起
- asp.net - 浏览到 ASP.NET 网站文件夹中的 PDF
- eclipse - 最终启动序列中的错误:无法执行 MI 命令:-exec-run
- python-3.x - 有人可以解释一下,以下代码段的输出如何为 100?
- networking - 我有一个关于流量控制数据的利用率和吞吐量以及如何找到数据包错误率的问题
- javascript - 以反应形式自定义验证器传递动态参数
- java - 当缺少一个 configurationPid 时,OSGi DS 的组件属性的优先级如何?