K-nn med flera funktioner
Svep för att visa menyn
Du förstår nu hur k-NN fungerar med en enskild egenskap. Låt oss gå vidare till ett något mer komplext exempel som använder två egenskaper: weight och width.
I detta fall behöver vi hitta grannar baserat på både width och weight. Men det finns ett litet problem med det. Låt oss plotta godisarna och se vad som går fel:
Du kan se att weight varierar från 12 till 64, medan width bara är mellan 5 och 12. Eftersom width har ett mycket mindre intervall verkar godisarna nästan vertikalt uppradade. Om vi nu beräknar avstånd kommer de främst att spegla skillnader i weight, som om vi aldrig tog hänsyn till width.
Det finns dock en lösning – skala datan.
Nu är både vikt och bredd på samma skala och centrerade kring noll. Detta kan uppnås med klassen StandardScaler från sklearn. StandardScaler subtraherar helt enkelt provets medelvärde och dividerar sedan resultatet med provets standardavvikelse:
StandardScaler centrerar data kring noll. Även om centrering inte är obligatoriskt för k-NN och kan skapa förvirring, till exempel "hur kan vikt vara negativ", är det bara ett sätt att presentera data för en dator. Vissa modeller kräver centrering, så det är rekommenderat att använda StandardScaler som standard för skalning.
Faktum är att du alltid bör skala data innan du använder k-Nearest Neighbors. Med den skalade datan kan vi nu hitta grannarna:
Vid två egenskaper definierar k-NN ett cirkulärt grannskap som innehåller önskat antal grannar. Med tre egenskaper blir detta en sfär. I högre dimensioner antar grannskapet en mer komplex form som inte kan visualiseras, men de underliggande beräkningarna förblir oförändrade.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal