FINLAB

09

Oct 7th, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.45 KB | None | 0 0
  1. import pandas as pd
  2. from sklearn.metrics import classification_report
  3. from imblearn.over_sampling import SMOTE
  4. import numpy as np
  5. from sklearn.preprocessing import StandardScaler
  6. from sklearn.model_selection import train_test_split
  7. import matplotlib.pyplot as plt
  8. import itertools
  9. from xgboost.sklearn import XGBClassifier
  10. from sklearn import metrics
  11.  
  12. AllData = pd.read_csv('all_data.csv')
  13.  
  14.  
  15. CleanData = AllData.dropna()
  16. CleanData = CleanData.reset_index(drop=True)
  17. CleanData = CleanData.drop('mdate', axis = 1)
  18. CleanData = CleanData.drop('pmkt', axis = 1)
  19.  
  20. X = CleanData.drop('Y', axis = 1)
  21.  
  22. y = CleanData['Y']
  23. y = y.astype(int)
  24.  
  25.  
  26.  
  27. X_train, X_test, y_train, y_test =  train_test_split(X, y, test_size=0.3, random_state=80)
  28.  
  29.  
  30.  
  31. sc = StandardScaler()
  32. sc.fit(X_train)
  33. X_test = sc.transform(X_test)
  34. X_train = sc.transform(X_train)
  35.  
  36. sm = SMOTE( kind='borderline1')
  37. X_train, y_train = sm.fit_sample(X_train, y_train)
  38.  
  39. xgb = XGBClassifier(max_depth=10, n_estimators=200)
  40. xgb.fit(X_train, y_train)
  41.  
  42.  
  43.  
  44.  
  45.  
  46. def plot_confusion_matrix(cm, classes,
  47.                           normalize=False,
  48.                           title='Confusion matrix',
  49.                           cmap=plt.cm.Blues):
  50.     """
  51.    This function prints and plots the confusion matrix.
  52.    Normalization can be applied by setting `normalize=True`.
  53.    """
  54.     plt.figure(figsize = (5, 5))
  55.     plt.imshow(cm, interpolation='nearest', cmap=cmap)
  56.     plt.title(title)
  57.     plt.colorbar()
  58.     tick_marks = np.arange(len(classes))
  59.     plt.xticks(tick_marks, classes, rotation=45)
  60.     plt.yticks(tick_marks, classes)
  61.  
  62.     if normalize:
  63.         cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]
  64.         print("Normalized confusion matrix")
  65.     else:
  66.         print('Confusion matrix, without normalization')
  67.  
  68.     print(cm)
  69.  
  70.     thresh = cm.max() / 2.
  71.     for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):
  72.         plt.text(j, i, cm[i, j],
  73.                  horizontalalignment="center",
  74.                  color="white" if cm[i, j] > thresh else "black")
  75.  
  76.     plt.tight_layout()
  77.     plt.ylabel('True label')
  78.     plt.xlabel('Predicted label')
  79.    
  80.  
  81. cnf_matrix = metrics.confusion_matrix(y_test,xgb.predict(X_test))
  82. target_names = ['0', '1']
  83. plot_confusion_matrix(cnf_matrix, classes=target_names)
  84.        
  85. plt.show()
  86. print(classification_report(y_test, xgb.predict(X_test)))
  87. accuracy = metrics.accuracy_score(y_test, xgb.predict(X_test))
  88. print(accuracy)
Add Comment
Please, Sign In to add comment