Jan-18-2018, 01:18 PM
Hi guys, I need help trying to use Python to predict if a customer is going to leave the company.
When I try to fit the Random Forest, it says a ValueError.
I let here the csv and the code. (the csv file only has 5 rows but the real BD has 425.000 rows)
https://www.dropbox.com/s/n2y8m131uv3kkt...a.csv?dl=0 (Download CSV from Dropbox)
Please help me.
Regards
When I try to fit the Random Forest, it says a ValueError.
I let here the csv and the code. (the csv file only has 5 rows but the real BD has 425.000 rows)
https://www.dropbox.com/s/n2y8m131uv3kkt...a.csv?dl=0 (Download CSV from Dropbox)
Please help me.
Regards
'Importa libreria
import numpy as np
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
from sklearn.cross_validation import train_test_split
'Importa libreria de graficos
%matplotlib inline
import matplotlib
import matplotlib.pyplot as plt
import seaborn as sns
matplotlib.rcParams['savefig.dpi'] = 144
'Importa archivo para modelo
data_fuga= pd.read_csv(r"\\MANQUEHUE\Qlikview\CSV\BD_Fuga.csv", encoding='utf-8-sig')
print(data_fuga.head())
'CREACION DE NUEVO CAMPO CON 0: PERMANECE 1: FUGA
data_fuga['Clase']=(data_fuga['ESTADO']=='Fuga')
print(data_fuga.head())
data_fuga['Clase']=data_fuga['Clase'].astype(int)
print(data_fuga.head())
'ELIMINA VARIABLE ESTADO PARA DEJAR SOLO NUMERICO
data_fuga = data_fuga.drop('ESTADO',1)
data_fuga = data_fuga.drop(['ESTADO','Comuna','VEHMARK','VEHMODEL','FECHA_INI_VIGENCIA','FECHA_FIN_VIGENCIA','FECHA_ANULACION','FECHA_HOY','PRIMERA_CUOTA','EDAD_GROUP'],1)
print(data_fuga.head())
'Nombre de la variable a predecir
Clasificacion_Estado = 'Clase'
'Asignacion de nombres del campo a variable headers
headers = data_fuga.columns.values.tolist()
print(headers)
'Elimina el label a predecir
headers.remove(Clasificacion_Estado)
print(headers)
'Carga en variable Clasificacion la lista completa de datos que posee ESTADO
Clasificacion = data_fuga[Clasificacion_Estado].tolist()
print(Clasificacion)
'Conversion a Array
Clasificacion = np.array(Clasificacion)
print(Clasificacion)
'Entrega el numero de filas y variables de la base de datos
print('Numero de filas: %d \n Numero de variables: %d' % data_fuga.shape)
'Muestra los datos
data_fuga.head()
'Analisis de datos, entrega informacion como min o media.
data_fuga.describe()
'Cantidad de fugas vs permanece
print('Cantidad por cada clase (0: Permanece, 1: Fuga):')
print(data_fuga['Clase'].value_counts())
'Porcentaje por cada clase
print(data_fuga['Clase'].value_counts('Fuga')*100)
'Cantidad de campos sin informacion
print('Numero de valores perdidos por columna:')
print(pd.isnull(data_fuga).sum(axis=0))
'agrupa por mes de vigencia la cantidad de Fugas
data_fuga.groupby('MES_INI_VIGENCIA').Clase.sum()
'agrupa por deducible la cantidad de Fugas
data_fuga.groupby('DEDUCIBLE').Clase.sum()
'agrupa por comuna la cantidad de fugas
data_fuga.groupby('Comuna').Clase.sum()
'Cuenta la cantidad exacta de Fuga por comuna
data_fuga[data_fuga.Comuna=='SANTIAGO'].Clase.sum()
'Cuenta la cantidad de Fuga total
data_fuga['Clase'].sum()
'Conversion de tabla Dataframe(pandas) a Matrix (numpy)
data_fuga = data_fuga.drop(Clasificacion_Estado,1)
data_fuga = data_fuga.as_matrix()
data_fuga = np.matrix(data_fuga)
print(np.matrix(data_fuga))
'ENTRENAMIENTO DE DATOS
x_data_fuga = data_fuga
y_data_fuga = Clasificacion
print(data_fuga)
print(Clasificacion)
'DIVISION DE LA DATA 80% ENTRENAMIENTO 20% TEST
x_train, x_test, y_train, y_test = train_test_split(x_data_fuga, y_data_fuga, test_size = 0.2)
'Random Forest
rf=RandomForestClassifier(n_estimators=100)
rf.fit(x_train,y_train)
y_test
pred = rf.predict(x_test)
S= y_test.values
for i in range(len(pred)):
if pred[i]=S[i]:
count = count + 1
count
len(pred)
Acc = len(pred)/count*100
print('Precision: %' + Acc)
var_imp = pd.DataFrame({'feature':headers,'v_importance':modelo.feature_importances_.tolist()})
print var_imp.sort_values(by = 'v_importance', ascending = False)
