model.py 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import numpy as np
  2. import pandas as pd
  3. from sklearn.model_selection import train_test_split
  4. from sklearn.preprocessing import StandardScaler
  5. from keras.models import Sequential
  6. from keras.layers import LSTM, Dense, Dropout, Attention
  7. # 数据预处理
  8. data = pd.read_csv("data.csv")
  9. data = data.dropna()
  10. data = data.astype("float32")
  11. # 归一化
  12. scaler = StandardScaler()
  13. data = scaler.fit_transform(data)
  14. # 划分训练集和测试集
  15. X_train, X_test, y_train, y_test = train_test_split(data, labels, test_size=0.2)
  16. # 定义模型
  17. model = Sequential()
  18. model.add(LSTM(128, input_shape=(data.shape[1],)))
  19. model.add(Attention())
  20. model.add(Dropout(0.2))
  21. model.add(Dense(3, activation="softmax"))
  22. # 编译模型
  23. model.compile(loss="categorical_crossentropy", optimizer="adam", metrics=["accuracy"])
  24. # 训练模型
  25. model.fit(X_train, y_train, epochs=100)
  26. # 评估模型
  27. score = model.evaluate(X_test, y_test, verbose=0)
  28. print("Test loss:", score[0])
  29. print("Test accuracy:", score[1])
  30. # 保存模型
  31. model.save("model.h5")