Archiwum kategorii: Ogólne zapiski kusownika it-yka

Ogólne mało szczegółowe zapiski

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/.

Artykuły

Na koniec roku spłynęły recenzje artykułów oddanych do czasopism. Trochę się tego nazbierało a sam rok był bardzo owocny w badania i eksperymenty, przynoszące dość zaskakujące rezultaty.

Zainteresowane osoby tematyką eksploracji danych a dokładniej eksploracją danych tekstowych miło mi jest poinformować, że na ten temat będą mogły poczytać w czasopiśmie Metod Informatyki Stosowanej (http://www.pan.wi.zut.edu.pl/). Artykuł opisujący dziedzinę eksploracji danych tekstowych wraz z jej zastosowaniem w Państwowej Straży Pożarnej PSP nosi tytuł Proces i metody eksploracji danych tekstowych do przetwarzania raportów z akcji ratowniczo-gaśniczych i ukarze się w numerze 4/2011 ww. czasopisma. Z tematyką tą związany jest też następny artykuł pt. System informacyjny na temat sieci hydrantów dla krajowego systemu ratowniczo-gaśniczego: metoda segmentacji tekstu i jej ocena, który także zostanie wydany w tym czasopiśmie i ukaże się w numerze 1/2012. W artykule tym opisano szczegółową realizację eksperymentu opisującą podział tekstu na segmenty. Zajawka tego jak i poprzedniego artykułu w postaci abstraktów dostępne są w dziale Abstrakty, życzę miłej lektury.

Ostatnim nadesłanym do ww. czasopisma artykuł stanowił opis projektu związanego z rozwijaną koncepcją Systemu Wspomagania Decyzji dla PSP z wykorzystaniem komponentów platformy do planowania zasobów przedsiębiorstwa ERP. Artykuł ten ukaże się pod tytułem Wykorzystanie komponentów platformy ERP do budowy drugiej generacji hybrydowego systemu wspomagania decyzji dla PSP, w numerze 3/2011. Również jego zajawkę można zobaczyć w dziale Abstrakty.

Aktualnie cały czas oczekuje na decyzje z wydawnictwa CNBOP „Bezpieczeństwo i Technika Pożarnicza” w którym umieściłem dość interesujące przemyślenia i badania z zakresu inżynierii oprogramowania jak i eksploracji i segmentacji raportów. Niestety na ich ukazanie jak i recenzje jeszcze widać trochę będzie trzeba poczekać.

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)

R strony

Ostatnio szperając  po internecie za materiałami o języku R (w którym aktualnie wytwarzam większość softu do badań i eksperymentów) natknąłem się na świetny blog popularyzujący ten język, czy też platformę do obliczeń statystycznych i nie tylko.  Polecam dla osób zainteresowanych tym tematem wejście na http://www.r-bloggers.com/. Znajdziecie tam najświeższe informacje o zastosowaniach języka R i nie tylko, życzę miłej lektury.

Binarne miary podobieństwa pół-strukturalnych przypadków zdarzeń

W niniejszym wpisie umieściłem część materiału związane z prezentacją i pochodzeniem wybranych miar binarnych. Prezentowane treści ze względu na ograniczone możliwości redakcyjne musiały zostać usunięte z niektórych publikacji. Niemniej blog nie ma żadnych ograniczeń tak więc zachęcam do zapoznania się z pochodzeniem i z odmianami niektórych miar binarnych oraz z autorskimi wyprowadzeniami niektórych z nich.

Czytaj dalej

Konferencja BDAS’11

Zakończyła się kolejna edycja konferencji BDAS’11. Wspaniała impreza oraz niepowtarzalna atmosfera. Zachęcam do uczestniczenia w następnych edycjach ludzi którzy jeszcze nie są pewni – naprawdę warto. Niezbędne informacje na temat konferencji jak i materiały prezentowane na sesjach plakatowych jak i planarnych można odnaleźć na stronie konferencji http://zti.aei.polsl.pl/bdas.

Laboratoria nr 12 program nr 2

