Example #1
0
def get_intersection_point(buy_x_list, buy_y_list, sell_x_list, sell_y_list, time=None):
    #calculate intersection point
    f_buy = lambda x: interp(x, buy_x_list, buy_y_list)
    f_sell = lambda x: interp(x, sell_x_list, sell_y_list)
        
    intersect_x = fsolve(lambda x : f_sell(x) - f_buy(x), 10000)
    return intersect_x, f_buy(intersect_x)
Example #2
0
def plot_price_volume(buy_prices, buy_volumes, sell_prices, sell_volumes, show_intersections=False):
    
    intersect_x = None
    intersect_y = None
    
    for i in range(0, len(buy_prices)):
        
        x_buy = [r for r in buy_volumes[i]]
        y_buy = [r for r in buy_prices[i]]
        x_sell = [r for r in sell_volumes[i]]
        y_sell = [r for r in sell_prices[i]]
        f_buy = lambda x: interp(x, x_buy, y_buy)
        f_sell = lambda x: interp(x, x_sell, y_sell)
        
        if show_intersections == True:
   
            intersect_x, intersect_y = get_intersection_point(x_buy, y_buy, x_sell, y_sell, time=str(times[i]))
            plt.plot(intersect_x, intersect_y, 'ko')
            
        plt.plot(x_buy, f_buy(x_buy), 'k-', label='Demand Curve')#, linewidth=0.2, markersize=0.1)
        plt.plot(x_sell, f_sell(x_sell), 'k--', label='Supply Curve')
        #plt.annotate(str(intersect_x[0])+ ' | ' + str(intersect_y[0]), xy=(intersect_x, intersect_y),
        #             xytext=(intersect_x-3000, intersect_y-100))
        #plt.plot(41500, 80.16, 'ro')
    plt.xlabel("MWh")
    plt.ylabel("EUR/MWh")
    plt.legend(loc='best')
    plt.ylim(-200, 2000)
    plt.yticks(arange(-200, 2000, 200.0))
    plt.grid(axis='y')
    plt.autoscale()
    plt.show()
Example #3
0
def interpolateList(x1,x2,xn,y1,y2):
    '''
    Function to interpolate between lists y1 and y2 that are located at 
    x1 and x2. Returns a new list yn at xn. Interpolation is done linear
    '''
    yn = []
    for i in range(len(y1)):
        j = interp(xn,[x1,x2],[y1[i],y2[i]])
        yn.append(j)
    
    return yn
Example #4
0
def interpolateList(x1, x2, xn, y1, y2):
    '''
    Function to interpolate between lists y1 and y2 that are located at 
    x1 and x2. Returns a new list yn at xn. Interpolation is done linear
    '''
    yn = []
    for i in range(len(y1)):
        j = interp(xn, [x1, x2], [y1[i], y2[i]])
        yn.append(j)

    return yn
