← back to Handbag Authentication

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

125 lines

#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Created on Sun Nov 18 21:39:06 2018

@author: abinaya
"""

import numpy as np
import pandas as pd
from os import listdir
from asam_pred import gauss_approx, cauchy_approx, sinc_approx
from sklearn.metrics import r2_score
from sklearn.linear_model import LinearRegression, LogisticRegression, Ridge, Lasso
from sklearn.metrics import mean_squared_error
from sklearn.svm import SVR

### continuous fuzzy

results_path = "/Users/abinaya/USC/Studies/NLCI/Project/ASAM-2D-Results/"
results_folders = listdir(results_path)

#results_folders = ['cont_strap_length_volume','cont_num_components_num_colors','cont_strap_length_num_components',
                  #'cont_num_components_volume','cont_num_compartments_num_components']

results_folders = ['cont_num_components_volume']

df_train_approx = pd.DataFrame()    
df_test_approx = pd.DataFrame()    

for folder in results_folders:
    folder = folder[5:]
    print "----------", folder
    
    gauss_par = np.genfromtxt("/Users/abinaya/USC/Studies/NLCI/Project/ASAM-2D-Results/cont_" + folder + "/Gauss/Parameters.par")
    cauchy_par = np.genfromtxt("/Users/abinaya/USC/Studies/NLCI/Project/ASAM-2D-Results/cont_" + folder + "/Cauchy/Parameters.par")
    sinc_par = np.genfromtxt("/Users/abinaya/USC/Studies/NLCI/Project/ASAM-2D-Results/cont_" + folder + "/Sinc/Parameters.par")
    
    
    train_df = pd.read_csv("/Users/abinaya/USC/Studies/NLCI/Project/Data/continuous_data/train_cont_" + folder + ".csv", header=None)
    test_df = pd.read_csv("/Users/abinaya/USC/Studies/NLCI/Project/Data/continuous_data/test_cont_" + folder + ".csv", header=None)
    
    #print train_df.describe()
    #print test_df.describe()
    
    gauss_train_pred = []
    for i in range(0,train_df.shape[0]):
        gauss_train_pred.append(gauss_approx(train_df.iloc[i,0], train_df.iloc[i,1], gauss_par, gauss_par.shape[0]))
    
    cauchy_train_pred = []
    for i in range(0,train_df.shape[0]):
        cauchy_train_pred.append(cauchy_approx(train_df.iloc[i,0], train_df.iloc[i,1], cauchy_par, cauchy_par.shape[0]))
    
    sinc_train_pred = []
    for i in range(0,train_df.shape[0]):
        sinc_train_pred.append(sinc_approx(train_df.iloc[i,0], train_df.iloc[i,1], sinc_par, sinc_par.shape[0]))
    
    
    gauss_test_pred = []
    for i in range(0,test_df.shape[0]):
        gauss_test_pred.append(gauss_approx(test_df.iloc[i,0], test_df.iloc[i,1], gauss_par, gauss_par.shape[0]))
    
    cauchy_test_pred = []
    for i in range(0,test_df.shape[0]):
        cauchy_test_pred.append(cauchy_approx(test_df.iloc[i,0], test_df.iloc[i,1], cauchy_par, cauchy_par.shape[0]))
    
    sinc_test_pred = []
    for i in range(0,test_df.shape[0]):
        sinc_test_pred.append(sinc_approx(test_df.iloc[i,0], test_df.iloc[i,1], sinc_par, sinc_par.shape[0]))
      
    '''
    mse_train_gauss = mean_squared_error(train_df[2], gauss_train_pred)
    mse_train_cauchy = mean_squared_error(train_df[2], cauchy_train_pred)
    mse_train_sinc = mean_squared_error(train_df[2], sinc_train_pred)
    
    if (mse_train_gauss > mse_train_cauchy) & (mse_train_gauss > mse_train_sinc):
        print "gauss"
        df_train_approx[folder] = gauss_train_pred
        df_test_approx[folder] = gauss_test_pred
        
    elif (mse_train_cauchy > mse_train_gauss) & (mse_train_cauchy > mse_train_sinc):
        print "cauchy"
        df_train_approx[folder] = cauchy_train_pred
        df_test_approx[folder] = cauchy_test_pred
        
    elif (mse_train_sinc > mse_train_gauss) & (mse_train_sinc > mse_train_cauchy):
        print "sinc"
        df_train_approx[folder] = sinc_train_pred
        df_test_approx[folder] = sinc_test_pred
    '''
    df_train_approx[folder] = cauchy_train_pred
    df_test_approx[folder] = cauchy_test_pred        


    
### load categorical data    

df_train_categ = pd.read_csv("/Users/abinaya/USC/Studies/NLCI/Project/Data/categorical_data/train_categ_brand_skin_type.csv")
df_test_categ = pd.read_csv("/Users/abinaya/USC/Studies/NLCI/Project/Data/categorical_data/test_categ_brand_skin_type.csv")

df_train_y = df_train_categ["price"]
df_train_categ_x = df_train_categ.drop("price", axis=1)

df_test_y = df_test_categ["price"]
df_test_categ_x = df_test_categ.drop("price", axis=1)


### combine categorical with fuzzy approximation

df_train_x = pd.concat([df_train_categ_x, df_train_approx], axis=1)
df_test_x = pd.concat([df_test_categ_x, df_test_approx], axis=1)
    
### Linear Regression
lr = Lasso()
lr.fit(df_train_x, df_train_y)

train_predict = lr.predict(df_train_x)
test_predict = lr.predict(df_test_x)

train_acc_LinReg = np.sqrt(mean_squared_error(df_train_y, train_predict))
test_acc_LinReg = np.sqrt(mean_squared_error(df_test_y, test_predict))

print("Linear Regression - Train accuracy: ",train_acc_LinReg )
print("Linear Regression - Test accuracy: ",test_acc_LinReg )