def Eval(self, test): Y_pred = self.PredictLabel(test.X,0,True) recall_pos = [] recall_neg = [] precision_pos = [] precision_neg =[] ev = Eval(Y_pred, test.Y) accy = ev.Accuracy() #print(ev.EvalRecall()) #print(ev.EvalPrecision()) probThresh = [0.2,0.4,0.6,0.8] for i in range(len(probThresh)): pred = self.PredictLabel(test.X,probThresh[i],False) ev = Eval(pred, test.Y) #ev.EvalRecall() #print('Threshold Value %f'%probThresh[i]) recallP,recallN=ev.EvalRecall() recall_pos.append(recallP) recall_neg.append(recallN) precisionP,precisionN=ev.EvalPrecision() precision_pos.append(precisionP) precision_neg.append(precisionN) plt.pause(0.1) plt.xlabel('Recall') plt.ylabel('Precision') fig=plt.figure() plt.title('For +1 Label') plt.plot(recall_pos,precision_pos,'r') fig.savefig('Pos_class.png') plt.title('For -1 Label') fig1=plt.figure(1) plt.plot(recall_neg,precision_neg,'b') fig1.savefig('Neg_class.png') return accy
def Eval(self, test): Y_pred = self.PredictLabel(test.X) # Y_pred = self.PredictLabel(test,len(test)) ev = Eval(Y_pred, test.Y) # ev = Eval(Y_pred.pred, test.Y) return [ev.Accuracy(), ev.EvalPrecition(), ev.EvalRecall()]
''' print("Log Probability of first 10 review") nb = NaiveBayes(traindata, float(sys.argv[2])) for i in range(10): res = nb.PredictProb(testdata, i) print(i, res) print("Predict Label with Threshold") precition = [] recall = [] for i in np.arange(0.1, 1.0, 0.1): pred = nb.PredictLabelTh(testdata, i) ev = Eval(pred, testdata.Y) precition.append(ev.EvalPrecition()) recall.append(ev.EvalRecall()) # ev = Eval(Y_pred.pred, test.Y) print('Threshold:', i, ' Accuracy: ', ev.Accuracy(), ' Precition: ', ev.EvalPrecition(), ' Recall: ', ev.EvalRecall()) ''' # Create some mock data t = recall data1 = precition data2 = np.arange(0.05, 1.0, 0.05) fig, ax1 = plt.subplots() color = 'tab:blue' ax1.set_xlabel('Recall') ax1.set_ylabel('Precition', color=color) ax1.plot(t, data1, color=color) ax1.tick_params(axis='y', labelcolor=color) ax2 = ax1.twinx()