E:\ana\envs\dl\python.exe E:\pythonProject\ADMM\wiene1.py Traceback (most recent call last): File "E:\pythonProject\A

动态 未结 0 114
小小草
小小草 LV1 2023年9月23日 23:40 发表
这个错误提示说明在代码中使用了一个NumPy数组对象,但是该对象没有`corrwith()`方法。具体来说,在`pearson_fusion()`函数中,你将输入数据转换为NumPy数组,并尝试使用`corrwith()`方法计算相关系数。然而,该方法是Pandas DataFrame对象的方法,不适用于NumPy数组。 要解决这个问题,你可以将输入数据转换为Pandas DataFrame对象,或者使用NumPy提供的相关系数计算函数(例如`numpy.corrcoef()`)来计算相关系数。以下是修改后的代码示例: ```python import pandas as pd import numpy as np from scipy.optimize import minimize # 加载数据 data = pd.read_csv('E:/lunwenpython/measures_v21.csv') data= data.iloc[610000:630000, ] # 将时间戳转换为秒数 #data['profile_id'] = data['profile_id'].astype(float) # 对数据进行归一化处理 data = (data - data.mean()) / data.std() def pearson_fusion(data, weights): # 计算每个特征与目标变量之间的皮尔逊相关系数 corr = data.corr()['pm'] corr.drop('pm', inplace=True) # 根据皮尔逊相关系数和权重计算复合健康指标 composite_index = 0 for i in range(len(corr)): composite_index += weights[i]*corr[i]*data.iloc[:,i] return composite_index # 加载设备实际寿命数据 actual_failure_time = 1000 # 假设设备实际寿命为1000秒 # 定义目标函数 def objective_function(x, data): weights = x[:6] T = x[6] composite_index = pearson_fusion(data, weights) N = len(composite_index) dt = T/N t = np.linspace(0, T, N+1) dW = np.sqrt(dt)*np.random.randn(N) W = np.cumsum(dW) W
收藏(0)  分享
相关标签: 智能问答
问题没解决?让AI助手帮你作答 AI助手
0个回复
  • 消灭零回复