12345678910111213141516171819202122232425262728293031323334353637383940 |
- 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")
|