# New observations
new_penguins = pd.DataFrame(
{
"body_mass_g": [4005, 4775, 2800, 3750],
"flipper_length_mm": [200, 220, 180, 210],
}
)
# Construct predictors in the same format used to fit the model
new_multinomial_X = sm.add_constant(
new_penguins[["body_mass_g", "flipper_length_mm"]],
has_constant="add",
)
# Predicted probability for each species
predicted_probabilities = multinomial_result.predict(
new_multinomial_X
)
# Replace numeric column names with species names
predicted_probabilities = predicted_probabilities.rename(
columns=multinomial_model._ynames_map
)
# Choose the species with the largest predicted probability
predicted_species = predicted_probabilities.idxmax(axis=1)
# Combine inputs, probabilities, and final predictions
prediction_results = (
new_penguins
.join(predicted_probabilities.add_prefix("prob_"))
.assign(predicted_species=predicted_species)
)
prediction_results