基于Python的多项式拟合方法
1. 直接上代码进行介绍__author__ = 'Administrator'# coding=utf8# 导入相关包import matplotlib.pyplot as pltimport numpy as npfrom pandas import read_csvfrom sklearn.metrics import r2_score# 读取数据假设数据为200行*100列的数据表url
·
1. 直接上代码进行介绍
__author__ = 'Administrator'
# coding=utf8
# 导入相关包
import matplotlib.pyplot as plt
import numpy as np
from pandas import read_csv
from sklearn.metrics import r2_score
# 读取数据 假设数据为200行*100列的数据表
url = 'test.csv' # 定义路径
data = read_csv(url, header=0) # 读取数据
data = data.iloc[:, :].values # 获取索引
y = data[:, 1].tolist() # 获取数据的第二列
# 构建一个长度为200的数组,数组值为0-199
x = [] #定义一个空数组
for i in range(200): # 在数组中添加元素
x = x + [i]
# 进行多项式拟合(这里选取3次多项式拟合)
# z = np.polyfit(x, y, 1) # 用1次多项式拟合
# z = np.polyfit(x, y, 2) # 用2次多项式拟合
z = np.polyfit(x, y, 3) # 用3次多项式拟合
# 获取拟合后的多项式
p = np.poly1d(z)
print(p) # 在屏幕上打印拟合多项式
# 计算拟合后的y值
yvals=p(x)
# 计算拟合后的R方,进行检测拟合效果
r2 = r2_score(y, yvals)
print('多项式拟合R方为:', r2)
# 计算拟合多项式的极值点。
peak = np.polyder(p, 1)
print(peak.r)
# 画图对比分析
plot1 = plt.plot(x, y, '*', label='original values', color='dimgray')
plot2 = plt.plot(x, yvals, '#000000', label='fitting values', linewidth=2)
plt.xlabel('time points')
plt.ylabel('values')
plt.legend(loc="best") # 指定legend的位置,读者可以自己help它的用法
plt.title('fitting diagram')
plt.show()
希望我的总结能够帮到您,谢谢采纳!!
更多推荐
已为社区贡献4条内容
所有评论(0)