Evet, KNN'yi kesinlikle ikili ve sürekli verilerle kullanabilirsiniz, ancak bunu yaparken dikkat etmeniz gereken bazı önemli noktalar vardır.
Sonuçlar, aşağıda gösterildiği gibi, gerçek değerli sonuçlar (0-1 ölçekli, ağırlıksız vektörler arasındaki) dağılımına göre ikili bölünmeler tarafından yoğun bir şekilde bilgilendirilecektir:
Bu örnekte, bireysel bir gözlemin mesafeye göre en yakın komşularının, ikili değişken tarafından ölçeklendirilmiş gerçek değer değişkeninden çok daha fazla bilgilendirileceğini görebilirsiniz.
Dahası, bu çoklu ikili değişkenlere uzanır - eğer gerçek değerli değişkenlerden birini ikilik olarak değiştirirsek, mesafelerin gerçek değerlerin yakınlığından ziyade ilgili tüm ikili değişkenlerle eşleştirerek çok daha fazla bilgi sahibi olacağını görebiliriz:
Yalnızca kritik ikili değişkenleri dahil etmek isteyeceksiniz; aslında "en yakın gerçek değerli değerlere sahip ikili değişkenlerin (eğer varsa) bu yapılandırmasıyla eşleşen tüm gözlemlerden mi soruyorsunuz?" Bu, KNN ile ele alınabilecek birçok sorunun makul bir formülasyonudur ve diğer sorunların çok zayıf bir formülasyonudur.
#code to reproduce plots:
library(scatterplot3d)
scalevector <- function(x){(x-min(x))/(max(x)-min(x))}
x <- scalevector(rnorm(100))
y <- scalevector(rnorm(100))
z <- ifelse(sign(rnorm(100))==-1, 0, 1)
df <- data.frame(cbind(x,y,z))
scatterplot3d(df$x, df$z, df$y, pch=16, highlight.3d=FALSE,
type="h", angle =235, xlab='', ylab='', zlab='')
x <- scalevector(rnorm(100))
y <- ifelse(sign(rnorm(100))==-1, 0, 1)
z <- ifelse(sign(rnorm(100))==-1, 0, 1)
df <- data.frame(cbind(x,y,z))
scatterplot3d(df$x, df$z, df$y, pch=16, highlight.3d=FALSE,
type="h", angle =235, xlab='', ylab='', zlab='')