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)