写一个python代码 描述:微电网是指由多个分布式电源、负载和能量储存设备等组成的小型电力系统。 为了提高微电网的稳定性和可靠性,我们需要对其进行稳定性评估。 假设我们有一些微电网的实验数据,包括电流、电压、功率、频率等特征,以及微电网的稳定性标签(0表示不稳定,1表示稳定)。 我们的目标是使用这些特征来训练一个多层神经网络模型,能够对微电网的稳定性进行分类。 要求: 从microgrid_data.cvs中读入数据,并通过代码分出测试集和训练集,其中测试集占总数据集的20%。 使用自定义函数对数据进行正规化,使得数据的每个特征均值为0,标准差为1。 利用多层神经网络(MLPClassifier)实现分类。 在准确率(accuracy)、精确率(precision)、召回率(recall)、F1值(f1_score)等指标上评估模型性能,将结果打印后,同时输出到文件中,该文件命名为Performance.txt。 使用numpy库来处理数据格式,使用scikit-learn库来进行机器学习模型训练和评估。
时间: 2024-03-25 14:39:13 浏览: 71
下面是描述的Python代码实现:
```python
import pandas as pd
import numpy as np
from sklearn.neural_network import MLPClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
# 从csv文件中读入数据
data = pd.read_csv("microgrid_data.csv")
# 提取特征和标签
X = data.iloc[:, :-1].values
y = data.iloc[:, -1].values
# 划分训练集和测试集,测试集占总数据集的20%
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 自定义函数对数据进行正规化
def normalize(X):
X_norm = (X - np.mean(X, axis=0)) / np.std(X, axis=0)
return X_norm
X_train_norm = normalize(X_train)
X_test_norm = normalize(X_test)
# 训练多层神经网络模型
mlp = MLPClassifier(hidden_layer_sizes=(100, 50), max_iter=1000, random_state=42)
mlp.fit(X_train_norm, y_train)
# 在测试集上进行预测
y_pred = mlp.predict(X_test_norm)
# 计算模型性能指标
accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred)
recall = recall_score(y_test, y_pred)
f1 = f1_score(y_test, y_pred)
# 打印模型性能指标,并将结果输出到文件Performance.txt中
with open("Performance.txt", "w") as f:
f.write("Accuracy: {:.3f}\n".format(accuracy))
f.write("Precision: {:.3f}\n".format(precision))
f.write("Recall: {:.3f}\n".format(recall))
f.write("F1 score: {:.3f}\n".format(f1))
print("Accuracy: {:.3f}".format(accuracy))
print("Precision: {:.3f}".format(precision))
print("Recall: {:.3f}".format(recall))
print("F1 score: {:.3f}".format(f1))
```
这段代码实现了对微电网稳定性数据的读取、训练集和测试集的划分、数据正规化、多层神经网络模型的训练和测试集上的预测、模型性能指标的计算和输出到文件Performance.txt中。其中,使用pandas库读取csv文件,使用numpy库进行数据处理和正规化,使用scikit-learn库中的MLPClassifier类实现多层神经网络模型的训练和预测,并使用scikit-learn库中的评估函数计算模型性能指标。
阅读全文