import pandas as pd
    from pandas import Series,DataFrame

    from sklearn import svm
    from sklearn.model_selection import train_test_split
    from sklearn.metrics import accuracy_score
    from sklearn.preprocessing import StandardScaler
    import numpy as np
    import matplotlib.pyplot as plt
    import tensorflow as tf
    from sklearn.datasets import load_wine

    wine = load_wine()

    data = pd.DataFrame(wine.data, columns=wine.feature_names)
    pd.set_option('display.max_columns', 1000)
    print(data)
    data_Y = data['hue']
    data_X = data.drop("hue", axis=1)
    x_train, x_test, y_train, y_test = train_test_split(data_X, data_Y, shuffle=False, test_size=80)

    y_train = np.array(y_train, dtype = np.float32)
    y_test = np.array(y_test, dtype = np.float32)

    model = tf.keras.models.Sequential()

    model.add(tf.keras.layers.Dense(300, activation='relu', input_shape=(12,)))
    model.add(tf.keras.layers.Dropout(0.1))

    model.add(tf.keras.layers.Dense(300, activation='relu'))
    model.add(tf.keras.layers.Dropout(0.0001))

    model.add(tf.keras.layers.Dense(300, activation='relu'))
    model.add(tf.keras.layers.Dropout(0.0001))

    model.add(tf.keras.layers.Dense(300, activation='relu'))
    model.add(tf.keras.layers.Dropout(0.1))

    model.add(tf.keras.layers.Dense(1))

    model.summary()
    print("\n")

    model.compile(loss='mean_squared_error', optimizer='adam', metrics=['mse'])

    history = model.fit(x_train, y_train, batch_size=500, epochs=100, verbose=1, validation_data=(x_test, y_test))

    score = model.evaluate(x_test, y_test, verbose=1)
    print("\n")
    print("Test Loss:",score[0])
    print("Test Accuracy:",score[1])

    plt.plot(history.history['mse'], label="Error for Training", lw=0.5)
    plt.plot(history.history['val_mse'], label="Error for Validation", lw=0.5)
    plt.xlabel('Epoch')
    plt.ylabel('Error')
    plt.legend(loc='lower center', bbox_to_anchor=(.5, 1.0), ncol=3)
    plt.savefig("error.pdf")
    plt.close()

    y_pred = model.predict(x_test)

    plt.plot(y_test, lw=0.5, marker='.')
    plt.plot(y_pred, lw=0.5, marker='.')
    plt.xlabel('Number of Data')
    plt.ylabel('Objective Variable')
    plt.ylim(0,2)
    plt.legend(['Testing','Estimate'], loc='lower center', bbox_to_anchor=(.5, 1.0), ncol=2)
    plt.savefig("test.pdf")
    plt.close()