KNeighborsRegressor
#include <Skigen/Neighbors>
template <typename Scalar = double>
class Skigen::KNeighborsRegressor(n_neighbors=5)
Regression based on k-nearest neighbors.
The target is predicted by local interpolation of the targets associated of the nearest neighbors in the training set (mean of the k nearest values).
Mirrors sklearn.neighbors.KNeighborsRegressor.
Parameters:
- n_neighbors : int, default=5
Number of neighbors to use (
int, default5).
Attributes:
-
n_neighbors : int Number of neighbors.
-
n_targets : int
Methods
fit(X, y)
Fit the k-nearest neighbors regressor from the training set.
predict(X)
Predict target values for the provided data.
score(X, y)
Return the coefficient of determination.
fit_multi(X, Y)
Fit on multi-target Y (shape n × n_targets).
Stores X and Y; prediction averages neighbour rows of Y_train_ per target. Single-target API is unchanged — predict() keeps returning a 1-D vector reflecting the first target column when fit_multi was used.
predict_multi(X)
Predict (n_samples × n_targets) — mean of neighbour rows from Y_train_ per target.
Example
// KNN for regression
Eigen::VectorXd y_reg(split.X_train.rows());
for (Eigen::Index i = 0; i < y_reg.size(); ++i)
y_reg(i) = split.X_train(i, 0) + 0.5 * split.X_train(i, 1);
Skigen::KNeighborsRegressor<double> knn_reg(5);
knn_reg.fit(split.X_train, y_reg);
Eigen::VectorXd y_reg_test(split.X_test.rows());
for (Eigen::Index i = 0; i < y_reg_test.size(); ++i)
y_reg_test(i) = split.X_test(i, 0) + 0.5 * split.X_test(i, 1);
std::cout << "\n=== KNeighborsRegressor (k=5) ===\n";
std::cout << "R²: " << knn_reg.score(split.X_test, y_reg_test) << "\n";