import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from keras.models import Sequential from keras.layers import LSTM, Dense, Dropout, Attention # 数据预处理 data = pd.read_csv("data.csv") data = data.dropna() data = data.astype("float32") # 归一化 scaler = StandardScaler() data = scaler.fit_transform(data) # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(data, labels, test_size=0.2) # 定义模型 model = Sequential() model.add(LSTM(128, input_shape=(data.shape[1],))) model.add(Attention()) model.add(Dropout(0.2)) model.add(Dense(3, activation="softmax")) # 编译模型 model.compile(loss="categorical_crossentropy", optimizer="adam", metrics=["accuracy"]) # 训练模型 model.fit(X_train, y_train, epochs=100) # 评估模型 score = model.evaluate(X_test, y_test, verbose=0) print("Test loss:", score[0]) print("Test accuracy:", score[1]) # 保存模型 model.save("model.h5")