Следует отметить, что многие из переменных в исходном векторном пространстве являются редко кодируемыми категориальными переменными. PCA не подходит лучше всего для таких переменных, и не рекомендуется, как это было сделано в коде, на который вы ссылаетесь.
Теперь ваш очевидный вопрос: почему это работает в первую очередь? Почему только с двумя переменными? Задайте себе вопрос: сможете ли вы сказать, является ли гриб ядовитым, если я скажу вам, что цвет красный и наличие жабры (ламеллы)? Если вы знаете что-нибудь о грибах, то да, в подавляющем большинстве случаев вы можете сказать. Вот что делает алгоритм здесь. Не так много различий объясняется, так как есть много переменных, а некоторые из наиболее значимых, например, цвет, редко кодируются, что эффективно для PCA, распределенного по многим переменным.
Кроме того, я бы не сказал, что это работает хорошо, и визуализация точно показывает это. Рассмотрим это изображение, на котором показаны результаты теста логистической регрессии:
По результатам теста он имеет точность 90%. Когда вы смотрите на это, вы думаете, что это хорошо? В левом нижнем углу есть смесь съедобных и ядовитых грибов. Видимо, это то место, где двух наших вычисленных функций недостаточно; красный рубин и съедобный.