рдЬреВрд▓рд┐рдпрд╛ рдореЗрдВ KNN рдХреЛрдбрд┐рдВрдЧ рдФрд░ рдкрд░реАрдХреНрд╖рдг



рдбрд╛рдЯрд╛ рд╕рд╛рдЗрдВрд╕ рдореЗрдВ рдирдИ рднрд╛рд╖рд╛ред рдЬреВрд▓рд┐рдпрд╛ рд░реВрд╕ рдореЗрдВ рдПрдХ рджреБрд░реНрд▓рдн рднрд╛рд╖рд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕реЗ 5 рд╡рд░реНрд╖реЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рджреЗрд╢ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ рднреА рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдХрд┐рдпрд╛)ред рд░реВрд╕реА рдореЗрдВ рдХреЛрдИ рд╕реНрд░реЛрдд рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдХ рдЕрджреНрднреБрдд рдкреБрд╕реНрддрдХ рд╕реЗ рд▓реА рдЧрдИ рдЬреВрд▓рд┐рдпрд╛ рдХреЗ рдмрд┐рдВрджреБ рдореЗрдВ рдПрдХ рдорд╛рдорд▓рд╛ рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рднрд╛рд╖рд╛ рд╕реАрдЦрдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЙрд╕рдореЗрдВ рдХреБрдЫ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рднреА рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдорд╢реАрди рд╕реАрдЦрдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдирдорд╕реНрддреЗ рд╣рдмреНрд░реЛрд╣рд┐рддреЗрд▓рдореНред

рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдЬреВрд▓рд┐рдпрд╛ рдХреА рдирдИ рднрд╛рд╖рд╛ рд╕реАрдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдЦреИрд░, рдирдП рдХреА рддрд░рд╣ред рдпрд╣ рдорддрд▓реВрдм рдФрд░ рдЕрдЬрдЧрд░ рдХреЗ рдмреАрдЪ рдХреБрдЫ рд╣реИ, рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдмрд╣реБрдд рд╕рдорд╛рди рд╣реИ, рдФрд░ рднрд╛рд╖рд╛ рд╕реНрд╡рдпрдВ C / C ++ рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕, рдХреНрдпрд╛, рдХреНрдпреЛрдВ рдФрд░ рдХреНрдпреЛрдВ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░ рдФрд░ рд╣реИрдмреЗ рдкрд░ рд▓реЗрдЦреЛрдВ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдореЗрдВ рд╣реИред

рдкрд╣рд▓реА рдЪреАрдЬ рдЬрд┐рд╕рдиреЗ рднрд╛рд╖рд╛ рдХрд╛ рдореЗрд░рд╛ рдЕрдзреНрдпрдпрди рд╢реБрд░реВ рдХрд┐рдпрд╛ - рдареАрдХ рд╣реИ, рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдХреМрд░рд╕реЗрд░рд╛ рдЧреВрдЧрд▓ рдСрдирд▓рд╛рдЗрди рдкрд╛рдареНрдпрдХреНрд░рдо ред рд╡рд╣рд╛рдВ, рдореВрд▓ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ + рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдЕрдлреНрд░реАрдХрд╛ рдореЗрдВ рдмреАрдорд╛рд░рд┐рдпреЛрдВ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдкрд░ рдПрдХ рдорд┐рдиреА-рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдореВрд▓ рдмрд╛рддреЗрдВ рдФрд░ рддреБрд░рдВрдд рдЕрднреНрдпрд╛рд╕ред рдпрджрд┐ рдЖрдкрдХреЛ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдкреВрд░реНрдг рд╕рдВрд╕реНрдХрд░рдг рдЦрд░реАрджреЗрдВред рдореИрдВ рдореБрдлреНрдд рдореЗрдВ рдЧрдпрд╛ред рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рдЖрдкрдХреЗ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдбреАрдЬреЗрдб рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдирд╛ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдерд╛ред (рдкрдврд╝реЗрдВ 50 рд░реБрдкрдпреЗ рдЬрд╛рдо)

рдЙрд╕рдХреЗ рдмрд╛рдж рдореИрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдореБрдЭреЗ рдЬреВрд▓рд┐рдпрд╛ рдкрд░ рдПрдХ рдХрд┐рддрд╛рдм рдкрдврд╝рдиреА рдЪрд╛рд╣рд┐рдПред Google рдиреЗ рдкреБрд╕реНрддрдХреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдЬрд╛рд░реА рдХреА рдФрд░ рд╕рдореАрдХреНрд╖рд╛рдУрдВ рдФрд░ рд╕рдореАрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╣реБрдП, рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдЪреБрдирд╛ рдФрд░ рдЕрдореЗрдЬрд╝реЕрди рдкрд░ рдСрд░реНрдбрд░ рдХрд┐рдпрд╛ред рдкреБрд╕реНрддрдХ рд╕рдВрд╕реНрдХрд░рдг рд╣рдореЗрд╢рд╛ рдкреЗрдВрд╕рд┐рд▓ рдореЗрдВ рдкрдврд╝рдиреЗ рдФрд░ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреЗ рд╣реЛрддреЗ рд╣реИрдВред

рдЬрдЪрд┐рдпрд╛рд╕ рд╡реБрд▓реНрдЧреИрд░рд┐рд╕, рдкреАрдПрдЪрдбреА рджреНрд╡рд╛рд░рд╛ рдкреБрд╕реНрддрдХ рдХреЛ рдЬреВрд▓рд┐рдпрд╛ рдлреЙрд░ рдбреЗрдЯрд╛ рд╕рд╛рдЗрдВрд╕ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рдЬреЛ рдЕрдВрд╢ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЙрд╕рдореЗрдВ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рддрдп рдХрд┐рдП рдЧрдП рдХреЛрдб рдореЗрдВ рдХрдИ рдЯрд╛рдЗрдкреЛ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдФрд░ рдЗрд╕рд▓рд┐рдП рдХрд╛рд░реНрдпрд╢реАрд▓ рд╕рдВрд╕реНрдХрд░рдг + рдореЗрд░реЗ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВрдЧреЗред

KNN


рдпрд╣ рдирд┐рдХрдЯрддрдо рдкрдбрд╝реЛрд╕рд┐рдпреЛрдВ рдХреА рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдЧреАрдХрд░рдг рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдЖрд╡реЗрджрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рд╕рдВрднрд╡рддрдГ рд╕рдмрд╕реЗ рдкреБрд░рд╛рдиреА рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдореЗрдВ рд╕реЗ рдПрдХред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рд╕реАрдЦрдиреЗ рдХрд╛ рдЪрд░рдг рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдмрд╣реБрдд рддреЗрдЬрд╝ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЕрд░реНрде рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ: рдПрдХ рдирдИ рд╡рд╕реНрддреБ рдХреЛ рд╡рд░реНрдЧреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рд╕реЗрдЯ (рдбреЗрдЯрд╛рдмреЗрд╕) рд╕реЗ рд╕рдорд╛рди "рдкрдбрд╝реЛрд╕рд┐рдпреЛрдВ" рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рд╡реЛрдЯ рджреЗрдХрд░ рдХрдХреНрд╖рд╛ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░реЗрдВред

рдореИрдВ рддреБрд░рдВрдд рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░ рджреВрдВрдЧрд╛ рдХрд┐ рдЬреВрд▓рд┐рдпрд╛ рдХреЗ рдкрд╛рд╕ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдкреИрдХреЗрдЬ рд╣реИрдВ, рдФрд░ рд╕рдордп рдХрдо рдХрд░рдиреЗ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдХреЛрдб рдПрдХ рддрд░рд╣ рд╕реЗ рдЬреВрд▓рд┐рдпрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рд╕рдВрдХреЗрдд рд╣реИред рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рдХреЗ рд╕реВрдЦреЗ рдЕрд░реНрдХ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рдирдИ рднрд╛рд╖рд╛ рд╕реАрдЦрдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред

рддреЛ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рд╡реЗрд╢ рджреНрд╡рд╛рд░ рдкрд░ рдХреНрдпрд╛ рд╣реИ:

рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдбреЗрдЯрд╛ X (рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдирдореВрдирд╛), рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдбреЗрдЯрд╛ рд▓реЗрдмрд▓ x (рд╕рдВрдмрдВрдзрд┐рдд рд▓реЗрдмрд▓), рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ Y (рдкрд░реАрдХреНрд╖рдг рдЪрдпрди), рдкрдбрд╝реЛрд╕рд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ (рдкрдбрд╝реЛрд╕рд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛)ред

рдЖрдкрдХреЛ 3 рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА: рджреВрд░реА рдЧрдгрдирд╛ рдлрд╝рдВрдХреНрд╢рди, рд╡рд░реНрдЧреАрдХрд░рдг рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдореБрдЦреНрдп ред

рд▓рдмреНрдмреЛрд▓реБрдЖрдм рдпрд╣ рд╣реИ: рдкрд░реАрдХреНрд╖рдг рд╕рд░рдгреА рдХреЗ рдПрдХ рддрддреНрд╡ рдХреЛ рд▓реЗрдВ, рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕рд░рдгреА рдХреЗ рддрддреНрд╡реЛрдВ рд╕реЗ рдЗрд╕рдХреА рджреВрд░реА рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВред рдлрд┐рд░ рд╣рдо рдЙрди k рддрддреНрд╡реЛрдВ рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдХрд░реАрдм рдирд┐рдХрд▓рд╛ред рд╣рдо рддрддреНрд╡ рдХреЛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рддрд╣рдд рдЙрд╕ рд╡рд░реНрдЧ рдореЗрдВ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐ рдирд┐рдХрдЯрддрдо рдкрдбрд╝реЛрд╕рд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдмрд╕реЗ рдЖрдо рд╣реИред

function CalculateDistance{T<:Number}(x::Array{T,1}, y::Array{T,1}) dist = 0 for i in 1:length(x) dist += (x[i] - y[i])^2 end dist = sqrt(dist) return dist end 

рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдпред рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдирдореВрдиреЗ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рдХрд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕, рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реЗрдЯ рдХреЗ рд▓реЗрдмрд▓, рдФрд░ рдирд┐рдХрдЯрддрдо "рдкрдбрд╝реЛрд╕рд┐рдпреЛрдВ" рдХреА рд╕рдВрдЦреНрдпрд╛ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдЖрддреА рд╣реИред рдЖрдЙрдЯрдкреБрдЯ рдирдИ рд╡рд╕реНрддреБрдУрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд▓реЗрдмрд▓ рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорд╛рдирд┐рдд рд▓реЗрдмрд▓ рд╣реИред

 function Classify{T<:Any}(distances::Array{Float64,1}, labels::Array{T,1}, k::Int) class = unique(labels) nc = length(class) #number of classes indexes = Array(Int,k) #initialize vector of indexes of the nearest neighbors M = typemax(typeof(distances[1])) #the largest possible number that this vector can have class_count = zeros(Int, nc) for i in 1:k indexes[i] = indmin(distances) #returns index of the minimum element in a collection distances[indexes[i]] = M #make sure this element is not selected again end klabels = labels[indexes] for i in 1:nc for j in 1:k if klabels[j] == class[i] class_count[i] +=1 end end end m, index = findmax(class_count) conf = m/k #confidence of prediction return class[index], conf end 

рдФрд░ рд╣рд╛рдВ, рд╕рднреА рдХрд╛рд░реНрдпред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрдирдкреБрдЯ рдкрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реЗрдЯ X , рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реЗрдЯ рдЕрдВрдХ x , рдкрд░реАрдХреНрд╖рдг рд╕реЗрдЯ Y рдФрд░ "рдкрдбрд╝реЛрд╕реА" k рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реЛрдЧреАред

