Commit e23e3239 authored by Mahesha999's avatar Mahesha999

All four algos refactored.

parent c0bbd4e8
# music_genre_classification
\ No newline at end of file
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import Adam
def nn_fit_predict(X_train, y_train, X_test):
model = Sequential([
Dense(58, input_shape=(58,), activation='relu'),
Dense(58, input_shape=(58,), activation='relu'),
Dense(10, activation='softmax'),
])
model.compile(optimizer="Adam", loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(X_train, y_train, batch_size=10,epochs=100)
return model.predict(X_test)
# ANN_score=np.zeros(5,dtype=float)
# i=0
# for train_index,test_index in kf.split(X):
# X_train,X_test,y_train,y_test=X[train_index],X[test_index],Y[train_index],Y[test_index]
# ANN_score[i]=fn_ANN(X_train,X_test,y_train,y_test)
# i=i+1
# avg_ANN_score=np.sum(ANN_score)/5.0
# print(avg_ANN_score)
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
...@@ -11,10 +11,10 @@ import numpy as np ...@@ -11,10 +11,10 @@ import numpy as np
def rf_fit_predict(X_train, y_train, X_test): def rf_fit_predict(X_train, y_train, X_test):
classifier = RandomForestClassifier(max_samples=0.95, n_estimators= 3000, bootstrap=True, min_samples_split=2, min_samples_leaf=1, criterion="entropy", random_state=0) classifier = RandomForestClassifier(n_estimators= 100, criterion="entropy", random_state=0)
# classifier = ExtraTreesClassifier(max_samples=0.75, n_estimators= 3000, bootstrap=True, min_samples_split=2, min_samples_leaf=1, criterion="entropy", random_state=0) # classifier = ExtraTreesClassifier(max_samples=0.75, n_estimators= 3000, bootstrap=True, min_samples_split=2, min_samples_leaf=1, criterion="entropy", random_state=0)
classifier.fit(X_train,y_train) classifier.fit(X_train,y_train)
# print(classifier.get_params()) print("Hypperparameters: ", classifier.get_params())
return classifier.predict(X_test) return classifier.predict(X_test)
def randomized_search_fold_size_rf_fit_predict(X_train, y_train, X_test): def randomized_search_fold_size_rf_fit_predict(X_train, y_train, X_test):
......
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from util import *
from ann import *
from sklearn.metrics import confusion_matrix
from sklearn.model_selection import KFold
# def load_data():
# dataset = pd.read_csv("data/features_30_sec.csv")
# X = dataset.iloc[:, 1:59].values
# y = dataset.iloc[:, 59].values
# #importing the dataset
# from sklearn.model_selection import train_test_split
# X_train, X_test = train_test_split(X, test_size=0.25, random_state= 0)
# y_train, y_test = train_test_split(y, test_size=0.25, random_state= 0)
# #splitting our data set into training set and test set
# from sklearn.model_selection import train_test_split
# X_train, X_test = train_test_split(X, test_size=0.25, random_state= 0)
# y_train, y_test = train_test_split(y, test_size=0.25, random_state= 0)
# #feature scaling
# from sklearn.preprocessing import StandardScaler
# sc_X = StandardScaler()
# X_train = sc_X.fit_transform(X_train)
# X_test = sc_X.transform(X_test)
# return X_train, X_test, y_train, y_test
# def get_accuracy(cm):
# sum = 0
# for i in range(cm.shape[0]):
# sum = sum + cm[i][i]
# return 100*(sum/np.sum(cm))
# def fit_predict_print(fit_predict_function, X_train, y_train, X_test, y_test):
# y_pred = fit_predict_function(X_train, y_train, X_test)
# cm = confusion_matrix(y_test, y_pred)
# #print(cm)
# print(get_accuracy(cm))
X_train, X_test, y_train, y_test = load_scale_xy_with_25p_split()
X, y = load_preprocess_xy(0, True, True, True)
kf=KFold(n_splits=5)
for train_index,test_index in kf.split(X):
X_train,X_test,y_train,y_test=X[train_index],X[test_index],y[train_index],y[test_index]
fit_predict_print(nn_fit_predict,X_train,y_train,X_test,y_test)
# y_pred = rf_fit_predict(X_train, y_train, X_test)
# cm = confusion_matrix(y_test, y_pred)
# #print(cm)
# print(get_accuracy(cm))
# fit_predict_print(randomized_search_cv_rf_fit_predict, X_train, y_train, X_test, y_test)
#fit_predict_print(randomized_search_cv_rf_fit_predict, X_train, y_train, X_test, y_test)
# fit_predict_print(rf_fit_predict, X_train, y_train, X_test, y_test)
# y_pred = randomized_search_fold_size_rf_fit_predict(X_train, y_train, X_test)
pass
#fit_predict_print(nn_fit_predict, X_train, y_train, X_test, y_test)
# cm = confusion_matrix(y_test, y_pred)
# #print(cm)
# print(get_accuracy(cm))
# plt.matshow(cm)
# plt.show()
pass
from sklearn import svm
def svm_fit_predict(X_train, y_train, X_test):
model=svm.SVC(C=2,kernel='rbf') #regularization parameter, radial basis function,
model.fit(X_train,y_train)
return model.predict(X_test)
\ No newline at end of file
...@@ -22,6 +22,31 @@ def load_scale_xy_with_25p_split(): ...@@ -22,6 +22,31 @@ def load_scale_xy_with_25p_split():
return X_train, X_test, y_train, y_test return X_train, X_test, y_train, y_test
def load_preprocess_xy(split_percentage, scale_x, encode_y, dummify_y):
dataset = pd.read_csv("data/features_30_sec.csv")
X = dataset.iloc[:, 1:59].values
y = dataset.iloc[:, 59].values
if encode_y:
encoder = LabelEncoder()
y = encoder.fit_transform(y)
if scale_x:
sc_X = StandardScaler()
X = sc_X.fit_transform(X) #TODO should we scale test and train separately? Yes, but wont have much difference?
if dummify_y:
y = pd.get_dummies(y).values
if split_percentage > 0:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = split_percentage, random_state = 0)
return X_train, X_test, y_train, y_test
return X, y
def load_scale_x_encode_y(): def load_scale_x_encode_y():
dataset = pd.read_csv("data/features_30_sec.csv") dataset = pd.read_csv("data/features_30_sec.csv")
X = dataset.iloc[:, 1:59].values X = dataset.iloc[:, 1:59].values
...@@ -42,6 +67,9 @@ def get_accuracy(cm): ...@@ -42,6 +67,9 @@ def get_accuracy(cm):
def fit_predict_print(fit_predict_function, X_train, y_train, X_test, y_test): def fit_predict_print(fit_predict_function, X_train, y_train, X_test, y_test):
y_pred = fit_predict_function(X_train, y_train, X_test) y_pred = fit_predict_function(X_train, y_train, X_test)
if y_pred.dtype != y_test.dtype:
y_pred = np.argmax(y_pred,axis=1)
y_test = np.argmax(y_test,axis=1)
cm = confusion_matrix(y_test, y_pred) cm = confusion_matrix(y_test, y_pred)
#print(cm) #print(cm)
print("Accuracy: ", get_accuracy(cm)) print("Accuracy: ", get_accuracy(cm))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment