Archiwum kategorii: Notatki

Ogólne mało szczegółowe zapiski

Hadoop – Mahout

Poniżej umieszczam linki do stron związanych z pakietem Mahout do obliczeń z zakresu sztucznej inteligencji tj. klasyfikacje, grupowanie etc. Rozwiązanie to może stanowić alternatywę dla osób piszących w Javie a nie R. Istnieje również możliwość połączenia technologii. Poniżej prezentuję parę przydatnych linków:

– http://mahout.apache.org/

– http://www.ibm.com/developerworks/java/library/j-mahout/

– http://manning.com/owen/

Życzę jak zawsze miłej lektury.

R rozszerzenia i R paczki

Osoby zainteresowane opublikowaniem swego kodu utworzonego w R project, zarówno w czystym R jak i w postaci rozszerzeń w innych językach, na pewno zainteresują materiały na stronie http://cran.r-project.org/doc/manuals/R-exts.html. Materiały tam zebrane omawiają szczegółowo i wyczerpująco temat tworzenia własnych dodatków do R. Osobom które początkują w tym temacie polecam nieco bardziej „lżejsze” lektóry w postaci:

– opracowania krok po kroku jak tworzyć paczki w R http://cran.r-project.org/doc/contrib/Leisch-CreatingPackages.pdf

– w googlu albo http://search.carrot2.org/stable/search wstukać frazę Writing R Extensions 

Osobiście korzystałem z pierwszego jak i drugiego linku. Natomiast projekt który utworzyłem związany z implementacją softu do kalsyfikacji umieściłem na platformie http://r-forge.r-project.org/.

Resolved problem with revoIPC 1.0-3 and new g++

Few days ago I had a installation problem package revoIPC 1.0-3 and doSMP 1.0.1. When I was compiled revoIPC 1.0-3, compilator returned this error:

g++ -I/usr/local/lib64/R/include  -I/usr/local/include   -I . -fpic
-g -O2 -c interface.cc -o interface.o
In file included from ./boost/interprocess/detail/

utilities.hpp:29:0,
                from ./boost/interprocess/mapped_region.hpp:20,
                from
./boost/interprocess/detail/managed_open_or_create_impl.hpp:17,
                from boost/interprocess/managed_mapped_file.hpp:20,
                from queue.h:17,
                from interface.cc:3:
./boost/interprocess/detail/iterators.hpp:352:15: error: reference
'm_value’ cannot be declared 'mutable’ [-fpermissive]
make: *** [interface.o] Błąd 1
ERROR: compilation failed for package 'revoIPC’

Rich Calaway from revolutionanalytics.com helped me quickly and sent solution. The patch with fix this problem is a:

„… go to src/boost/interprocess/detail/iterators.hpp and comment out lines 341-353”

Thanks for this advice we can compile revoIPC 1.0-3 and use it in with doSMP 1.0.1. Just one thinks, if we use doSMP 1.0.1 in new revoIPC 1.0-4 and we try execute this program:

rmSessions(all.names = TRUE)
w <- startWorkers(2)
registerDoSMP(w)
foreach(i=1:3) %dopar% sqrt(i)

R return this error:

> foreach(i=1:3) %dopar% sqrt(i)  *** caught segfault ***
address 0x7fd0e562f58c, cause 'memory not mapped’ Traceback:
 1: .Call(„returnResult”, q, t$task, serialize(res, NULL))
 2: ipcTaskReturnResult(taskq, taskchunk, resultchunk)
 3: doSMP:::workerLoop(qname, rank, verbose, out)
aborting …

Rich Calaway helped me fixed this problem to. I don’t check it but if someone want to use revoIPC 1.0-4 must:

„… remove the PKG_CPPFLAGS=-DNDEBUG line from Makevars.in in the src directory.”

Good luck.

R stronki

