Skip to content

Instantly share code, notes, and snippets.

@iprocheta
Last active January 4, 2018 14:31
Show Gist options
  • Save iprocheta/6cb5de24718e44f318c1a388e5b106d8 to your computer and use it in GitHub Desktop.
Save iprocheta/6cb5de24718e44f318c1a388e5b106d8 to your computer and use it in GitHub Desktop.
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
#from sklearn.tree import DecisionTreeClassifier
import numpy as np
import sklearn.metrics as sk
from sklearn.metrics import classification_report
import itertools
import matplotlib.pyplot as plt
from sklearn.metrics import confusion_matrix
Ami_data = pd.read_csv("E:\\data\\v2\\dataset.csv",delimiter=',', encoding="utf-8-sig")
Ami_data['is_train'] = np.random.uniform(0, 1, len(Ami_data)) <= .75
features = Ami_data.columns[2:40]
features
x_Data_frame = Ami_data.iloc[:,2:40]
x_data = Ami_data[list(x_Data_frame)].values
y_Data_frame = Ami_data.iloc[:,40:43]
y_data = Ami_data[list(y_Data_frame)].values
Ami_data.head(10)
Ami_data['result'] = Ami_data[list(y_Data_frame)].idxmax(axis = 1)
Ami_data
factorized_Value = pd.factorize(Ami_data['result'])[0]
train_Data = Ami_data[:22]
test_Data = Ami_data[22:]
y = pd.factorize(train_Data['result'])[0]
ran = RandomForestClassifier(n_estimators=200)
#ran = RandomForestClassifier()
rfc = ran.fit(train_Data[features],y.ravel())
scr = ran.score(test_Data[features],factorized_Value[22:].ravel())
y_pred = ran.predict(test_Data[features])
print('Random Forest Classifier\n__________________________________')
confusion_matrix = sk.confusion_matrix(factorized_Value[22:].ravel(), y_pred)
print('Confusion Matrix: \n', confusion_matrix)
print('Accuracy: ',scr)
target_names = ['Heart Attack', 'May be heart attack', 'No heart attack']
print(classification_report(factorized_Value[22:].ravel(), y_pred, target_names=target_names))
#the error begin from here. cant plot the matrix.
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`.
"""
if normalize:
cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]
print("Normalized confusion matrix")
else:
print('Confusion matrix, without normalization')
print(cm)
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)
fmt = '.2f' if normalize else 'd'
thresh = cm.max() / 2.
for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):
plt.text(j, i, format(cm[i, j], fmt),
horizontalalignment="center",
color="white" if cm[i, j] > thresh else "black")
plt.tight_layout()
plt.ylabel('True label')
plt.xlabel('Predicted label')
# Compute confusion matrix
cnf_matrix = confusion_matrix(factorized_Value[22:].ravel(), y_pred)
np.set_printoptions(precision=2)
# Plot non-normalized confusion matrix
plt.figure()
plot_confusion_matrix(cnf_matrix, classes=class_names,
title='Confusion matrix, without normalization')
# Plot normalized confusion matrix
fig=plt.figure()
plot_confusion_matrix(cnf_matrix, classes=class_names, normalize=True,
title='Normalized confusion matrix')
plt.show()
fig.savefig('E:/plot.png')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment