Erro aula “Transformacao de variaveis categoricas 2 – base censo”

Home Fóruns Fórum Machine Learning e Data Science com Python de A à Z Erro aula “Transformacao de variaveis categoricas 2 – base censo”

Visualizando 4 posts - 1 até 4 (de 4 do total)
  • Autor
    Posts
  • #23434
    Profile photo ofdhieisonbaumJason Baum
    Participante

    Parte 1 – Classificação

    Aula – Transformacao de variaveis categoricas 2 – base censo

    Ao executar os comando conforme a orientação passada a partir do minuto ‘8’, o seguinte erro é apresentado:

    File “C:\Python\Machine Learning e Data Science com Python de A à Z\Parte1 – Aula7 – pre_processamento_census.py”, line 24, in <module>
    previsores[:,3] = labelencoder_previsores.fit_transform(previsores[:,3])

    IndexError: index 3 is out of bounds for axis 1 with size 1

     

    Segue abaixo o código:

    import pandas as pd

    base = pd.read_csv(‘census.csv’)

    previsores = base.iloc[:,8:9].values
    classe = base.iloc[:,14].values

    from sklearn.preprocessing import LabelEncoder, OneHotEncoder
    labelencoder_previsores = LabelEncoder()

    #lebels = labelencoder_previsores.fit_transform(previsores[:,1])

    previsores[:,0] = labelencoder_previsores.fit_transform(previsores[:,0])
    previsores[:,3] = labelencoder_previsores.fit_transform(previsores[:,3])
    previsores[:,5] = labelencoder_previsores.fit_transform(previsores[:,5])
    previsores[:,6] = labelencoder_previsores.fit_transform(previsores[:,6])
    previsores[:,7] = labelencoder_previsores.fit_transform(previsores[:,7])
    previsores[:,8] = labelencoder_previsores.fit_transform(previsores[:,8])
    previsores[:,9] = labelencoder_previsores.fit_transform(previsores[:,9])
    previsores[:,13] = labelencoder_previsores.fit_transform(previsores[:,13])

    onehotencoder = OneHotEncoder(categorical_features=[0])
    previsores = onehotencoder.fit_transform(previsores).toarray()

     

    #23436
    Fábio Spak
    Moderador

    Boa noite Jason, esse erro esta relacionado com a atualização do código fonte. Você pode fazer o download do código fonte atualizado através do link abaixo:

    https://iaexpert.academy/topic/importante-atualizacao-do-codigo-fonte-e-recursos-para-download/

    Fabio

    #23448
    Profile photo ofdhieisonbaumJason Baum
    Participante

    Fiz a alteração:

     

    import pandas as pd

    base = pd.read_csv(‘census.csv’)

    #Separando os atributos previsores e classe
    previsores = base.iloc[:, 8:9].values
    classe = base.iloc[:, 14].values

    from sklearn.preprocessing import LabelEncoder, OneHotEncoder
    from sklearn.compose import ColumnTransformer
    labelencoder_previsores = LabelEncoder()

    onehotencorder = ColumnTransformer(transformers=[(“OneHot”, OneHotEncoder(), [1,3,5,6,7,8,9,13])],remainder=’passthrough’)
    previsores = onehotencorder.fit_transform(previsores).toarray()

    labelencorder_classe = LabelEncoder()
    classe = labelencorder_classe.fit_transform(classe)

    from sklearn.preprocessing import StandardScaler
    scaler = StandardScaler()
    previsores = scaler.fit_transform(previsores)

    from sklearn.preprocessing import LabelEncoder, OneHotEncoder
    labelencoder_previsores = LabelEncoder()

    #transformar str em int / variáveis categóricas em numéricas
    #lebels = labelencoder_previsores.fit_transform(previsores[:,1])

    previsores[:,0] = labelencoder_previsores.fit_transform(previsores[:,0])
    previsores[:,3] = labelencoder_previsores.fit_transform(previsores[:,3])
    previsores[:,5] = labelencoder_previsores.fit_transform(previsores[:,5])
    previsores[:,6] = labelencoder_previsores.fit_transform(previsores[:,6])
    previsores[:,7] = labelencoder_previsores.fit_transform(previsores[:,7])
    previsores[:,8] = labelencoder_previsores.fit_transform(previsores[:,8])
    previsores[:,9] = labelencoder_previsores.fit_transform(previsores[:,9])
    previsores[:,13] = labelencoder_previsores.fit_transform(previsores[:,13])

    onehotencorder = OneHotEncoder(categorical_features=[0])
    previsores = onehotencorder.fit_transform(previsores).toarray()

     

    2 novos erros:

    Ao executar: onehotencorder = OneHotEncoder(categorical_features=[0])

    Erro:

    return f(**kwargs)

    TypeError: __init__() got an unexpected keyword argument ‘categorical_features’

     

    Ao executar: previsores = onehotencorder.fit_transform(previsores).toarray()

    Erro:

    raise ValueError(

    ValueError: all features must be in [0, 0] or [-1, 0]

     

    #23455
    Fábio Spak
    Moderador

    Boa noite Jason, com a atualização do código fonte o LabelEncoder não é utilizado na etapa dos previsores. Nesse caso, o código deverá ficar dessa forma:

    import pandas as pd
    
    base = pd.read_csv('census.csv')
    
    previsores = base.iloc[:, 0:14].values
    classe = base.iloc[:, 14].values
    
    from sklearn.preprocessing import LabelEncoder, OneHotEncoder
    from sklearn.compose import ColumnTransformer
    labelencoder_previsores = LabelEncoder()
    
    onehotencorder = ColumnTransformer(transformers=[("OneHot", OneHotEncoder(), [1,3,5,6,7,8,9,13])],remainder='passthrough')
    previsores = onehotencorder.fit_transform(previsores).toarray()
    
    labelencorder_classe = LabelEncoder()
    classe = labelencorder_classe.fit_transform(classe)
    
    from sklearn.preprocessing import StandardScaler
    scaler = StandardScaler()
    previsores = scaler.fit_transform(previsores)

    Fabio

Visualizando 4 posts - 1 até 4 (de 4 do total)
  • Você deve fazer login para responder a este tópico.