Question:
Training and testing a neural network on real data
import pandas as pd
from sklearn.model_selection import train_test_split
import tensorflow as tf
from sklearn.preprocessing import MinMaxScaler
from keras.models import Sequential
from keras.layers import Dense
# read_csv the data
data_W = pd.read_csv('./winequality-red.csv',sep=';')[:100]
data_W[:15]
# pre-process the data,max_min normalization
scale = MinMaxScaler()
train = scale.fit_transform(data_W.values[:,:-1])
test = scale.fit_transform(data_W.values[:,-1].reshape(-1,1))
# split into 50% training dataset and 50% testing dataset quality is over label, else are our features
X_train, X_test, Y_train, Y_test = train_test_split(train,test,test_size=0.5,random_state=0)
# establish BP model
model = Sequential()
model.add(Dense(30,activation='sigmoid',input_shape=(X_train.shape[1],)))
model.add(Dense(1))
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=1e-4), loss='mse')
model.summary() # 展示模型结构
model.fit(X_train, Y_train, epochs=10, batch_size=1, validation_data=(X_test , Y_test), verbose=2,
shuffle=False)
# make predictions on test set and inverse transform the data
y_pred = model.predict(X_test)
y_pred_inv = scale.inverse_transform(y_pred.reshape(-1, 1))
Y_test_inv = scale.inverse_transform(Y_test)
Y_test_inv[:5],y_pred_inv[:5]
model.evaluate(X_test,Y_test)