萧子冲 2021-05-15 21:04 采纳率: 0%
浏览 38

module'fitting has no attribute'fitting' 请问这是什么问题呢

报错信息如下:

traceback (most recent call last ):

FIle "D:\Separate data\fit_main.py",line 19,in<module>

       coef = fitting.fitting(file_path)

AttributeError: module'fitting has no attribute'fitting'

现在有6个拟合函数,要一个excel中的第一列数据的个数,然后把第一列的数据逐个带入到每一个拟合函数中,求出拟合值

主要就是求带入各个拟合函数的拟合值

#fit_main.py
import os
import xlrd
import numpy as np
import pandas as pd
import fitting
# 获取2003年的数据量与SRTM高程数据
data = xlrd.open_workbook('D:\\AB_ICESAT\\delete abnormal\\zhengti\\2003.xlsx')  # excle文件位置
table = data.sheets()[0]  # 读取第一个表
rows=table.nrows  # 获取工作表中的总行数
clou_1 = table.col_values(0)  # 读取第一列
x = clou_1[1:]  # 去除第一行的第一个数
array = np.zeros([rows-1,7])

# 对每年的数据进行拟合
fileList = os.listdir('D:\AB_ICESAT\delete abnormal\zhengti')  # listdir的参数是文件夹的路径
i = 0
for file in fileList:
    file_path = os.path.join('D:\AB_ICESAT\delete abnormal\zhengti', file)  # 将路径与文件名结合起来就是每个文件的完整路径
    coef = fitting.fitting(file_path)
    print(coef)
    # 将2003年的SRTM高程数据带入拟合函数中
    yvals = np.polyval(coef, x)  # 将x带入多项式
    print(yvals)
    for j in range(rows-1):
        array[j][i] = yvals[j]
    i += 1
print(array)
#np.savetxt("D:/code/design2/out.txt", array, "%f ,%f ,%f ,%f ,%f ,%f ,%f", delimiter=',')

#将输出的矩阵保存到Excel
Data = pd.DataFrame(array)
writer = pd.ExcelWriter('D:\AB_ICESAT\delete abnormal\out.xlsx')		# 写入Excel文件
Data.to_excel(writer, 'page_1')		# ‘page_1’是写入excel的sheet名
writer.save()
writer.close()
#fitting.py
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

#读取Excel中的数据
import xlrd
def fitting(path):
    data = xlrd.open_workbook(path)  # excle文件位置
    table = data.sheets()[0]  # 读取第一个表
    clou_1 = table.col_values(0) #读取第一列
    x_axis = clou_1[1:] #去除第一行的第一个数
    clou_2 = table.col_values(1) #读取第二列
    y_axis = clou_2[1:] #去除第一行的第一个数

    #定义x、y散点坐标
    x = np.array(x_axis)
    #print('x is :\n',x)
    y = np.array(y_axis)
    #print('y is :\n',y)
    #用3次多项式拟合
    f1 = np.polyfit(x, y, 3)  # 返回多项式系数,deg次数太高会有震荡
    #print('f1 is :\n',f1)

    p1 = np.poly1d(f1)  # 获得多项式
    print('p1 is :\n',p1)

    yvals=np.polyval(f1, x)  # 将x带入多项式
    correlation = np.corrcoef(y, yvals)[0, 1]  # 相关系数correlation**2 #R方
    print(correlation)
    #绘图
    plot1 = plt.plot(x, y, 'b+',label='original values')
    plot2 = plt.plot(x, yvals, '.r',label='polyfit values')
    plt.xlabel('x')
    plt.ylabel('y')
    plt.legend(loc=4) #指定legend的位置右下角
    plt.title('polyfitting')
    plt.show()
    return f1
  • 写回答

2条回答 默认 最新

  • 关注

    import numpy as np 导入失败了,是不是版本兼容性问题呢?

    评论

报告相同问题?

悬赏问题

  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题