gakonst icon

Quizz2.R

gakonst | PRO | 01/22/18 09:47:18 AM UTC | 0 ⭐ | 235 👁️ | Never ⏰ | []
R |

1.4 KB

|

None

|

0 👍

/

0 👎

# Multisplit Gini function
rm(list=ls())
 
gini_process <-function(absfreq){
  freq = prop.table(absfreq, 1)
  freqSum = rowSums(prop.table(absfreq))
  rows = numeric(nrow(freq))
  for (i in 1:nrow(freq)) {
    rows[i] = rownames(freq)[i]
  }
  
  GINIs = numeric(nrow(freq))
  GINI = 0
  for (i in 1:nrow(freq)) {
    GINIs[i] = 1 - freq[rows[i], 'No']^2 - freq[rows[i], 'Yes']^2
    GINI = GINI + freqSum[rows[i]] * GINIs[i]
  }
  return (c(GINI, GINIs))
}
 
 
# Read data from disk
car_data = read.csv("../car_data.csv")
 
# Create tables with frequencies for customers
customer_ids = table(car_data[, c(1, 5)])
gini_data = gini_process(customer_ids)
CUSTOMERID_GINI_TOTAL = gini_data[1]
CUSTOMERID_GINI_PER_CLASS = gini_data[(-1)] # negative index = skip
 
# Create tables with frequencies for sex
sex = table(car_data[, c(2, 5)])
gini_data = gini_process(sex)
SEX_GINI_TOTAL = gini_data[1]
SEX_GINI_PER_CLASS = gini_data[(-1)] # negative index = skip
 
# Create tables with frequencies for cars
car_types = table(car_data[, c(3, 5)])
gini_data = gini_process(car_types)
CARTYPES_GINI_TOTAL = gini_data[1]
CARTYPES_GINI_PER_CLASS = gini_data[(-1)] # negative index = skip
 
# Create tables with frequencies for budget
budget = table(car_data[, c(4, 5)])
gini_data = gini_process(budget)
BUDGET_GINI_TOTAL = gini_data[1]
BUDGET_GINI_PER_CLASS = gini_data[(-1)] # negative index = skip

Comments