Regresja nieparametryczna

Regresja nieparametryczna to rodzaj regresji, w której nie zakłada się żadnej specyficznej formy funkcji opisującej zależność pomiędzy zmiennymi objaśnianą i objaśniającą. W odróżnieniu do regresji parametrycznej, w której założenia dotyczące kształtu funkcji są dokładnie określone, regresja nieparametryczna jest bardziej elastyczna i nie wymaga takiej precyzji.

Jednym z najpopularniejszych algorytmów stosowanych w regresji nieparametrycznej jest k-najbliższych sąsiadów (k-NN). W tym algorytmie, dla każdego nowego punktu danych, szuka się k punktów z już znanymi wartościami zmiennej objaśnianej, które są najbliżej niego w przestrzeni danych. Następnie, dla nowego punktu przewiduje się jego wartość zmiennej objaśnianej jako średnia wartości zmiennej objaśnianej dla k najbliższych sąsiadów.

Innym przykładem algorytmu stosowanego w regresji nieparametrycznej jest regresja splajnów. W tym algorytmie, dane są modelowane jako suma prostych funkcji splajnów, co pozwala na lepsze dopasowanie do wykresu niż w przypadku klasycznej regresji liniowej.

Regresja nieparametryczna jest często stosowana wtedy, gdy nie ma pewności co do kształtu funkcji opisującej zależność pomiędzy zmiennymi lub gdy zbiór danych jest mały lub zawiera dużo szumu. Ma jednak tę wadę, że wymaga więcej danych do dokładnego dopasowania niż regresja parametryczna.

Poniższy przykład ilustruje, jak wykorzystać bibliotekę scikit-learn do wykonania regresji k-NN dla zbioru danych dotyczącego cen mieszkań w Bostonie. W tym przykładzie, cena mieszkania będzie zmienną objaśnianą, a pozostałe zmienne będą zmiennymi objaśniającymi.

from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsRegressor

# Wczytaj zbiór danych dotyczący cen mieszkań w Bostonie
X, y = load_boston(return_X_y=True)

# Podziel zbiór na zbiór treningowy i testowy
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

# Utwórz model regresji k-NN
model = KNeighborsRegressor(n_neighbors=5)

# Wytrenuj model na zbiorze treningowym
model.fit(X_train, y_train)

# Oceń model na zbiorze testowym
accuracy = model.score(X_test, y_test)

print("Dokładność modelu: {:.2f}".format(accuracy))

W powyższym kodzie, najpierw wczytujemy zbiór danych dotyczący cen mieszkań w Bostonie za pomocą funkcji load_boston z biblioteki scikit-learn. Następnie, dzielimy zbiór na zbiór treningowy i testowy za pomocą funkcji train_test_split. Następnie, tworzymy model regresji k-NN za pomocą klasy KNeighborsRegressor, a następnie trenujemy go na zbiorze treningowym za pomocą metody fit. W końcu, oceniamy dokładność modelu na zbiorze testowym za pomocą metody score.