多因素卷积神经网络要点

2023-04-09  本文已影响0人  Benfrost

数据预处理

import pandas as pd

from sklearn.preprocessing import StandardScaler

from sklearn.preprocessing import OneHotEncoder

加载数据

data = pd.read_csv('data.csv')

提取自变量和应变量

X = data.iloc[:, :-1].values

Y = data.iloc[:, -1].values

标准化处理

scaler = StandardScaler()

X = scaler.fit_transform(X)

OneHot编码

encoder = OneHotEncoder()

Y = encoder.fit_transform(Y.reshape(-1, 1)).toarray()

划分数据集

from sklearn.model_selection import train_test_split

X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=0)

建立卷积神经网络模型

from keras.models import Sequential

from keras.layers import Conv1D, MaxPooling1D, Flatten, Dense

model = Sequential()

添加卷积层

model.add(Conv1D(filters=64, kernel_size=3, activation='relu', input_shape=(3, 1)))

添加池化层

model.add(MaxPooling1D(pool_size=2))

添加全连接层

model.add(Flatten())

model.add(Dense(units=64, activation='relu'))

添加输出层

model.add(Dense(units=3, activation='softmax'))

编译模型

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

训练模型

model.fit(X_train.reshape(-1, 3, 1), Y_train, batch_size=32, epochs=50, verbose=1)

评估模型

score = model.evaluate(X_test.reshape(-1, 3, 1), Y_test, verbose=0)

print('Test loss:', score[0])

print('Test accuracy:', score[1])

模型优化

调整神经网络的层数、神经元个数、激活函数等超参数

model = Sequential()

model.add(Conv1D(filters=64, kernel_size=3, activation='relu', input_shape=(3, 1)))

model.add(Conv1D(filters=64, kernel_size=3, activation='relu'))

model.add(MaxPooling1D(pool_size=2))

model.add(Flatten())

model.add(Dense(units=128, activation='relu'))

model.add(Dense(units=64, activation='relu'))

model.add(Dense(units=3, activation='softmax'))

调整优化器、学习率、批大小等训练参数

from keras.optimizers import Adam

model.compile(optimizer=Adam(lr=0.001), loss='categorical_crossentropy', metrics=['accuracy'])

model.fit(X_train.reshape(-1, 3, 1), Y_train, batch_size=64, epochs=100, verbose=1)

输入新的自变量,输出对应的应变量

import numpy as np

X_new = np.array([[3, 30, 5]])

X_new = scaler.transform(X_new)

Y_pred = model.predict(X_new.reshape(-1, 3, 1))

print(Y_pred)

上一篇 下一篇

猜你喜欢

热点阅读