рдЖрдЙрдЯрдкреБрдЯ рдкрд░, рд╣рдо рдЕрдиреБрдорд╛рдирд┐рдд рд▓реЗрдмрд▓ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧ рдХреЗ рдкреБрд░рд╕реНрдХрд╛рд░ рдХреА рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред

 function main{T1<:Number, T2<:Any}(X::Array{T1,2}, x::Array{T2,1}, Y::Array{T1,2}, k::Int) N = size(X,1) n = size(Y,1) D = Array(Float64,N) #initialize distance matrix z = Array(eltype(x),n) #initialize labels vector c = Array(Float64, n) #confidence of prediction for i in 1:n for j in 1:N D[j] = CalculateDistance(X[j,:], vec(Y[i,:])) end z[i], c[i] = Classify(D,x,k) end return z, c end 

рдПрдХрд╛рдзрд┐рдХ рд╕рд╛рдЗрдЯ рдкрд░реАрдХреНрд╖рдг


рдЖрдЗрдП рд╣рдо рдХреНрдпрд╛ рдорд┐рд▓рд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВред рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдлрд╝рд╛рдЗрд▓ kNN.jl рдореЗрдВ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВред

рдЖрдзрд╛рд░ рдХреЛ рдУрдкрди рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдХреЛрд░реНрд╕ рд╕реЗ рдЙрдзрд╛рд░ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЛ рд╕реИрдорд╕рдВрдЧ рдорд╛рдирд╡ рдЧрддрд┐рд╡рд┐рдзрд┐ рдорд╛рдиреНрдпрддрд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдбреЗрдЯрд╛ рд╕реИрдорд╕рдВрдЧ рдЧреИрд▓реЗрдХреНрд╕реА рдПрд╕ 3 рдореЛрдмрд╛рдЗрд▓ рдлреЛрди рдХреЗ рдПрдХреНрд╕реЗрд▓реЗрд░реЛрдореАрдЯрд░ рдФрд░ рдЬрд╛рдпрд░реЛрд╕реНрдХреЛрдк рд╕реЗ рдЖрддрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреА рдЬреЗрдм рдореЗрдВ рдлреЛрди рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рд╡реНрдпрдХреНрддрд┐ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХрд╛ рдкреНрд░рдХрд╛рд░ рднреА рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЪрд╛рд╣реЗ рд╡рд╣ рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реЛ, рдЦрдбрд╝рд╛ рд╣реЛ, рд▓реЗрдЯрд╛ рд╣реЛ, рдмреИрда рдЧрдпрд╛ рд╣реЛ рдпрд╛ рд╕реАрдврд╝рд┐рдпреЛрдВ рд╕реЗ рдКрдкрд░ рдЧрдпрд╛ рд╣реЛред рд╣рдо рдПрдХ рд╡рд░реНрдЧреАрдХрд░рдг рд╕рдорд╕реНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рд░реАрд░рд┐рдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдареАрдХ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░реЗрдВрдЧреЗред

рдЯреИрдЧ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдЧрд╛:
1 - рдЪрд▓рдирд╛
2 - рд╕реАрдврд╝рд┐рдпреЛрдВ рд╕реЗ рдЪрдврд╝реЗрдВ
3 - рд╕реАрдврд╝рд┐рдпреЛрдВ рд╕реЗ рдиреАрдЪреЗ
4 - рд╕реАрдЯ
5 - рдЗрд╕ рд╕рдордп рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдЦрдбрд╝рд╛ рдерд╛
6 - рд╡реНрдпрдХреНрддрд┐ рдЭреВрда рдмреЛрд▓ рд░рд╣рд╛ рдерд╛

 include("kNN.jl") training = readdlm("samsung_train.txt"); training_label = readdlm("samsung_train_labels.txt"); testing = readdlm("samsung_test.txt"); testing_label = readdlm("samsung_test_labels.txt"); training_label = map(Int, training_label) testing_label = map(Int, testing_label) z = main(training, vec(training_label), testing, 7) n = length(testing_label) println(sum(testing_label .== z[1]) / n) 