Funkcje, ogólna struktura funkcji. Umieszczanie definicji funkcji w programie. Zmienne lokalne i globalne. Zasięg i widzialność identyfikatorów.

#include "stdafx.h"
#include <iostream>
#include <cstring>
 
// Stale okreslajace wielkosc zalokowanej pamieci dla wykorzystywanych tablic
const int ArrSize = 50;
const int tempArrSize = 50;

int getTokenCout(const char *str);

/**
*
* Program Główny prezentujący funckje C++ wyprowadzania treści na wyjście konsoli.
* Trzy strategie (szkielety) algorytmow do zliczania ilosci slow (tokenow) w podanym przez
* uzytkownika lancuchu znakow.Prosze zwrocic uwage na interpretacje znaku spacji. Algorytmy
* w najprostszej postaci nie chronia przed podwojnymi spacjami. Mozna to wykryc poprzez wprowadzenie
* nastepujacego lancucha znakow: "1  2  3 "
*
* @author Marcin Mirończuk
*
*/
int main()
{
    // Tablica przechowujaca lancuch podany przez uzytkownika
    char slowa[ArrSize];
 
    // Wprwadzanie lancucha znakow
    std::cout << "Podaj slowa: " << std::endl;
    std::cin.getline(slowa, ArrSize);
 
	std::cout << "Ilosc wprowadzonych slow to: " << getTokenCout(slowa) << std::endl;

 
    std::cin.get();
    std::cin.get();
 
    return 0;
}

int getTokenCout(const char *str) {
	// Ustawienie zmiennych tymczasowych
    int k = 0;
    int iloscSlow = 0;
 
    // Przetwarzanie wprowadzonego lanucha znakow
    for(int i = 0; i < strlen(str); i++) {
        // Tymczasowa tablic do przechowywania znakow a nastepnie lanucha znakow w postaci osobnych tokenow
        char temp[tempArrSize];
 
        // Najprostszy sposob wykrywania spacji oraz konca lancucha
        if(isspace(str[i]) || str[i+1] == '\0') {
            temp[k] = '\0';
 
            iloscSlow++;
            k = 0;
            temp[k] = '\0';
        } else {
            // Zapis znaku to tablicy tymczasowej
            temp[k] = str[i];
            k++;
        }
    }

	return iloscSlow;
}

Laboratoria nr 3 program nr 2

Zmienne. Deklaracje zmiennych. Komentarze. Podstawowe typy zmiennych. Nazwy zmiennych. Stałe liczbowe. Operatory arytmetyczne. Operator przypisania. Priorytet operatorów arytmetycznych. Wyrażenia arytmetyczne. Funkcja printf. Funkcja scanf. Stałe i funkcje z pliku nagłówkowego math.h oraz cmath. Przykłady kodu w C/C++.

#include "stdafx.h"
#include <iostream> // Biblioteka obslugujace operacje wejscia wyjscia
#include <cmath> // Biblioteka z funkcjami matematycznymi mozna tez zastosowac biblioteke math.h

/**
*
* Program Główny prezentujący funckje C++ wyprowadzania treści na wyjście konsoli.
* Wprowadzanie danych do programu i podstawowe operacje arytmetyczne.
* Prezentacja działania zmiennych, przypisywanie zmiennym wartości z funkcji etc..
*
* @author Marcin Mirończuk
*
*/
int main()
{
	using namespace std; // przestrzen nazw

	double polePowierzchni; // zmienna przechowujaca pole powierzchni

	std::cout << "Podaj powierzchnie swego mieszkania w metrach kwadratowych: ";
	std::cin >> polePowierzchni; // wczytanie pola powierzchni zadanego przez uzytkownika

	double bokKwadratu; // zmienna przechowujaca dlugosc boku kwadratu
	
	bokKwadratu = sqrt(polePowierzchni); // wywolanie funkcji obliczajacej pierwiastek z podanego pola 
										// i zapamietanie wyniku w zmiennej bokKwadratu

	std::cout << "Odpowiada to kwadratowi o boku " << bokKwadratu << " metrow." << std::endl;

	std::cin.get();
	std::cin.get();

	return 0;
}