Implement one-hot encoding for nominal (categorical) values. Given a 1D array of labels, return a 2D binary matrix where each row corresponds to a sample and each column corresponds to a unique class.
import numpy as np
def one_hot_encode(labels):
unique = sorted(set(labels))
label_to_idx = {label: i for i, label in enumerate(unique)}
n_samples = len(labels)
n_classes = len(unique)
encoded = np.zeros((n_samples, n_classes))
for i, label in enumerate(labels):
encoded[i, label_to_idx[label]] = 1
return encoded(n_samples, n_classes).