Szukam pakietu kalkulacyjnego KNN. Patrzyłem na pakiet imputacji ( http://cran.r-project.org/web/packages/imputation/imputation.pdf ), ale z jakiegoś powodu funkcja imputacji KNN (nawet jeśli podąża za przykładem z opisu) wydaje się tylko przypisywać wartości zerowe (jak poniżej). Rozglądałem się, ale nie mogę jeszcze znaleźć czegoś, dlatego zastanawiałem się, czy ktoś ma inne sugestie dotyczące dobrych pakietów przypisujących KNN?
W.
W poniższym kodzie - wartości NA są zastępowane zerami - a nie średnią wartością Knn
require(imputation)
x = matrix(rnorm(100),10,10)
x.missing = x > 1
x[x.missing] = NA
kNNImpute(x, 3)
x
kNNImpute
ogóle praca (a nie dobrze), więc prawdopodobnie nie zależy ci na uprzedzeniach.Odpowiedzi:
Możesz także wypróbować następujący pakiet: DMwR .
Nie powiodło się w przypadku 3 NN, dając „Błąd knnImputation (x, k = 3): Niewystarczające pełne przypadki do obliczenia sąsiadów”.
Jednak próba 2 daje.
Możesz sprawdzić, czy obserwacje są wystarczające, używając complete.cases (x), gdzie wartość ta musi wynosić co najmniej k.
Jednym ze sposobów rozwiązania tego problemu jest rozluźnienie wymagań (tj. Mniej niekompletnych wierszy), o 1) zwiększenie progu NA lub, alternatywnie, 2) zwiększenie liczby obserwacji.
Oto pierwszy:
oto przykład drugiego ...
Spełnione jest co najmniej k = 3 pełne rzędy, dlatego można przypisać k = 3.
źródło
> x (oryginalna matryca)
> y $ x (matryca kalkulacyjna)
Przypisano wartości, które może. Te, których nie można przypisać, są ustawione na zero.
źródło
imputation
pakiety już nie istnieją (dla wersji R 3.1.2)Pakiet imputacji nie jest już dostępny w CRAN.
Jednym pakietem innym niż DMwR, który oferuje funkcję imputacji kNN, jest VIM.
Również łatwy w użyciu:
źródło
źródło
Powodem, dla którego R nie jest w stanie przypisać, jest to, że w wielu przypadkach brakuje więcej niż jednego atrybutu z rzędu, a zatem nie można obliczyć najbliższego sąsiada. Alternatywnie można albo przypisać zmienne przedziałowe z przewidywanymi prawdopodobieństwami z rozkładu normalnego (lub jeśli jego przekrzywiony używa rozkładu gamma, który ma podobne pochylenie). i użyj drzewa decyzyjnego, aby przewidzieć brakujące wartości w przypadku zmiennej klasy.
źródło