现我对温度,时间等对材料硬度影响运用卷积神经网络进行探究,通过学习与询问进行了代码的初步编入。目前数据除第一行标题外,有400行20列,其中前19列作为X,最后一列作为Y。以此进行输入但遇到了问题,附上程序希望得到解答,并希望优化最后的预测输出,最好能有图表。由于本人对卷积神经网络了解不多,希望解答能尽可能详尽可靠,最后输出能有可视图表。
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler
from keras.models import Sequential
from keras.layers import Conv1D, MaxPooling1D, Flatten, Dense
# 1. 数据清洗
data = pd.read_csv('zhendaorushuju.csv',encoding='gb18030')
# 2. 特征选择
features = ['Nb%','Ti%','AL%','V%','Cr%','Mo%','C%','Mn%','P%','Ni%', 'Cu%','Si%','S%','奥氏体化温度0℃','油冷时间0min', '保温时间0min','上下窜动时间0min','回火0退火温度0℃','保温时间0min']
X = data[features]
y = data['硬度']
# 3. 特征缩放
scaler = MinMaxScaler()
X = scaler.fit_transform(X)
# 4. 数据划分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=400)
# 5. 序列化数据
X_train = np.array([X_train])
X_test = np.array([X_test])
# 构建卷积神经网络模型
model = Sequential()
model.add(Conv1D(filters=33, kernel_size=1, activation='relu', input_shape=(X_train.shape[1], X_train.shape[2])))
model.add(MaxPooling1D(pool_size=2))
model.add(Flatten())
model.add(Dense(100, activation='relu'))
model.add(Dense(1))
# 编译模型
model.compile(optimizer='adam', loss='mse')
# 训练模型
model.fit(X_train, y_train, epochs=1, batch_size=33, verbose=0)
# 评估模型
score = model.evaluate(X_test, y_test, verbose=0)
print('Test loss:', score)
# 使用模型进行预测
y_pred = model.predict(X_test)