Example #5
0
    def getNearest(self, FLList, FL, MA, T):
        '''
        getNearest is a function to interpolate in a CPACS engine performance map.
        '''

        def getUpLow(List, Target):
            Plus = [99999999., 0]
            Minus = [0., 0]

            for item in List:
                # Set the lower value for the interpolation of Flight Level
                if item[0] - Target > Minus[0] - Target and item[0] - Target < 0.:
                    Minus = item

                # Set the upper value for the interpolation of Flight Level
                if item[0] - Target < Plus[0] - Target and item[0] - Target > 0.:
                    Plus = item

            if List[-1][0] < Target:
                Minus = List[-2]
                Plus = List[-1]
                self.log.warning('VAMPzero SFC: Interpolation Error need to extrapolate! Target value is: %s' % Target)
                self.log.warning('VAMPzero SFC: New up: %s and low: %s' % (Plus[0], Minus[0]))

            return Plus, Minus

        FLplus, FLminus = getUpLow(FLList, FL)

        FLplusMAplus, FLplusMAminus = getUpLow(FLplus[1], MA)
        FLminusMAplus, FLminusMAminus = getUpLow(FLminus[1], MA)

        FLplusMAplusTplus, FLplusMAplusTminus = getUpLow(FLplusMAplus[1], T)
        FLplusMAminusTplus, FLplusMAminusTminus = getUpLow(FLplusMAminus[1], T)
        FLminusMAplusTplus, FLminusMAplusTminus = getUpLow(FLminusMAplus[1], T)
        FLminusMAminusTplus, FLminusMAminusTminus = getUpLow(FLminusMAminus[1], T)

        # Do the interpolations
        SFCFLplusMaplus = interp(T, [FLplusMAplusTminus[0], FLplusMAplusTplus[0]],
                                 [FLplusMAplusTminus[1], FLplusMAplusTplus[1]])
        SFCFLplusMaminus = interp(T, [FLplusMAminusTminus[0], FLplusMAminusTplus[0]],
                                  [FLplusMAminusTminus[1], FLplusMAminusTplus[1]])
        SFCFLminusMaplus = interp(T, [FLminusMAplusTminus[0], FLminusMAplusTplus[0]],
                                  [FLminusMAplusTminus[1], FLminusMAplusTplus[1]])
        SFCFLminusMaminus = interp(T, [FLminusMAminusTminus[0], FLminusMAminusTplus[0]],
                                   [FLminusMAminusTminus[1], FLminusMAminusTplus[1]])

        SFCFLplus = interp(MA, [FLplusMAminus[0], FLplusMAplus[0]], [SFCFLplusMaminus, SFCFLplusMaplus])
        SFCFLminus = interp(MA, [FLminusMAminus[0], FLminusMAplus[0]], [SFCFLminusMaminus, SFCFLminusMaplus])

        SFC = interp(FL, [FLminus[0], FLplus[0]], [SFCFLminus, SFCFLplus])
        return SFC
def main():
    class_num = 3
    vaild_ttrans = Transforms.Compose([
        # Transforms.RandomVerticalFlip(p=0.5),
        # transforms.RandomRotation(30),
        # transforms.RandomCrop(100),
        # transforms.RandomResizedCrop(112),
        # Transforms.ColorJitter(brightness=0.5),
        # transforms.RandomErasing(p=0.2, scale=(0.02, 0.03), ratio=(0.3, 0.3), value=0, ),
        Transforms.Resize((24, 24)),
        Transforms.ToTensor(),
        Transforms.Normalize((0.45, 0.448, 0.455), (0.082, 0.082, 0.082)),
    ])
    device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")  
    txt_path = '/media/omnisky/D4T/JSH/faceFenlei/eye/mbhlk_hl_0128/mix_train.txt'
    vaild_txt = '/media/omnisky/D4T/JSH/faceFenlei/eye/mbhlk_hl_0128/mix_valid.txt'
    # model
    mixnet = MixNet(input_size=(24,24), num_classes=3)

    weight_dict = torch.load("/media/omnisky/D4T/JSH/faceFenlei/Projects/hul_eye_class/weight/relabel_04_mix_SGD_mutillabel_24_24_20210302/Mixnet_epoch_49.pth")
    new_state_dict = OrderedDict()
    for k, v in weight_dict.items():
        name = k[7:]
        new_state_dict[name] = v

    mixnet.load_state_dict(new_state_dict)
    # stat(net,(3,48,48))
    mixnet.to('cuda:0')
    mixnet.eval()
    
    vaild_data = mbhk_get_signal_eye(vaild_txt,vaild_ttrans)
    valid_data_loader = DataLoader(vaild_data,batch_size=128,shuffle=False,num_workers=12)
    score_list = [] #存储预测得分
    label_list = [] #存储真实标签 
    with torch.no_grad():
        for imgs,labels,_ in valid_data_loader:
            for timg in imgs:
                test_result = mixnet(timg.cuda())
                # result = torch.max(test_result,1)[1]
                result = torch.nn.functional.softmax(test_result,dim=1)
                
                score_list.extend(result.cpu().numpy())
                label_list.extend(torch.nn.functional.one_hot(labels,num_classes=3).numpy())
    tlabel_list = np.array(label_list).reshape((-1,3))
    tscore_list = np.array(score_list).reshape((-1,3))
    # 调用sklearn,计算每个类别对应的fpr和tpr
    fpr_dict = dict()
    tpr_dict = dict()
    roc_auc_dict = dict()
    for i in range(class_num):
        fpr_dict[i],tpr_dict[i],_ = roc_curve(tlabel_list[:,i],tscore_list[:,i])
        roc_auc_dict[i] = auc(fpr_dict[i],tpr_dict[i])

    # Compute micro-average ROC curve and ROC area
    fpr_dict["micro"],tpr_dict["micro"],_ = roc_curve(tlabel_list.ravel(),tscore_list.ravel())
    roc_auc_dict["micro"] = auc(fpr_dict["micro"],tpr_dict["micro"])
    #绘制所有类别平均的roc曲线
    # macro
    # First aggregate all false positive rates
    all_fpr = np.unique(np.concatenate([fpr_dict[i] for i in range(class_num)]))
    # Then interpolate all ROC curves at this points
    mean_ptr = np.zeros_like(all_fpr)
    for i in range(class_num):
        mean_ptr += interp(all_fpr,fpr_dict[i],tpr_dict[i])
    # Finally average it and compute AUC
    mean_ptr /= class_num
    fpr_dict["macro"] = all_fpr
    tpr_dict["macro"] = mean_ptr
    roc_auc_dict["macro"] = auc(fpr_dict['macro'],tpr_dict["macro"])

    plt.figure()
    lw = 2
    plt.plot(fpr_dict["micro"], tpr_dict["micro"],
             label='micro-average ROC curve (area = {0:0.2f})'
                   ''.format(roc_auc_dict["micro"]),
             color='deeppink', linestyle=':', linewidth=4)
 
    plt.plot(fpr_dict["macro"], tpr_dict["macro"],
             label='macro-average ROC curve (area = {0:0.2f})'
                   ''.format(roc_auc_dict["macro"]),
             color='navy', linestyle=':', linewidth=4)
 
    colors = cycle(['aqua', 'darkorange', 'cornflowerblue'])
    for i, color in zip(range(class_num), colors):
        plt.plot(fpr_dict[i], tpr_dict[i], color=color, lw=lw,
                 label='ROC curve of class {0} (area = {1:0.2f})'
                       ''.format(i, roc_auc_dict[i]))
    plt.plot([0, 1], [0, 1], 'k--', lw=lw)
    plt.xlim([0.0, 1.0])
    plt.ylim([0.0, 1.05])
    plt.xlabel('False Positive Rate')
    plt.ylabel('True Positive Rate')
    plt.title('Some extension of Receiver operating characteristic to multi-class')
    plt.legend(loc="lower right")
    plt.savefig('set113_roc.jpg')
    plt.show()
