J'ai joué un peu,
- a pris les données de Big Class (poids et taille en x et y, sexe en classe),
- analyse KNN effectuée, formule enregistrée
- généré une grille dans un tableau séparé et copié la formule dans cette grille pour afficher les "zones de décision"
voir capture d'écran. Pourrait être plus joli (c'est dû à la distribution des données, etc.), mais montre ce que l'on entend.
Vous pouvez également le faire de manière interactive, si vous ne voulez pas coder. Ci-joint le code de cet exemple. Cela peut peut-être aider.

Names Default To Here( 1 );
// Create a data table (x and y are height and weight from Big Class, class is sex)
dt_data= New Table( "dt_data",
Add Rows( 40 ),
New Column( "x", Numeric,
"Continuous",
Format( "Fixed Dec", 5, 0 ),
Set Values(
[59, 61, 55, 66, 52, 60, 61, 51, 60, 61, 56, 65, 63, 58, 59, 61, 62, 65, 63, 62,
63, 64, 65, 64, 68, 64, 69, 62, 64, 67, 65, 66, 62, 66, 65, 60, 68, 62, 68, 70]
),
Set Display Width( 48 )
),
New Column("y", Numeric,
"Continuous",
Format( "Fixed Dec", 5, 0 ),
Set Values(
[95, 123, 74, 145, 64, 84, 128, 79, 112, 107, 67, 98, 105, 95, 79, 81, 91, 142,
84, 85, 93, 99, 119, 92, 112, 99, 113, 92, 112, 128, 111, 105, 104, 106, 112,
115, 128, 116, 134, 172]
),
Set Display Width( 48 )
),
New Column( "class", Numeric,
"Nominal",
Format( "Best", 12 ),
Set Values(
[1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2,
1, 1, 2, 2, 2, 2, 2, 1, 1, 2, 1, 2, 2]
)
),
);
// Model class by x and y and save formula
knn_rep = dt_data << K Nearest Neighbors(
Y( :class ),
X( :x, :y ),
K( 10 ),
Set Random Seed( 42 )
);
knn_rep << xpath( "class" ) << Save Prediction Formula( 8 );
knn_rep << Close Window();
// Generate a grid data table to show the whole field
Summarize(
dt_data,
max_x = Max( :x ),
min_x = Min( :x ),
max_y = Max( :y ),
min_y = Min( :y )
);
dx = 1;
get_limit = Function( {value},
Round( value / dx ) * dx + If( value >= 0, 1, -1 ) * dx
);
dtx = As Table(
(get_limit( min_x ) / dx :: get_limit( max_x ) / dx)` * dx,
<<COLUMN names=""></COLUMN>
Je ne connais pas vraiment KNN, mais la première idée de visualisation que j'aurais serait de donner à la prédiction erronée un marqueur différent. Voir capture d'écran ci-dessous. Ce sont les données en forme de U, KNN avec K=4 a donné le meilleur résultat.
- formule de prédiction enregistrée
- fait une nouvelle formule pour comparer la vraie classe et la classe prédite
- utiliser cette formule pour la forme du marqueur
Il existe également une fonction efficace pour trouver les prochains voisins, nous pourrions l'utiliser, pour trouver par exemple la plage des mauvais points et lui donner un aspect différent. Peut-être que cela aide.
