写一个python代码 描述:微电网是指由多个分布式电源、负载和能量储存设备等组成的小型电力系统。 为了提高微电网的稳定性和可靠性,我们需要对其进行稳定性评估。 假设我们有一些微电网的实验数据,包括电流、电压、功率、频率等特征,以及微电网的稳定性标签(0表示不稳定,1表示稳定)。 我们的目标是使用这些特征来训练一个多层神经网络模型,能够对微电网的稳定性进行分类。 要求: 从battery.txt文件中读入数据,并通过代码分出测试集和训练集,其中测试集占总数据集的20%。 使用自定义函数对数据进行正规化,使得数据的每个特征均值为0,标准差为1。 利用多层神经网络(MLPClassifier)实现分类。 在准确率(accuracy)、精确率(precision)、召回率(recall)、F1值(f1_score)等指标上评估模型性能,将结果打印后,同时输出到文件中,该文件命名为Performance.txt。 使用numpy库来处理数据格式,使用scikit-learn库来进行机器学习模型训练和评估。
时间: 2024-03-25 10:37:05 浏览: 51
以下是符合您要求的 Python 代码,其中文件路径和文件名需要根据实际情况进行修改:
```python
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPClassifier
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
# 读入数据
data = np.loadtxt('battery.txt', delimiter=',', skiprows=1)
# 分出测试集和训练集
X_train, X_test, y_train, y_test = train_test_split(data[:, :-1], data[:, -1], test_size=0.2, random_state=1)
# 定义自定义函数对数据进行正规化
def normalize(X):
mu = np.mean(X, axis=0)
std = np.std(X, axis=0)
return (X - mu) / std
# 对训练集和测试集进行正规化
X_train_norm = normalize(X_train)
X_test_norm = normalize(X_test)
# 定义多层神经网络模型
mlp = MLPClassifier(hidden_layer_sizes=(10, 10, 10), max_iter=1000)
# 训练模型
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)
# 打印模型性能指标
print('Accuracy: {:.4f}'.format(accuracy))
print('Precision: {:.4f}'.format(precision))
print('Recall: {:.4f}'.format(recall))
print('F1 Score: {:.4f}'.format(f1))
# 输出到文件中
with open('Performance.txt', 'w') as f:
f.write('Accuracy: {:.4f}\n'.format(accuracy))
f.write('Precision: {:.4f}\n'.format(precision))
f.write('Recall: {:.4f}\n'.format(recall))
f.write('F1 Score: {:.4f}\n'.format(f1))
```
注意:在运行代码之前需要确保已经安装了 numpy 和 scikit-learn 库。
阅读全文