def plot_RR(y_true, y_pred, classes, title=None):
    """
    :param y_true: list [0, 1, 2]
    :param y_pred: list [0, 1, 2]
    :param classes: list ["0", "1", "2"]
    :param title: roc
    :return: save roc image in path "metric/"
    
    """

    y_true = label_binarize(y_true, classes=[i for i in range(len(classes))])
    # y_pred = np.asarray(y_pred)
  
    # �����꣺�����ʣ�False Positive Rate , FPR��

    # Compute RR curve and RR area for each class
    fpr = dict()
    tpr = dict()
    pr_auc = dict()
    for i in range(len(classes)):
        fpr[i], tpr[i], _ = precision_recall_curve(y_true[:, i], y_pred[:, i])
        # temp = np.sort(fpr[i])
        fpr[i][0] = 0.0
        pr_auc[i] = auc(np.sort(fpr[i]), tpr[i])
    #
    # Compute micro-average RR curve and RR area
    fpr["micro"], tpr["micro"], _ = precision_recall_curve(y_true.ravel(), y_pred.ravel())
    fpr["micro"][0] = 0
    pr_auc["micro"] = auc(np.sort(fpr["micro"]) , tpr["micro"])

    # Compute macro-average RR curve and RR area

    # First aggregate all false positive rates
    all_fpr = np.unique(np.concatenate([fpr[i] for i in range(len(classes))]))

    # Then interpolate all RR curves at this points
    mean_tpr = np.zeros_like(all_fpr)
    for i in range(len(classes)):
        mean_tpr += interp(all_fpr, fpr[i], tpr[i])

    # Finally average it and compute AUC
    mean_tpr /= len(classes)

    fpr["macro"] = all_fpr
    tpr["macro"] = mean_tpr
    pr_auc["macro"] = auc(fpr["macro"], tpr["macro"])

    # Plot all RR curves
    lw = 2
    plt.figure()
    plt.plot(fpr["micro"], tpr["micro"],
             label='micro-average RR curve (area = {0:0.2f})'
                   ''.format(pr_auc["micro"]),
             color='deeppink', linestyle=':', linewidth=4)

    plt.plot(fpr["macro"], tpr["macro"],
             label='macro-average RR curve (area = {0:0.2f})'
                   ''.format(pr_auc["macro"]),
             color='navy', linestyle=':', linewidth=4)

    colors = cycle(['aqua', 'darkorange', 'cornflowerblue'])
    for i, color in zip(range(len(classes)), colors):
        plt.plot(fpr[i], tpr[i], color=color, lw=lw,
                 label='RR curve of class {0} (area = {1:0.2f})'
                       ''.format(classes[i], pr_auc[i]))

    plt.plot([0, 1], [0, 1], 'k--', lw=lw)
    plt.xlim([0.0, 1.0])
    plt.ylim([0.0, 1.05])
    plt.xlabel('False Positive Rate')
    plt.ylabel('True Positive Rate')
    plt.title('Some extension of Receiver operating characteristic to multi-class')
    plt.legend(loc="lower right")
    plt.grid()
    plt.savefig("metric/RR_{}.png".format(len(classes)))

    plt.show()
