def preprocess(data, window): data_corr = data.corr()['Power'] key = [] for i in data_corr.keys(): if (data_corr[i] > 0.6): key.append(i) data = data[key] data = data.dropna(subset=['Power']) #数据预处理: 删除功率为空的数据组 data = data.fillna(0) # 数据预处理:将缺失值NAN值赋0 data[data < 0] = 0 #数据预处理:对<0的功率值赋为0 scaler = MinMaxScaler() # data[key] = scaler.fit_transform(data[key].to_numpy()) train_x = [] train_y = [] L = len(data) for i in range(L - window): train_seq = data[key][i:i + window] train_x.append(train_seq) train_label = data['Power'][i + window:i + window + 1] train_y.append(train_label) train_x = torch.from_numpy(np.array(train_x)) train_y = torch.from_numpy(np.array(train_y)) train_x = torch.tensor(train_x, dtype=torch.float) train_y = torch.tensor(train_y, dtype=torch.float) print(train_y.type()) return train_x, train_y
时间: 2024-04-27 11:19:41 浏览: 108
这段代码是一个数据预处理的函数,其中包含以下步骤:
1. 首先计算 DataFrame 数据中 'Power' 列与其他列的相关系数,筛选出相关系数大于 0.6 的列作为特征列;
2. 删除 'Power' 列中包含缺失值(NaN)的行;
3. 将 DataFrame 中的缺失值用 0 填充;
4. 对 DataFrame 中小于 0 的功率值赋为 0;
5. 使用 MinMaxScaler 进行特征缩放;
6. 将数据按照窗口大小 window 进行切分,每个窗口内包含 window 个连续的特征值和一个对应的功率值,作为训练数据;
7. 将训练数据转换为 PyTorch 张量,并返回训练数据集 train_x 和 train_y。
需要注意的是,该函数中使用了 PyTorch 中的张量(tensor)作为数据类型,并且使用了 MinMaxScaler 对特征进行缩放。
相关问题
def xiang_data(self): if not self.data.empty: # 创建一个新窗口来显示数据集 top = tk.Toplevel(self.master) top.title("相关性") # 创建用于显示数据集的表格 table = tk.Text(top) table.pack() # 将数据集转换为字符串并显示在表格中 table.insert(tk.END, str(self.data.corr())) table.config(state=tk.DISABLED) # 创建“训练集划分”按钮 process_button = tk.Button(top, text="训练集划分", command=self.preprocess_data) process_button.pack(pady=10) else: self.path_label.config(text="请先导入数据集")
这段代码看起来是一个Python类的一个方法,名为"xiang_data"。该方法似乎是用于显示数据集的相关性,并且还提供了一个按钮用于进行训练集划分。具体来说,如果数据集不为空,该方法会创建一个新窗口来显示数据集的相关性,并在其中创建一个用于显示数据集的表格。然后,该方法会将数据集转换为字符串并显示在表格中。接着,该方法会创建一个名为"训练集划分"的按钮,点击该按钮会触发一个名为"preprocess_data"的方法,用于进行训练集划分。如果数据集为空,该方法会在界面上显示一条提示信息,要求先导入数据集。
阅读全文