Error: ValueError: could not convert string to float: 'L200 1.6 D/C' - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: Data Science (https://python-forum.io/forum-44.html) +--- Thread: Error: ValueError: could not convert string to float: 'L200 1.6 D/C' (/thread-7630.html) |
Error: ValueError: could not convert string to float: 'L200 1.6 D/C' - Jaarroy - Jan-18-2018 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/n2y8m131uv3kktg/BD_Fuga.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) RE: Error: ValueError: could not convert string to float: 'L200 1.6 D/C' - sparkz_alot - Jan-18-2018 Not sure what the purpose of lines like 1, 8, 15, etc (those that start with a single quote " ' "), if they are meant to be comments, that is not the proper way to create a comment in Python. Please post the error code, in it's entirety (between the error code tags). RE: Error: ValueError: could not convert string to float: 'L200 1.6 D/C' - Jaarroy - Jan-18-2018 Sparkz_alot thanks for the correction. You right I was using the "'" to comment like VBA, but It has to be #. I fix it. Posted the error code. Thanks for your time #Random Forest rf=RandomForestClassifier(n_estimators=100) rf.fit(x_train,y_train) Traceback (most recent call last): File "<ipython-input-77-12afa76ba01c>", line 1, in <module> rf.fit(x_train,y_train) File "C:\ProgramData\Anaconda3\lib\site-packages\sklearn\ensemble\forest.py", line 247, in fit X = check_array(X, accept_sparse="csc", dtype=DTYPE) File "C:\ProgramData\Anaconda3\lib\site-packages\sklearn\utils\validation.py", line 433, in check_array array = np.array(array, dtype=dtype, order=order, copy=copy) ValueError: could not convert string to float: 'YARIS SPORT' |