рдкрд░рд┐рдгрд╛рдо: 0.9053274516457415

рд╕рдВрдкреВрд░реНрдг рдкрд░реАрдХреНрд╖рдг рдирдореВрдиреЗ рдореЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЕрдиреБрдорд╛рдирд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЕрдиреБрдкрд╛рдд рд╕реЗ рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ рдЖрдХрд▓рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрддрдирд╛ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рд▓рдХреНрд╖реНрдп рдЬреВрд▓рд┐рдпрд╛ рджрд┐рдЦрд╛рдирд╛ рд╣реИ, рдФрд░ рдпрд╣ рдХрд┐ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдбреЗрдЯрд╛ рд╕рд╛рдЗрдВрд╕ рдореЗрдВ рдЬрдЧрд╣ рд╣реИред

рджреГрд╢реНрдп


рдЕрдЧрд▓рд╛, рдореИрдВ рд╡рд░реНрдЧреАрдХрд░рдг рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рджреЛ-рдЖрдпрд╛рдореА рдЪрд┐рддреНрд░ рдмрдирд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЬрд┐рд╕рдореЗрдВ 561 рдЪрд┐рдиреНрд╣ рд╣реЛрдВ рдФрд░ рди рдЬрд╛рдиреЗ рдЙрдирдореЗрдВ рд╕реЗ рдХреМрди-рд╕рд╛ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛред рдЗрд╕рд▓рд┐рдП, рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдСрд░реНрдереЛрдЧреЛрдирд▓ рд╕рдмрд╕реНрдкреЗрд╕ рдкрд░ рдЖрдпрд╛рдореАрддрд╛ рдФрд░ рдмрд╛рдж рдХреЗ рдбреЗрдЯрд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рдзрд╛рди рдШрдЯрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг (рдкреАрд╕реАрдП) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред рдЬреВрд▓рд┐рдпрд╛ рдореЗрдВ, рдкрд╛рдпрдерди рдХреЗ рд░реВрдк рдореЗрдВ, рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдкреИрдХреЗрдЬ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЕрдкрдиреЗ рдЬреАрд╡рди рдХреЛ рдереЛрдбрд╝рд╛ рд╕рд░рд▓ рдХрд░рддреЗ рд╣реИрдВред

 using MultivariateStats #for PCA A = testing[1:10,:] #PCA for A M_A = fit(PCA, A'; maxoutdim = 2) Jtr_A = transform(M_A, A'); #PCA for training M = fit(PCA, training'; maxoutdim = 2) Jtr = transform(M, training'); using Gadfly #shows training points and uncertain point pl1 = plot(training, layer(x = Jtr[1,:], y = Jtr[2,:],color = training_label, Geom.point), layer(x = Jtr_A[1,:], y = Jtr_A[2,:], Geom.point)) #predicted values for uncertain points from testing data z1 = main(training, vec(training_label), A, 7) pl2 = plot(training, layer(x = Jtr[1,:], y = Jtr[2,:],color = training_label, Geom.point), layer(x = Jtr_A[1,:], y = Jtr_A[2,:],color = z[1], Geom.point)) vstack(pl1, pl2) 

рдкрд╣рд▓реЗ рдЖрдВрдХрдбрд╝реЗ рдореЗрдВ, рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реЗрдЯ рдФрд░ рдкрд░реАрдХреНрд╖рдг рд╕реЗрдЯ рд╕реЗ рдХрдИ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЙрдирдХреА рдХрдХреНрд╖рд╛ рдХреЛ рд╕реМрдВрдкрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рддрджрдиреБрд╕рд╛рд░, рджреВрд╕рд░рд╛ рдЖрдВрдХрдбрд╝рд╛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред




 println(z[1][1:10], z[2][1:10]) > [5, 5, 5, 5, 5, 5, 5, 5, 5, 4][1.0, 0.888889, 0.888889, 0.888889, 1.0, 1.0, 1.0, 1.0, 0.777778, 0.555556] 

рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВ рд╕рд╡рд╛рд▓ рдкреВрдЫрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ "рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреНрд▓рд╕реНрдЯрд░ рдмрджрд╕реВрд░рдд рдХреНрдпреЛрдВ рд╣реИрдВ?"ред рдореИрдВ рд╕рдордЭрд╛ рджреВрдВрдЧрд╛ред рдбреЗрдЯрд╛ рдХреА рдкреНрд░рдХреГрддрд┐ рдФрд░ рдкреАрд╕реАрдП рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдХрд╛рд░рдг рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХреНрд▓рд╕реНрдЯрд░ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЪрд┐рддреНрд░рд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдкреАрд╕реАрдП рдХреЗ рд▓рд┐рдП, рдмрд╕ рдЪрд▓рдирд╛ рдФрд░ рд╕реАрдврд╝рд┐рдпреЛрдВ рдкрд░ рдЪрдврд╝рдирд╛ рдПрдХ рд╡рд░реНрдЧ рдХреА рддрд░рд╣ рд╣реИ - рдЧрддрд┐ рд╡рд░реНрдЧред рддрджрдиреБрд╕рд╛рд░, рджреВрд╕рд░рд╛ рд╡рд░реНрдЧ рдмрд╛рдХреА рд╡рд░реНрдЧ рд╣реИ (рдмреИрдареЗ, рдЦрдбрд╝реЗ, рдЭреВрда рдмреЛрд▓рдирд╛, рдЬреЛ рдЖрдкрд╕ рдореЗрдВ рдмрд╣реБрдд рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИрдВ)ред рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЫрд╣ рдХреЗ рдмрдЬрд╛рдп рджреЛ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдЕрд▓рдЧрд╛рд╡ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖


рдореЗрд░реЗ рд▓рд┐рдП, рдпрд╣ рдЬреВрд▓рд┐рдпрд╛ рдореЗрдВ рд╕рд┐рд░реНрдл рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡рд┐рд╕рд░реНрдЬрди рд╣реИ рдФрд░ рдорд╢реАрди рд╕реАрдЦрдиреЗ рдореЗрдВ рдЗрд╕ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реИред рд╡реИрд╕реЗ, рдЬрд┐рд╕рдореЗрдВ рдореИрдВ рдПрдХ рдкреЗрд╢реЗрд╡рд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╢реМрдХрд┐рдпрд╛ рднреА рд╣реВрдВред рд▓реЗрдХрд┐рди рдЬрдм рдореБрдЭреЗ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛрдЧреА, рдореИрдВ рдЗрд╕ рдорд╛рдорд▓реЗ рдХрд╛ рдФрд░ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреВрдВрдЧрд╛ред рдХрдИ рд╡рд┐рджреЗрд╢реА рд╕реНрд░реЛрддреЛрдВ рдиреЗ рдЬреВрд▓рд┐рдпрд╛ рдкрд░ рджрд╛рдВрд╡ рд▓рдЧрд╛рдпрд╛ред рдЦреИрд░, рдЗрдВрддрдЬрд╛рд░ рдХреАрдЬрд┐рдП рдФрд░ рджреЗрдЦрд┐рдПред

рдкреБрдирд╢реНрдЪ: рдпрджрд┐ рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреЛрд╕реНрдЯреЛрдВ рдореЗрдВ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдЖрдИрдбреАрдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдЬрд┐рдирдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд╕рд╛рде рдореБрдЭреЗ рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВред

Source: https://habr.com/ru/post/hi417967/


All Articles