← back to Handbag Authentication

handbag_data/github_datasets/Luxury-Handbag-Price-Prediction/Codes/asam_pred.py

113 lines

#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Created on Sun Nov 18 20:00:05 2018

@author: abinaya
"""

import numpy as np
import pandas as pd
import math


def gauss_approx(xin, yin, gauss_par, NUMRULES):
    
    num=0.0
    dengs = 0.0
    
    xmdgs = np.zeros(NUMRULES)
    ymdgs = np.zeros(NUMRULES)
    a = np.zeros(NUMRULES)

    for i in range(NUMRULES):
        mean_x = gauss_par[i,0]
        mean_y = gauss_par[i,1]
        disp_x = gauss_par[i,2]
        disp_y = gauss_par[i,3]
        centroid = gauss_par[i,4]
        volume = gauss_par[i,5]
        			                     
        xmdgs[i] = (xin- mean_x) / disp_x                       
        ymdgs[i] = (yin- mean_y) / disp_y                                
        a[i] = np.exp(-(xmdgs[i] * xmdgs[i]) - (ymdgs[i] * ymdgs[i])) 
        av = a[i] * volume              
        dengs = dengs + av			  
        num = num + av * centroid		  
    
    if (dengs != 0.0): 
        return num/dengs
    else:
        return 0.0

def cauchy_approx(xin, yin, gauss_par, NUMRULES):
    denchy = 0.0
    num = 0.0
    xmdchy = np.zeros(NUMRULES)
    ymdchy = np.zeros(NUMRULES)
    a = np.zeros(NUMRULES)
    
    for i in range(NUMRULES): 
        mean_x = gauss_par[i,0]
        mean_y = gauss_par[i,1]
        disp_x = gauss_par[i,2]
        disp_y = gauss_par[i,3]
        centroid = gauss_par[i,4]
        volume = gauss_par[i,5]
        
        xmdchy[i] = (xin - mean_x) / disp_x
        ymdchy[i] = (yin - mean_y) / disp_y
        cx = 1.0/(1.0 + xmdchy[i]*xmdchy[i])
        cy = 1.0/(1.0 + ymdchy[i]*ymdchy[i])

        a[i] = cx * cy;
        av = a[i] * volume
        denchy = denchy+av;
        num = num + av * centroid
        
    if (denchy != 0.0):
        return num/denchy;
    else:
        return 0.0;


def sinc_approx(xin, yin, gauss_par, NUMRULES): 
    num=0.0
    av=0
    num=0
    densinc = 0
    xmdsinc = np.zeros(NUMRULES)
    ymdsinc = np.zeros(NUMRULES)
    a = np.zeros(NUMRULES)

    for i in range(NUMRULES):
        mean_x = gauss_par[i,0]
        mean_y = gauss_par[i,1]
        disp_x = gauss_par[i,2]
        disp_y = gauss_par[i,3]
        centroid = gauss_par[i,4]
        volume = gauss_par[i,5]

        xmdsinc[i] = (xin - mean_x)/disp_x
        ymdsinc[i] = (yin - mean_y)/disp_y
		  
        if (xmdsinc[i] == 0.0):
            sx = 1.0;
        else:
            sx = math.sin(xmdsinc[i])/xmdsinc[i]; 
        if(ymdsinc[i] == 0.0):
            sy = 1.0;
        else:
            sy = math.sin(ymdsinc[i])/ymdsinc[i];
    
        a[i] = sx * sy;
        av = a[i] * volume
        densinc = densinc + av
        num = num + av * centroid
        
    if (densinc != 0.0):
        return num/densinc
    else:
        return 0.0