Statystyka, prognozowanie, ekonometria, data mining Strona Główna Statystyka, prognozowanie, ekonometria, data mining
Forum miłośników statystyki - Portal Statystyczny

FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy  StatystykiStatystyki
RejestracjaRejestracja  ZalogujZaloguj  Chat   Regulamin  Kadra forum
PORTAL STATYSTYCZNY
 Ogłoszenie 
Rozpoczął swoją działalność portal statystyczny - masz pomysł na jego rozwój ?
Portal jest w chwili obecnej intensywnie rozwijany. Dodawane są nowe moduły, uaktualniana jest jego zawartość.
Osoby znające statystykę lub ekonometrię, metody prognozowania, data mining, a chcące pomóc w rozwoju forum statystycznego, rozbudowy portalu o dodatkowe treści, proszę o kontakt na adres e-mail: administrator(małpa)statystycy.pl

Drogi forumowiczu! Zanim napiszesz posta zapoznaj się z regulaminem forum i przedstaw się
The International Year of Statistics (Statistics2013) Free statistics help forum. Discuss statistical research, statistical consulting Smarter Poland Portal statystyczny

Poprzedni temat «» Następny temat
Metoda najbliższych sąsiadów - wizualizacja
Autor Wiadomość
Grześ 
Starszy Szeregowy



Posty: 39
Skąd: Biała Podlaska
Wysłany: 2009-10-25, 14:48   Metoda najbliższych sąsiadów - wizualizacja

W manualu "Na przełaj przez Data Mining" dostępnym pod adresem:
http://www.biecek.pl/stat...elajPrzezDM.pdf
Jest interesująca mnie metoda k-sąsiadów na str. 31. Czy ktoś z uprzejmych
forumowiczów byłby w stanie podpowiedzieć w jaki sposób dokonać przedstawienia
wyników w formie graficznej, jakie mam miejsce na rys.5.3 na str.33? Tzn. jak wstawić wartości i które do funkcji rysującej wyniki.
Dla ułatwienia podaję przykładowy kod dostępny w wyżej wymienionym manualu:

Cytat:
library(klaR)
library(ipred)
library(mlbench)
data(PimaIndiansDiabetes2)
dane=na.omit(PimaIndiansDiabetes2)[,c(2,5,9)]
dane[,2]=log(dane[,2])
dane[,1:2]=scale(dane[,1:2])
zbior.uczacy=sample(1:nrow(dane),nrow(dane)/2,F)

klasyfikatorKNN=ipredknn(diabetes~glucose+insulin,data=dane,subset=zbior.uczacy,k=3)

oceny=predict(klasyfikatorKNN,dane[-zbior.uczacy,],"class")

Dodam, iż chodzi o pakiet "klaR" i funkcje "drawparti":
Kod:
drawparti(grouping, x, y, method = "lda", prec = 100, xlab = NULL,
    ylab = NULL, col.correct = "black", col.wrong = "red",
    col.mean = "black", col.contour = "darkgrey",
    gs = as.character(grouping), pch.mean = 19, cex.mean = 1.3,
    print.err = 0.7, legend.err = FALSE, legend.bg = "white",
    imageplot = TRUE, image.colors = cm.colors(nc),
    plot.control = list(), ...)

lub "partimat"
Kod:
partimat(x, grouping, method = "lda", prec = 100,
    nplots.vert, nplots.hor, main = "Partition Plot", name, mar,
    plot.matrix = FALSE, plot.control = list(), ...)
 
     
Google

Wysłany:    Reklama google.

 
 
Crunchy 
Major
Crunchy


Pomógł: 62 razy
Posty: 974
Skąd: Katowice
Wysłany: 2009-10-25, 15:11   

Przecież na tej samej stronie jest kod...
Kod:
mN<-NaiveBayes(diabetes~glucose+insulin,data=dane,subset=zbior.uczacy)
plot(mN)

Rozumiem, że on nie działa...? (nie sprawdzałem)
 
     
Grześ 
Starszy Szeregowy



Posty: 39
Skąd: Biała Podlaska
  Wysłany: 2009-10-25, 16:21   

Kod:
plot(mN)
działa ale to jest wykres oceny gęstości. Ja pytałem o rozrysowanie przykładowych obszarów decyzyjnych jak na poniższym rysunku

dec.jpg
Plik ściągnięto 204 raz(y) 27,6 KB

 
     
Crunchy 
Major
Crunchy


Pomógł: 62 razy
Posty: 974
Skąd: Katowice
Wysłany: 2009-10-25, 20:02   

Hmmm... mi się wydaje, że z ipredknn powinieneś zrobić ramkę danych z dołożonymi poziomami czynnika diabetes i zmodyfikować layout wykresu.
Kod:
klasyfikatorKNN$learn$X
 
     
Grześ 
Starszy Szeregowy



Posty: 39
Skąd: Biała Podlaska
Wysłany: 2009-10-26, 13:40   

Dzięki! udało mi się :-) Mam rysujący się rysunek i pozaznaczane obszary najbliższych obserwacji!
Mimo przedstawiania obserwacji w formie graficznej chciałbym móc dodatkowo znaleźć konkretne wartości odpowiadające wartościom, które są zaznaczone jako te mające skupisko (o wspólnych obszarach) od tych zaznaczonych jako obserwacje odstające czy też nie wykazujące żadnych skupisk. Jak możne je odnaleźć?
 
     
newfuntek 
Szeregowy
newfuntek


