La aplicación de una función kernel, por el contrario, cambia radicalmente el escenario. La clase KernelPCA de Scikit-Learn ofrece seis tipos de kernel: linear, poly, rbf, sigmoid, cosine y precomputed.
Si aplicamos el kernel rbf y ajustamos el valor de gamma a 30, por ejemplo, el resultado es el siguiente:
kpca = KernelPCA(n_components = 2, kernel = "rbf", gamma = 30)
X_kpca = kpca.fit_transform(X)
X_kpca = kpca.fit_transform(X)
show_boundaries(None, X_kpca, None, y, None, np.unique(y))
El resultado es linealmente separable.