Example #8
0
    def getNearest(self, FLList, FL, MA, T):
        '''
        getNearest is a function to interpolate in a CPACS engine performance map.
        '''
        def getUpLow(List, Target):
            Plus = [99999999., 0]
            Minus = [0., 0]

            for item in List:
                # Set the lower value for the interpolation of Flight Level
                if item[0] - Target > Minus[0] - Target and item[
                        0] - Target < 0.:
                    Minus = item

                # Set the upper value for the interpolation of Flight Level
                if item[0] - Target < Plus[0] - Target and item[
                        0] - Target > 0.:
                    Plus = item

            if List[-1][0] < Target:
                Minus = List[-2]
                Plus = List[-1]
                self.log.warning(
                    'VAMPzero SFC: Interpolation Error need to extrapolate! Target value is: %s'
                    % Target)
                self.log.warning('VAMPzero SFC: New up: %s and low: %s' %
                                 (Plus[0], Minus[0]))

            return Plus, Minus

        FLplus, FLminus = getUpLow(FLList, FL)

        FLplusMAplus, FLplusMAminus = getUpLow(FLplus[1], MA)
        FLminusMAplus, FLminusMAminus = getUpLow(FLminus[1], MA)

        FLplusMAplusTplus, FLplusMAplusTminus = getUpLow(FLplusMAplus[1], T)
        FLplusMAminusTplus, FLplusMAminusTminus = getUpLow(FLplusMAminus[1], T)
        FLminusMAplusTplus, FLminusMAplusTminus = getUpLow(FLminusMAplus[1], T)
        FLminusMAminusTplus, FLminusMAminusTminus = getUpLow(
            FLminusMAminus[1], T)

        # Do the interpolations
        SFCFLplusMaplus = interp(T,
                                 [FLplusMAplusTminus[0], FLplusMAplusTplus[0]],
                                 [FLplusMAplusTminus[1], FLplusMAplusTplus[1]])
        SFCFLplusMaminus = interp(
            T, [FLplusMAminusTminus[0], FLplusMAminusTplus[0]],
            [FLplusMAminusTminus[1], FLplusMAminusTplus[1]])
        SFCFLminusMaplus = interp(
            T, [FLminusMAplusTminus[0], FLminusMAplusTplus[0]],
            [FLminusMAplusTminus[1], FLminusMAplusTplus[1]])
        SFCFLminusMaminus = interp(
            T, [FLminusMAminusTminus[0], FLminusMAminusTplus[0]],
            [FLminusMAminusTminus[1], FLminusMAminusTplus[1]])

        SFCFLplus = interp(MA, [FLplusMAminus[0], FLplusMAplus[0]],
                           [SFCFLplusMaminus, SFCFLplusMaplus])
        SFCFLminus = interp(MA, [FLminusMAminus[0], FLminusMAplus[0]],
                            [SFCFLminusMaminus, SFCFLminusMaplus])

        SFC = interp(FL, [FLminus[0], FLplus[0]], [SFCFLminus, SFCFLplus])
        return SFC