Poniżej umieszczam kilka przydatnych linków do stron internetowych opisujących pewne zagadnienia które często wymagają rozwiązania lub zastosowania podczas badań wspieranych pakietem R project. Na stronach tych można uzyskać informacje na temat:

– sortowania oraz grupowania danych (http://www.ats.ucla.edu/stat/r/faq/sort.htmhttp://stackoverflow.com/questions/1296646/how-to-sort-a-dataframe-by-columns-in-r). Przy czym pierwszy link jest także krótkim kursem wprowadzającym do R,

– profilowania aplikacji napisanych w R, w szczególności tych które wymagają użycia dużych zasobów pamięci. Czasami warto wiedzieć co aktualnie rezyduje na stosie pamięci (http://developer.r-project.org/memory-profiling.htmlhttp://heuristically.wordpress.com/2010/01/04/r-memory-usage-statistics-variable/),

– tworzenia wykresów Pareto informacje można znaleźć na stronie http://www.oga-lab.net/RGM2/func.php?rd_id=qcc:pareto.chart opisującej pakiet i metody które służą do tego celu.

Życzę miłego korzystania z wyżej przedstawionych rozwiązań.

R mapy i R geotagowanie

Ostatnio poszukiwałem rozwiązania do geotagowania. Proces ten chciałem wykonać za pomocą nie API google map dla java scriptu lecz web serwisów i r project. Podyktowane to było tym aby utrzymać jednolite rozwiązanie programistyczne tj. jednolitą platformę eksperymentalną do przetwarzania tekstów w postaci raportów zaimplementowaną w jednym języku, bez różnego rodzaju miksów. Na początku rozpatrywałem użycie PHP i Java Scriptu niemniej po przeszperaniu internetu natknąłem się dość ciekawe rozwiązanie dla r project. Poniżej prezentuje listę linków związanych z zastosowaniem API google map w połączeniu z r project:

– http://www.r-chart.com/2010/07/maps-geocoding-and-r-user-conference.html

– http://cran.r-project.org/web/packages/RgoogleMaps/vignettes/RgoogleMaps-intro.pdf

– http://cran.r-project.org/web/packages/RgoogleMaps/RgoogleMaps.pdf

– http://cran.r-project.org/web/packages/RgoogleMaps/index.html

– http://cran.r-project.org/web/packages/gooJSON/gooJSON.pdf

– http://cran.r-project.org/web/packages/googleVis/vignettes/googleVis.pdf

– http://cran.r-project.org/web/packages/plotGoogleMaps/plotGoogleMaps.pdf

Powodzenia w stosowaniu ww. rozwiązań.

R project – obiektowość

R project posiada trzy systemy obiektowe: S3, S4 i S5. Odniesienia i opisy tych systemów można znaleźć na stronach:

https://github.com/hadley/devtools/wiki/R5 – opisującej nowy system S5,

http://biecek.pl/R/RC/Jakub%20Derbisz%20R%20reference%20card%20classes.pdf, opisującej podstawowe operatory klas,

http://stat.ethz.ch/R-manual/R-devel/library/methods/html/refClass.html, manual opisujący system S5 i funkcję setRefClass() służącą do tworzenia interfejsu klasy,

http://www.youtube.com/watch?v=UZkaZhsOfT4, prezentacja zawierająca opis trzech ww. systemów oraz opis integracji R project z C++ poprzez pakiet Rcpp.

Zainteresowanym życzę miłej lektury. Poniżej natomiast przedtsawiam próbke kodu opisującej interfejs klasy account zaczerpniętej z prezentacji, do której link znajduje się na ostatniej pozycji ww. stron.

account <- setRefClass("Account_R5",
	fields = list(
		balance = "numeric",
		overdraft = "numeric"
	),
	methods = list(
		withdraw = function(amount) {
			print("Compute withdraw...")
		},
		deposit = function(amount) {
			print("Compute deposit...")
		}
	)
)

x <- account$new(balance = 10.0, overdraft = 0.0)

x$withdraw(5)
x$deposit(10)