Advertisement
Guest User

Untitled

a guest
Mar 24th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.71 KB | None | 0 0
  1. import pandas
  2. from keras.models import Sequential
  3. from keras.layers import Dense
  4. from keras.utils import np_utils
  5. from sklearn.preprocessing import LabelEncoder
  6. from sklearn.model_selection import train_test_split
  7. from sklearn import preprocessing
  8. from keras.layers import Dropout
  9. from keras import optimizers
  10. import keras
  11. from keras.models import Sequential
  12. from keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPooling2D
  13. from sklearn.metrics import classification_report
  14. from keras.utils import to_categorical
  15. from tensorflow.python.client import device_lib
  16.  
  17. mode = 0
  18. test = "test"
  19. train = "train"
  20. validate = "validate"
  21. pad = True
  22. standardise = True
  23. convolutional = True
  24.  
  25. input_train_file = "C:/Users/Aaron/Desktop/audio/" + train + ("pad" if pad else '') + ".csv"
  26. input_test_file = "C:/Users/Aaron/Desktop/audio/" + test + ".csv"
  27. input_validate_file = "C:/Users/Aaron/Desktop/audio/" + validate + ".csv"
  28.  
  29. dataframe = pandas.read_csv(input_train_file, header=None)
  30. dataset = dataframe.values
  31. X = dataset[:, 1:len(dataframe.columns) - 1].astype(float)
  32.  
  33. if standardise:
  34.     scaler = preprocessing.StandardScaler().fit(X)
  35.     X = scaler.transform(X)
  36. else:
  37.     X = preprocessing.normalize(X)
  38.  
  39. if convolutional:
  40.     X = X.reshape([X.shape[0], int(X.shape[1] / 13), 13, 1])
  41.  
  42. Y = dataset[:, len(dataframe.columns) - 1]
  43.  
  44. X, X_test, Y, Y_test = train_test_split(X, Y, test_size=0.2, random_state=42)
  45.  
  46. # dataframe = pandas.read_csv(input_test_file, header=None)
  47. # dataset = dataframe.values
  48. # X_test = dataset[:, 0:len(dataframe.columns) - 1].astype(float)
  49. # Y_test = dataset[:, len(dataframe.columns) - 1]
  50. #
  51. # dataframe = pandas.read_csv(input_validate_file, header=None)
  52. # dataset = dataframe.values
  53. # X_validate = dataset[:, 0:len(dataframe.columns) - 1].astype(float)
  54. # Y_validate = dataset[:, len(dataframe.columns) - 1]
  55.  
  56. encoder = LabelEncoder()
  57. encoder.fit(Y)
  58. encoded_Y = encoder.transform(Y)
  59. dummy_y = np_utils.to_categorical(encoded_Y)
  60.  
  61. encoder = LabelEncoder()
  62. encoder.fit(Y_test)
  63. encoded_Y = encoder.transform(Y_test)
  64. dummy_y_test = np_utils.to_categorical(encoded_Y)
  65.  
  66. # encoder = LabelEncoder()
  67. # encoder.fit(Y_validate)
  68. # encoded_Y = encoder.transform(Y_validate)
  69. # dummy_y_validate = np_utils.to_categorical(encoded_Y)
  70.  
  71.  
  72. def baseline_model(X):
  73.     # create model
  74.     model = Sequential()
  75.     model.add(Dense(200, input_dim=X.shape[1], activation='relu'))
  76.     model.add(Dropout(0.20))
  77.     model.add(Dense(100, activation='relu'))
  78.     model.add(Dropout(0.20))
  79.     model.add(Dense(3, activation='softmax'))
  80.     # Compile model
  81.     adam = optimizers.Adam()
  82.     model.compile(loss='categorical_crossentropy', optimizer=adam, metrics=['accuracy'])
  83.     return model
  84.  
  85.  
  86. def conv_model(X):
  87.     model = Sequential()
  88.     model.add(Conv2D(128, kernel_size=(3, 3), activation='relu', input_shape=(X.shape[1], X.shape[2], X.shape[3])))
  89.     model.add(MaxPooling2D(pool_size=(3, 3)))
  90.     # model.add(Dropout(0.25))
  91.     model.add(Flatten())
  92.     model.add(Dense(128, activation='relu'))
  93.     # model.add(Dropout(0.25))
  94.     model.add(Dense(3, activation='softmax'))
  95.     model.compile(loss=keras.losses.categorical_crossentropy,
  96.                   optimizer=keras.optimizers.Adadelta(),
  97.                   metrics=['accuracy'])
  98.     return model
  99.  
  100.  
  101. model = conv_model(X) if convolutional else baseline_model(X)
  102. model.fit(X, dummy_y, validation_data=(X_test, dummy_y_test), epochs=40, batch_size=256)
  103.  
  104. score = model.evaluate(X_test, dummy_y_test, verbose=False)
  105. print(model.metrics_names)
  106. print('Test score: ', score[0])
  107. print('Test accuracy: ', score[1])
  108. y_pred = model.predict_classes(X_test)
  109. print(classification_report(dummy_y_test, y_pred))
  110.  
  111. model.save("C:/Users/Aaron/Desktop/audio/model.dat")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement