Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pandas as pd
- from sklearn.metrics import classification_report
- from imblearn.over_sampling import SMOTE
- import numpy as np
- from sklearn.preprocessing import StandardScaler
- from sklearn.model_selection import train_test_split
- import matplotlib.pyplot as plt
- import itertools
- from xgboost.sklearn import XGBClassifier
- from sklearn import metrics
- AllData = pd.read_csv('all_data.csv')
- CleanData = AllData.dropna()
- CleanData = CleanData.reset_index(drop=True)
- CleanData = CleanData.drop('mdate', axis = 1)
- CleanData = CleanData.drop('pmkt', axis = 1)
- X = CleanData.drop('Y', axis = 1)
- y = CleanData['Y']
- y = y.astype(int)
- X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=80)
- sc = StandardScaler()
- sc.fit(X_train)
- X_test = sc.transform(X_test)
- X_train = sc.transform(X_train)
- sm = SMOTE( kind='borderline1')
- X_train, y_train = sm.fit_sample(X_train, y_train)
- xgb = XGBClassifier(max_depth=10, n_estimators=200)
- xgb.fit(X_train, y_train)
- def plot_confusion_matrix(cm, classes,
- normalize=False,
- title='Confusion matrix',
- cmap=plt.cm.Blues):
- """
- This function prints and plots the confusion matrix.
- Normalization can be applied by setting `normalize=True`.
- """
- plt.figure(figsize = (5, 5))
- plt.imshow(cm, interpolation='nearest', cmap=cmap)
- plt.title(title)
- plt.colorbar()
- tick_marks = np.arange(len(classes))
- plt.xticks(tick_marks, classes, rotation=45)
- plt.yticks(tick_marks, classes)
- if normalize:
- cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]
- print("Normalized confusion matrix")
- else:
- print('Confusion matrix, without normalization')
- print(cm)
- thresh = cm.max() / 2.
- for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):
- plt.text(j, i, cm[i, j],
- horizontalalignment="center",
- color="white" if cm[i, j] > thresh else "black")
- plt.tight_layout()
- plt.ylabel('True label')
- plt.xlabel('Predicted label')
- cnf_matrix = metrics.confusion_matrix(y_test,xgb.predict(X_test))
- target_names = ['0', '1']
- plot_confusion_matrix(cnf_matrix, classes=target_names)
- plt.show()
- print(classification_report(y_test, xgb.predict(X_test)))
- accuracy = metrics.accuracy_score(y_test, xgb.predict(X_test))
- print(accuracy)
Add Comment
Please, Sign In to add comment