Линейно разделить спиральные данные
Я работаю над проектом, и у меня есть спиральные данные, которые выглядят следующим образом:
Я пытаюсь разделить с помощью преобразований ядра, которые могут разделить данные. Я использую эту функцию сопоставления для создания новых функций
def mapping(x, y):
z = np.c_[(x, y)]
z_1 = np.log(z[:,0]) * z[:,1]**2
z_2 = -np.log(z[:,0]*z[:,1])
z_3 = np.exp(z[:,1])*np.sqrt(2)
trans_x = np.array([z_1, z_2, z_3])
return trans_x
При просмотре в 3D я получаю следующий вывод
Похоже, один класс немного отделился. Может ли кто-нибудь сказать какие-либо другие функции, которые могут помочь в этом, чтобы точки были линейными?