Wiek: 42
Posty: 17
Skąd: Warszawa
Wysłany: 2010-03-10, 18:18   Rozwiązanie problemu

Dla metody drawparti stosuje się sknn, a nie ipredknn.
Podsumowując:
Kod:
library(klaR)
library(ipred)
library(mlbench)
data(PimaIndiansDiabetes2)
dane=na.omit(
PimaIndiansDiabetes2)[,c(2,5,9)]
dane[,2]=log(dane[,2])
dane[,1:2]=scale(dane[,1:2])
dane<-data.frame(glucose=dane$
glucose,insulin=dane$insulin,diabetes=dane$diabetes)
zbior.uczacy<-sort(sample(1:nrow(dane),nrow(dane)/2,F))
klasyfikatorKNN=sknn(diabetes~glucose+insulin,data=dane,subset=zbior.uczacy,k=3)
oceny=predict(klasyfikatorKNN,dane[-zbior.uczacy,],"class")
klasyfikatorKNN$learn[,"glucose"]-dane[zbior.uczacy,1]
klasyfikatorKNN$learn[,"insulin"]-dane[zbior.uczacy,2]

drawparti(dane[zbior.uczacy,3], dane[zbior.uczacy,1], dane[zbior.uczacy,2], method = "sknn", prec = 100, xlab = "glucose", ylab = "insulin")


gdzie drawparti musi być na zbiorze uczącym, zatem nie najlepiej testuje klasyfikator, bo na zbiorze, na którym został utworzony. Testować trzeba na innym zbiorze. Stąd najlepsza metoda oceny, to testowanie na zbiorze -zbior.uczacy, ale drawparti na tym zbiorze, by wyszkoliło metodę i podało jej błędy na tym samym zbiorze, zatem
Kod:
  table( oceny$class,dane[-zbior.uczacy,3])
          neg pos
  neg 100  26
  pos  35  35

podaje rzeczywisty błąd na innym zbiorze, zresztą dosyć duży, a
Kod:
   table(klasyfikatorKNN$grouping,dane[zbior.uczacy,3])
          neg pos
  neg 127   0
  pos   0  69

gdzie klasyfikatorKNN$grouping ma te same indeksy, co zbior.uczacy; podejrzewam, że to to samo i trzeba zastosować klasyfikator na tym samym zbiorze, aby zrozumieć drawparti:
Kod:
oceny1=predict(klasyfikatorKNN,dane[zbior.uczacy,],"class")
table( oceny1$class,dane[zbior.uczacy,3])
          neg pos
  neg 116  18
  pos  11  51

Dopiero teraz masz te same wartości, co na rysunku
Kod:
drawparti(dane[zbior.uczacy,3], dane[zbior.uczacy,1], dane[zbior.uczacy,2], method = "sknn", prec = 100, xlab = "glucose", ylab = "insulin") i te same błędy.


ZATEM, aby uzyskać te źle ustawione punkty, musisz użyć klasyfikatora i otrzymujesz oceny1$class do porównania z oryginalnymi wartościami na których klasyfikator był uczony dane[zbior.uczacy,3] i które są zapisane w klasyfikatorKNN$grouping (czy też klasyfikatorKNN$learn$y) , ale nie jest to działanie klasyfikatora, tylko dane wejściowe.
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych zakładek(IE)
Wersja do druku

Skocz do:  

Podobne Tematy
Temat Autor Forum Odpowiedzi Ostatni post
Brak nowych postów Przyklejony: [R] Wizualizacja danych na mapie
Czyli, prosty sposób, żeby pokazać dane na mapie Polski
Pietrucha Program R, Data Mining, Metody klasyfikacji 26 2014-04-08, 16:54
rojmarek
Brak nowych postów Przyklejony: Metoda FDR (q-value)
Maslak Testowanie hipotez statystycznych 4 2011-06-01, 21:11
mathkit
Brak nowych postów Przyklejony: [R] metoda isoMDS
Grześ Program R, Data Mining, Metody klasyfikacji 1 2009-08-30, 15:47
cogito
Brak nowych postów Przyklejony: metoda servqual
diancia22 Statystyka w badaniach sondażowych rynku 1 2010-03-14, 22:53
grzegorz_77
Brak nowych postów Przyklejony: metoda krzywych Pearsona
dobór rozkładu
PakK_Pl Teoria estymacji 3 2008-12-30, 22:29
PakK_Pl

Ideą przyświecającą istnieniu forum statystycznego jest stworzenie możliwości wymiany informacji, poglądów i doświadczeń osób związanych ze statystyką, mierzenie się z różnego rodzaju problemami statystycznymi i aktuarialnymi. Poruszane problemy: Statystyka w badaniach sondażowych rynku, metody reprezentacyjne, Teoria i rachunek prawdopodobieństwa, statystyka opisowa, teoria estymacji, testowanie hipotez statystycznych, ekonometria, prognozowanie, metody data mining.
Copyright (C) 2006-2013 Statystycy.pl
Powered by phpBB modified by Przemo © 2003 phpBB Group
Strona wygenerowana w 0,15 sekundy. Zapytań do SQL: 12