以下是修复后的代码:

import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler

读取数据

train_data = pd.read_csv('train.csv') test_data = pd.read_csv('test.csv')

将标签设为一维数组

train_labels = np.array(train_data['label']) test_labels = np.array(test_data['label'])

将数据缩放到标准正态分布

scaler = StandardScaler().fit(train_data.iloc[:, :-1].values) train_data.iloc[:, :-1] = scaler.transform(train_data.iloc[:, :-1].values) test_data.iloc[:, :-1] = scaler.transform(test_data.iloc[:, :-1].values)

将数据转换为张量(Tensor)形式

train_data = np.reshape(train_data.values, (train_data.shape[0], 1, train_data.shape[1])) test_data = np.reshape(test_data.values, (test_data.shape[0], 1, test_data.shape[1]))

分割训练集和验证集

train_x, val_x, train_y, val_y = train_test_split(train_data, train_labels, test_size=0.2, random_state=42)

模型构建和训练

from keras.models import Sequential from keras.layers import LSTM, Dense, Dropout

构建模型

model = Sequential() model.add(LSTM(128, input_shape=(1, 187), return_sequences=True)) model.add(Dropout(0.5)) model.add(LSTM(64)) model.add(Dropout(0.5)) model.add(Dense(1, activation='sigmoid'))

编译模型

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

训练模型

history = model.fit(train_x, train_y, epochs=50, batch_size=128, validation_data=(val_x, val_y))

模型预测和ROC曲线绘制

from sklearn.metrics import roc_curve, auc

对测试集进行预测

prediction = model.predict(test_data)

计算ROC曲线和AUC

fpr, tpr, thresholds = roc_curve(test_labels, prediction) roc_auc = auc(fpr, tpr)

绘制ROC曲线

import matplotlib.pyplot as plt plt.title('Receiver Operating Characteristic') plt.plot(fpr, tpr, 'b', label='AUC = %0.2f'% roc_auc) plt.legend(loc='lower right') plt.plot([0,1],[0,1],'r--') plt.xlim([-0.1,1.0]) plt.ylim([-0.1,1.01]) plt.ylabel('True Positive Rate') plt.xlabel('False Positive Rate') plt.show()

评估模型精度

prediction[prediction>=0.5] = 1 prediction[prediction<0.5] = 0 accuracy = np.mean(prediction == test_labels) print('Accuracy: {:.2f}%'.format(accuracy*100))

请修复以下代码因为testAcsv中只有两列数据以下代码会在运行test_labels = nparraytest_datalabel-1时报错全部的代码为:import numpy as npimport pandas as pdfrom sklearnmodel_selection import train_test_splitfrom sklearnpreprocessing import

原文地址: https://www.cveoy.top/t/topic/baXj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录