Home › Fóruns › Fórum Machine Learning e Data Science com Python de A à Z › Adicionar Novo Registro com Variável Categórica › Responder a: Adicionar Novo Registro com Variável Categórica
23 de abril de 2021 às 17:28 #28477
Consegui.Era isso mesmo. Tem um espaço antes de alguns registros ali. Bom, até essa parte consegui fazer. Continuei com o processo e fiz o reshape para poder fazer o escalonamento e tudo mais. Mas agora o problema que quando vou passar o predict, meu modelo de treinamento usado foi com OneHotEncoder e ai gerou as variáveis dummy, que no caso aumentou minha base para 108 colunas. Ao tentar passar o predict ele não consegue por pelo fato do novo registro só possuir 14 colunas.
import pandas as pd import pickle from sklearn.impute import SimpleImputer from sklearn.preprocessing import StandardScaler import numpy as np 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_previsores1 = LabelEncoder() labelencoder_previsores3 = LabelEncoder() labelencoder_previsores5 = LabelEncoder() labelencoder_previsores6 = LabelEncoder() labelencoder_previsores7 = LabelEncoder() labelencoder_previsores8 = LabelEncoder() labelencoder_previsores9 = LabelEncoder() labelencoder_previsores13 = LabelEncoder() previsores[:,1] = labelencoder_previsores1.fit_transform(previsores[:,1]) previsores[:,3] = labelencoder_previsores3.fit_transform(previsores[:,3]) previsores[:,5] = labelencoder_previsores5.fit_transform(previsores[:,5]) previsores[:,6] = labelencoder_previsores6.fit_transform(previsores[:,6]) previsores[:,7] = labelencoder_previsores7.fit_transform(previsores[:,7]) previsores[:,8] = labelencoder_previsores8.fit_transform(previsores[:,8]) previsores[:,9] = labelencoder_previsores9.fit_transform(previsores[:,9]) previsores[:,13] = labelencoder_previsores13.fit_transform(previsores[:,13]) column_tranformer = ColumnTransformer([('one_hot_encoder', OneHotEncoder(), [1, 3, 5, 6, 7, 8, 9, 13])],remainder='passthrough') previsores = column_tranformer.fit_transform(previsores).toarray() labelencoder_classe = LabelEncoder() classe = labelencoder_classe.fit_transform(classe) from sklearn.preprocessing import StandardScaler scaler = StandardScaler() previsores = scaler.fit_transform(previsores) mlp = pickle.load(open('mlp_final.sav', 'rb')) resultado_mlp = mlp.score(previsores, classe) novo_registro = [[39," State-gov",77516," Bachelors",13," Never-married"," Adm-clerical"," Not-in-family"," White"," Male",2174,0,40," United-States"]] novo_registro = np.asarray(novo_registro) novo_registro[:,1] = labelencoder_previsores1.transform(novo_registro[:,1]) novo_registro[:,3] = labelencoder_previsores3.transform(novo_registro[:,3]) novo_registro[:,5] = labelencoder_previsores5.transform(novo_registro[:,5]) novo_registro[:,6] = labelencoder_previsores6.transform(novo_registro[:,6]) novo_registro[:,7] = labelencoder_previsores7.transform(novo_registro[:,7]) novo_registro[:,8] = labelencoder_previsores8.transform(novo_registro[:,8]) novo_registro[:,9] = labelencoder_previsores9.transform(novo_registro[:,9]) novo_registro[:,13] = labelencoder_previsores13.transform(novo_registro[:,13]) novo_registro = novo_registro.reshape(-1, 1) novo_registro = scaler.fit_transform(novo_registro) novo_registro = novo_registro.reshape(-1, 14) resposta_mlp = mlp.predict(novo_registro)