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
    Jason 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
      Participante

        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
        Jason 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
          Participante

            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.