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
24 de abril de 2021 às 00:06 #28481
Participante
Bom Denny, acho que agora consegui. Eu tive que colocar um parâmetro dentro do OneHotEncoder e também modificar o tipo de array do novo registro. Não sei se isso influencia, mas antes de trocar de array string para objeto, não estava conseguindo.
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(handle_unknown='ignore'), [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 = [[52," Self-emp-not-inc",209642," HS-grad",9," Married-civ-spouse"," Exec-managerial"," Husband"," White"," Male",0,0,45," 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 = np.asarray(novo_registro, object) novo_registro = column_tranformer.transform(novo_registro).toarray() novo_registro = scaler.transform(novo_registro) resposta_mlp = mlp.predict(novo_registro)