Ich bin mit KNN nicht wirklich vertraut, aber die erste Idee für die Visualisierung, die ich hätte, ist, dem falsch vorhergesagten einen anderen Marker zu geben. Siehe Screenshot unten. Es sind die U-förmigen Daten, KNN mit K = 4 ergab das beste Ergebnis.
- gespeicherte Vorhersageformel
- hat eine neue Formel erstellt, um die wahre Klasse und die vorhergesagte Klasse zu vergleichen
- Verwenden Sie diese Formel für die Markerform
Es gibt auch eine effiziente Funktion, um die nächsten Nachbarn zu finden. Wir könnten diese verwenden, um z. B. den Bereich der falschen Punkte zu finden und ihm ein anderes Aussehen zu geben. Vielleicht hilft das.

Ich habe ein bisschen rumgespielt,
- nahm die Daten von Big Class (Gewicht und Größe als x und y, Geschlecht als Klasse),
- KNN-Analyse durchgeführt, Formel gespeichert
- erzeugte ein Raster in einer separaten Tabelle und kopierte die Formel in dieses Raster, um "Entscheidungsbereiche" anzuzeigen.
siehe Screenshot. Könnte schöner sein (es liegt an der Datenverteilung usw.), zeigt aber, was gemeint ist.
Sie können dies auch interaktiv tun, wenn Sie nicht codieren möchten. Anbei der Code für dieses Beispiel. Vielleicht kann das helfen.

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>