Ich habe ein bisschen herumgespielt,
- nahm die Daten von Big Class (Gewicht und Größe als x und y, Geschlecht als Klasse),
- KNN-Analyse gemacht, Formel gespeichert
- ein Raster in einer separaten Tabelle generiert und die Formel in dieses Raster kopiert, um "Entscheidungsbereiche" anzuzeigen
siehe Screenshot. Könnte schöner sein (liegt an Datenverteilung etc.), zeigt aber was gemeint ist.
Sie können dies auch interaktiv tun, wenn Sie nicht programmieren 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>
Ich bin mit KNN nicht wirklich vertraut, aber die erste Idee zur Visualisierung, die ich hätte, wäre, den 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
- neue Formel erstellt, um wahre Klasse und vorhergesagte Klasse zu vergleichen
- Verwenden Sie diese Formel für die Markerform
Es gibt auch eine effiziente Funktion zum Finden nächster Nachbarn, die wir verwenden könnten, um zB die Reichweite der falschen Punkte zu finden und ihm ein anderes Aussehen zu geben. Vielleicht hilft das.
