预测方法(XGBoost)
RUL 预测通常使用以下一些方法:
-
机器学习和深度学习:使用历史数据训练模型来预测剩余寿命。常见的算法包括支持向量机、随机森林、XGBoost 和神经网络等,本文采用XGBoost来预测风电剩余寿命(2014.5-----2015.1)
一、代码逐行解析
#库引入
import pandas sa pd
#调用机器学习相关库和工具做寿命预测,模型评估
from sklearn.model_selection import train_test_split
#固定搭配
pd.options.mode.chained_assignment = None
数据获取及处理
def data_preprocessing():
#数据获取
df = pd.read_csv("D:\\Wind Power Doctor\\SCADA_data1.csv")
status_data_wec = pd.read_csv("D:\\Wind Power Doctor\\status_data_wec1.csv")
# 计算逆变器的平均温度
df["Inverter avg. temp"] = df[
[
"CS101 : Sys 1 inverter 1 cabinet temp.",
"CS101 : Sys 1 inverter 2 cabinet temp.",
"CS101 : Sys 1 inverter 3 cabinet temp.",
"CS101 : Sys 1 inverter 4 cabinet temp.",
"CS101 : Sys 1 inverter 5 cabinet temp.",
"CS101 : Sys 1 inverter 6 cabinet temp.",
"CS101 : Sys 1 inverter 7 cabinet temp.",
"CS101 : Sys 2 inverter 1 cabinet temp.",
"CS101 : Sys 2 inverter 2 cabinet temp.",
"CS101 : Sys 2 inverter 3 cabinet temp.",
"CS101 : Sys 2 inverter 4 cabinet temp.",
]
].mean(axis=1)
#计算逆变器的标准温度
df["Inverter std. temp"] = df[
[
"CS101 : Sys 1 inverter 1 cabinet temp.",
"CS101 : Sys 1 inverter 2 cabinet temp.",
"CS101 : Sys 1 inverter 3 cabinet temp.",
"CS101 : Sys 1 inverter 4 cabinet temp.",
"CS101 : Sys 1 inverter 5 cabinet temp.",
"CS101 : Sys 1 inverter 6 cabinet temp.",
"CS101 : Sys 1 inverter 7 cabinet temp.",
"CS101 : Sys 2 inverter 1 cabinet temp.",
"CS101 : Sys 2 inverter 2 cabinet temp.",
"CS101 : Sys 2 inverter 3 cabinet temp.",
"CS101 : Sys 2 inverter 4 cabinet temp.",
]
].std(axis=1)
上述代码计算了逆变器温度的均值温度与标准温度,并在DataFrame中生成新的列,df的内容如下:
CS101 : Sys 1 inverter 1 cabinet temp. | CS101 : Sys 1 inverter 1 cabinet temp. | CS101 : Sys 1 inverter 1 cabinet temp. | CS101 : Sys 1 inverter 1 cabinet temp. | CS101 : Sys 1 inverter 1 cabinet temp. | CS101 : Sys 1 inverter 1 cabinet temp. |
25 | 26 | .. | .. | .. | 28 |
22 | 23 | .. | .. | .. | 32 |
经上述处理后,Dataframe将变为:
CS101 : Sys 1 inverter 1 cabinet temp. | CS101 : Sys 1 inverter 1 cabinet temp. | CS101 : Sys 1 inverter 1 cabinet temp. | CS101 : Sys 1 inverter 1 cabinet temp. | CS101 : Sys 1 inverter 1 cabinet temp. | CS101 : Sys 1 inverter 1 cabinet temp. | Inverter avg. temp | Inverter std. temp |
25 | 26 | .. | .. | .. | 28 | (25+26+...)/6 | |
22 | 23 | .. | .. | .. | 32 | (22+23+...)/6 |
时间格式转换 + 排序
#将时间转换为Datatime格式,例如,01-02-2023 表示 2023 年 2 月 1 日)
df["Time"] = pd.to_datetime(df["Time"], dayfirst=True, errors="coerce")
#根据time列对DataFrame进行排序
df.sort_values(by="Time", axis=0, inplace=True)
#这行代码在排序后重置 DataFrame 的索引,drop=True 表示不保留旧索引列
df.reset_index(drop=True, inplace=True)
转换结果如下: