Python Forum

Full Version: Error: ValueError: could not convert string to float: 'L200 1.6 D/C'
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
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

'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)
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).
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'