Předzpracování dat. Cvičení 2: Import a příprava dat v Matlabu MI-PDD, 09/2011. Pavel Kordík MI-POA

Podobné dokumenty
Předzpracování dat. Pavel Kordík. Department of Computer Systems Faculty of Information Technology Czech Technical University in Prague

Úvod do Matlabu. Praha & EU: Investujeme do vaší budoucnosti. 1 / 24 Úvod do Matlabu

Základy algoritmizace a programování

pi Ludolfovo číslo π = 3,14159 e Eulerovo číslo e = 2,71828 (lze spočítat jako exp(1)), např. je v Octave, v MATLABu tato konstanta e není

MATLAB základy. Roman Stanec PEF MZLU

Systém je citlivý na velikost písmen CASE SENSITIVE rozeznává malá velká písmena, např. PROM=1; PROm=1; PRom=1; Prom=1; prom=1; - 5 různých proměnných

1 Cvičení 1a - Úvod od programování v Matlabu/Octave

Stručný návod k programu Octave

cyklus s daným počtem opakování cyklus s podmínkou na začátku (cyklus bez udání počtu opakování)

- transpozice (odlišuje se od překlopení pro komplexní čísla) - překlopení matice pole podle hlavní diagonály, např.: A.' ans =

while cyklus s podmínkou na začátku cyklus bez udání počtu opakování while podmínka příkazy; příkazy; příkazy; end; % další pokračování programu

X37SGS Signály a systémy

% vyhledání prvku s max. velikostí v jednotlivých sloupcích matice X

KTE / PPEL Počítačová podpora v elektrotechnice

E+034 = ; = e E+034

Příklady k prvnímu testu - Matlab

Příklad: Řešte soustavu lineárních algebraických rovnic 10x 1 + 5x 2 +70x 3 + 5x 4 + 5x 5 = 275 2x 1 + 7x 2 + 6x 3 + 9x 4 + 6x 5 = 100 8x 1 + 9x 2 +

MATrixLABoratory letný semester 2004/2005

Základy algoritmizace a programování

Lineární algebra s Matlabem cvičení 3

Příklad: Součet náhodných čísel ve vektoru s počtem prvků, které zadá uživatel, pomocí sum() a pomocí cyklu for. Ověříme, že příliš výpisů na

Vytěžování znalostí z dat

- 1 - MATLAB základy I.Pultarová, únor 2002

Vytěžování znalostí z dat

Seminář z MATLABU. Jiří Krejsa. A2/710 krejsa@fme.vutbr.cz

Příklad elektrický obvod se stejnosměrným zdrojem napětí

Vytěžování znalostí z dat

Základy programování: Algoritmizace v systému MATLAB

Příklady k druhému testu - Matlab

Předzpracování dat. Pavel Kordík. Department of Computer Systems Faculty of Information Technology Czech Technical University in Prague

Grafické výstupy v Octave/Matlabu a GnuPlotu

Kreslení grafů v Matlabu

KTE / PPEL Počítačová podpora v elektrotechnice

Základy algoritmizace a programování

ROZ1 - Cv. 1 - Zobrazenэ snэmku a zсklady Matlabu

Indexové výrazy >> A(1,:) >> A=[1,2;3,4] >> a=a(:) >> a(3)= 8 A = a = ans = 1 2. >> a a = >> A(2,1) >> A(:,1) ans = ans = >> a(3) ans =

Skriptování aneb funkce a procedury, cykly a vstupy a výstupy

. Poté hodnoty z intervalu [ 1 4, 1 2. ] nahraďte hodnotami přirozeného logaritmu.

Pokračování příkladu: funkce s2cos pro výpočet y = sin 2 (x) cos(x) function y = s2cos(x) y = (sin(x).^ 2).* cos(x);

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

NPGR032 Cv úvod

Přednáška 2: Model, hodnocení modelu, metoda K nejbližších sousedů

Úvod do Matlabu. Vít Vondrák Katedra aplikované matematiky FEI, VŠB-TU Ostrava

Řešení diferenciálních rovnic v MATLABu

Pôvodne: Interaktívny program na operácie s maticami Teraz: Vysoko úrovňový jazyk na technické výpočty a interaktívne prostredie na:

PPEL_3_cviceni_MATLAB.txt. % zadat 6 hodnot mezi cisly 2 a 8 % linspace (pocatek, konec, pocet bodu)

Vytěžování znalostí z dat

Operační systémy. Cvičení 4: Programování v C pod Unixem

SEMESTRÁLNÍ PRÁCE Z X37SAS Zadání č. 7

Algoritmy a datové struktury

Vytěžování znalostí z dat

3.T Technické výpočty v Octave/Matlabu zpracování a zobrazení dat

více křivek v jednom grafu hold on přidrží aktuální graf v grafickém okně, lze nakreslit více grafů do jednoho grafického okna postupně hold off

Skriptování co se do minula nevešlo, práce s řetězci a řešení rovnic

KTE / PPEL Počítačová podpora v elektrotechnice

Doňar B., Zaplatílek K.: MATLAB - tvorba uživatelských aplikací, BEN - technická literatura, Praha, (ISBN:

6. Příkazy a řídící struktury v Javě

Úvod do programování - Java. Cvičení č.4

Vytěžování znalostí z dat

MATLAB HRAVĚ Zdeněk Jančík, FIT VUT Brno

IAJCE Přednáška č. 8. double tprumer = (t1 + t2 + t3 + t4 + t5 + t6 + t7) / 7; Console.Write("\nPrumerna teplota je {0}", tprumer);

LINEÁRNÍ ALGEBRA S MATLABEM

Martin Flusser. November 1, 2016

Interpolace a aproximace dat.

MATLAB, v , Release 13

KTE / PPEL Počítačová podpora v elektrotechnice

Univerzitní licence MATLABu. Pište mail na: se žádostí o nejnovější licenci MATLABu.

Předmluva 9 Obsah knihy 9 Typografické konvence 10 Informace o autorovi 10 Poděkování 10

P íklady k prvnímu testu - Scilab

Pracovní text a úkoly ke cvičením MF002

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

Aplikovaná numerická matematika - ANM

Úvod do Operačních Systémů

Cykly. Základy programování 1 Martin Kauer (Tomáš Kühr)

1 Zobrazení 1 ZOBRAZENÍ 1. Zobrazení a algebraické struktury. (a) Ukažte, že zobrazení f : x

1. Vsechny promenne jsou matice. Skalar je a(1,1). Vektor je bud' radkovy a(1,5) nebo sloupcovy

Basic256 - úvod do programování Příklady. ing. petr polách

MATLB: p edná²ka 2. Datové typy a struktury. TECHNICKÁ UNIVERZITA V LIBERCI Fakulta mechatroniky, informatiky a mezioborových studií.

Programování v jazyce JavaScript

Řídicí struktury. alg3 1

Programovani v Maplu Procedura

P íklady k druhému testu - Matlab

3. přednáška. Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

11MAMY LS 2017/2018. Úvod do Matlabu. 21. února Skupina 01. reseni2.m a tak dále + M souborem zadané funkce z příkladu 3 + souborem skupina.

Histogram. 11. února Zadání

Operace s vektory a maticemi + Funkce

KTE / PPEL Počítačová podpora v elektrotechnice

Paralelní a distribuované výpočty (B4B36PDV)

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 23, 2016

Úvod do Operačních Systémů

Lineární algebra s Matlabem. Přednáška 4

Vytěžování znalostí z dat

Programování v chemii (MATLAB)

Základy programování (IZP)

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1

Velmi stručný návod jak dostat data z Terminálu Bloomberg do R

Transkript:

Pavel Kordík(ČVUT FIT) Předzpracování dat MI-PDD, 2012, Cvičení 2 1/29 Předzpracování dat Pavel Kordík Department of Computer Systems Faculty of Information Technology Czech Technical University in Prague Cvičení 2: Import a příprava dat v Matlabu MI-PDD, 09/2011 MI-POA Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Matlab, pracovní adresář Pavel Kordík(ČVUT FIT) Předzpracování dat MI-PDD, 2012, Cvičení 2 2/29

Pavel Kordík(ČVUT FIT) Předzpracování dat MI-PDD, 2012, Cvičení 2 3/29 Skaláry skalár = matice 1x1 >> s = 1 >> s = 1; >> s >> disp(s); s = s = 1 1 1 operace >> t = s + 3 >> t ^ 2 t = ans = 4 16 Př.: zadejte rozměry obdélníku, vypočtěte obsah

Pavel Kordík(ČVUT FIT) Předzpracování dat MI-PDD, 2012, Cvičení 2 4/29 Vektory řádkové, sloupcové = matice Dx1 nebo 1xD >> vrow = [1 2 3] >> vcol = [1; 2; 3] vrow = nebo 1 2 3 >> vcol = [1 2 3]' vcol = >> vrow(2) 1 ans = 2 2 3 >> length(vrow) ans = 3

Pavel Kordík(ČVUT FIT) Předzpracování dat MI-PDD, 2012, Cvičení 2 5/29 Vektory operátor : vytvoření vektoru s ekvidistantními prvky >> v1 = 1:10 v1 = 1 2 3 4 5 6 7 8 9 10 >> v2 = 10:-2:1 v2 = 10 8 6 4 2 Př.: vytvořte sloupcový vektor lichých čísel mezi 12^2 a 13^2

Pavel Kordík(ČVUT FIT) Předzpracování dat MI-PDD, 2012, Cvičení 2 6/29 Matice vytvoření vektoru s ekvidistantními prvky >> M = [11 12 13; 21 22 23; 31 32 33] >> M = [M; [41 42 43]] >> M = [M [14 24 34 44]'] >> [M M] >> [M; M] >> [M M; M M] >> size([m M]) Př.: vytvořte dvouřádkovou matici s prvky 0 až 9 v prvním řádku a 10 až 19 v druhém řádku

Matice přístup k prvkům indexování pomocí kulatých závorek >> M = [0:9; 10:19, 20:29] >> M(2,3) >> M(10) výběr podmatice >> M(1:2,[1 2 4]) >> M(2,:) % cely radek >> M(:) % sl. vektor >> M(:,3) % cely sloupec přiřazování >> M(2,3) = -23 >> M(1,:) = [1 2 3 4] %radek >> M(1:2,[2 4]) = [-12-14; -22-24] % podmatice >> M(end,:) = [] % vymazani posledniho radku Pavel Kordík(ČVUT FIT) Předzpracování dat MI-PDD, 2012, Cvičení 2 7/29

Pavel Kordík(ČVUT FIT) Předzpracování dat MI-PDD, 2012, Cvičení 2 8/29 Matice spec., operace speciální typy zeros(2,3) ones(2,3) eye(2,3) rand(2,3) randn(2,3) % normální rozdělení maticové operace Ma = [1 2; 3 4]; Mb = [11 12; 13 14]; Ma + Mb Ma * Mb Ma.* Mb inv(ma) inv(ma)*ma Ma ^ 2 Ma.^ 2 Ma / 2 Mb./ Ma eig(ma)

Pavel Kordík(ČVUT FIT) Předzpracování dat MI-PDD, 2012, Cvičení 2 9/29 Lineární algebra řešení soustavy Ax = b >> A = [1 2 3; -1 0 2; 1 3 1]; b = [1 0 0]'; >> x = inv(a)*b % pomoci inverzni matice >> x = A\b % lepe, pomoci Gaussovy eliminace >> A*x-b % kontrola spravnosti

Pavel Kordík(ČVUT FIT) Předzpracování dat MI-PDD, 2012, Cvičení 2 10/29 Logické operace >> a = 1:6; b = a>3 >> b = (a>3) (a==1) >> b = (a>3) & (a~=5) >> ind = find(b) % indexy nenulovych prvku

Pavel Kordík(ČVUT FIT) Předzpracování dat MI-PDD, 2012, Cvičení 2 11/29 Grafy plot >> x = [0:0.05:1] * 2*pi; >> ysin = sin(x); >> plot(x,ysin); >> hold on; % Podrzime obrazek, aby se graf pridal >> ycos = cos(x); >> plot(x,ycos,'mx:'); >> plot(x,ysin,'ro--'); % nastaveni barvy (r), bodu % (o) a vzoru cary (--)

Pavel Kordík(ČVUT FIT) Předzpracování dat MI-PDD, 2012, Cvičení 2 12/29 Grafy 2 >> close all; % Zavreme vsechny otevrene grafy >> x = 1:10; >> y = exp(-x); >> plot(x,y); >> semilogy(x,y); >> subplot(2,1,1); >> plot(x,y); >> subplot(2,1,2); >> semilogy(x,y);

Příklad vytvořte vektor v1, obsahující 100 náhodných čísel od -0.5 do 0.5 vytvořte matici s následujícími sloupci (i je číslo řádku): i v1(i) log(i) vykreslete modře sloupeček log(i) a červeně log(i)+v1(i) Pavel Kordík(ČVUT FIT) Předzpracování dat MI-PDD, 2012, Cvičení 2 13/29

Pavel Kordík(ČVUT FIT) Předzpracování dat MI-PDD, 2012, Cvičení 2 14/29 Řešení >> v1 = rand(100,1) 0.5 >> M = [(1:100)' v1 log(1:100)'] >> hold on >> plot(m(:,1), M(:,3), 'b') >> plot(m(:,1), M(:,3)+M(:,2), 'r')

Pavel Kordík(ČVUT FIT) Předzpracování dat MI-PDD, 2012, Cvičení 2 15/29 Programování - funkce funkce v m-souborech function [soucet,rozdil] = SlozitaFunkce(a,b) % % Tohle je help k funkci SlozitaFunkce. Vypisuje se % zadanim prikazu 'help SlozitaFunkce'. % soucet = a+b; rozdil = a-b; end % Nepovinne

Pavel Kordík(ČVUT FIT) Předzpracování dat MI-PDD, 2012, Cvičení 2 16/29 Programování - funkce vypsání, spuštění, nápověda >> type SlozitaFunkce >> [s,r] = SlozitaFunkce(8,3) >> help SlozitaFunkce funkce return okamžitě ukončuje funkci v místě svého volání a předává řízení volající funkci.

Pavel Kordík(ČVUT FIT) Předzpracování dat MI-PDD, 2012, Cvičení 2 17/29 Programování - větvení if-else if s > 11 disp('soucet vetsi nez 11.'); elseif r < 5, else end disp('soucet neni > nez 11 a rozdil je < nez 5.') disp('soucet neni vetsi nez 11 a rozdil neni mensi nez 5.');

Pavel Kordík(ČVUT FIT) Předzpracování dat MI-PDD, 2012, Cvičení 2 18/29 Programování - větvení switch-case switch r case {0, 1, 2, 3} disp('rozdil je v intervalu 0-3.'); case 4 disp('rozdil je 4.'); case {5, 6, 7} disp('rozdil je v intervalu 5-7.') otherwise disp('rozdil uplne jiny.') end

Pavel Kordík(ČVUT FIT) Předzpracování dat MI-PDD, 2012, Cvičení 2 19/29 Programování - cykly často se dají nahradit vektorovými operacemi, které jsou mnohem efektivnější for for i = 1:10 end fprintf('%d ',i); for i = [1 6 10000] end fprintf('%d ',i);

Programování - cykly while i = 1; while i < 10 fprintf('%d ',i); i = i+1; end break ukončuje cyklus if i == 5, break, end continue přeskakuje zbytek iterace if i == 5, continue, end Pavel Kordík(ČVUT FIT) Předzpracování dat MI-PDD, 2012, Cvičení 2 20/29

Pavel Kordík(ČVUT FIT) Předzpracování dat MI-PDD, 2012, Cvičení 2 21/29 Další příkazy různé help, doc - nápověda k funkcím a příkazům who (whos) - výpis proměnných v pracovním prostoru which - kde je uložen daný m-soubor edit - otevře m-file v editoru určitě vyzkoušejte path, addpath format, disp, fprintf, sprintf, load, save inf, nan, any, all, isempty, round, ceil, floor, ops min, max, sort, sum, mean, std axis, title, xlabel, ylabel, legend, plot3, contour,

Pavel Kordík(ČVUT FIT) Předzpracování dat MI-PDD, 2012, Cvičení 2 22/29 Založení projektu menu File->New->Blank M-File uložte do aktuálního adresáře následující příkazy pište do vytvořeného souboru a vyvolávejte z řádky jeho jménem

Načtení dat stáhnout dataset auto-mpg.data-mod objekt dataset ze Statistics Toolboxu auta = dataset('file','auto-mpg.data-mod',... 'ReadVarNames', false,... 'ReadObsNames', false,... 'delimiter', '\t',... 'TreatAsEmpty', 'NA'); pojmenování sloupců auta = set(auta,... 'VarNames', {'mpg', 'cyl', 'disp', 'hp',... 'wgt', 'acc', 'year', 'org', 'name'}); auta(1:5, :) Pavel Kordík(ČVUT FIT) Předzpracování dat MI-PDD, 2012, Cvičení 2 23/29

Převody, souhrn Převedení proměnné org na nominální (1 - Amerika, 2 - Evropa, 3 - Japonsko) tmporg = nominal(auta.org, {'America','Europe','Japan'}); auta = replacedata(auta, tmporg, 'org'); auta(1:5,:) Původní hodnoty zůstávají v datové sadě double(auta.org(1:13)') Počáteční průzkum dat summary(auta) Pavel Kordík(ČVUT FIT) Předzpracování dat MI-PDD, 2012, Cvičení 2 24/29

Pavel Kordík(ČVUT FIT) Předzpracování dat MI-PDD, 2012, Cvičení 2 25/29 Chybějící hodnoty NaN nejjednodušší je zbavit se řádků promenne = get(auta,'varnames'); for prom = 1:numel(promenne), if isnumeric( auta.(promenne{prom}) ), indchybejicich = isnan( auta.(promenne{prom}) ); auta( indchybejicich, : ) = []; end end summary(auta)

Normalizace funkce minmax pro jeden vektor function x01 = minmax(x) x01 = (x - min(x)) / (max(x) - min(x)); end aplikace na sloupce 1-7 datové sady auta01 = auta; x01 = datasetfun( @minmax, auta01(:,1:7),... 'UniformOutput', false ); x01 = [x01{:}]; % Převod cell array na matici auta01 = replacedata( auta01, x01, 1:7); mins = datasetfun( @min, auta01(:,1:7) ) maxs = datasetfun( @max, auta01(:,1:7) ) Pavel Kordík(ČVUT FIT) Předzpracování dat MI-PDD, 2012, Cvičení 2 26/29

Pavel Kordík(ČVUT FIT) Předzpracování dat MI-PDD, 2012, Cvičení 2 27/29 Načtení dat UCI repository - databáze automobilů moodle cars = csvread('auto-mpg.data-mod.csv'); atributy: mpg: miles-per-galon, počet mil ujetých na 1 galon paliva cyl: cylinders, počet válců disp: displacement, zdiv hp: horsepower, koňských sil wgt: weight, hmotnost acc: acceleration, zrychlení year: rok výroby org: origin, původ (1 -Amerika, 2 -Evropa, 3 -Japonsko)

Normalizace dat Verze 1: maticově Obsah souboru norm01v1.m: function data = norm01v1(data) pocet = size(data,1); minima = min(data); maxima = max(data); rozsah = maxima - minima; data = (data - repmat(minima,pocet,1))./ repmat(rozsah,pocet,1); end K normalizaci prvnich 7 sloupcu v matici cars volat treba jako: >> cars(:,1:7) = norm01v1( cars(:,1:7) ); Nevýhody: zbytečné vytváření velkých matic pomocí funkce repmat Pavel Kordík(ČVUT FIT) Předzpracování dat MI-PDD, 2012, Cvičení 2 28/29

Normalizace dat Verze 2: po sloupcích Obsah souboru norm01v2.m (může obsahovat obě funkce, vně bude přístupná jen ta se stejným názvem jako má m-file): function data = norm01v2(data) for i = 1:size(data,2), data(:,i) = norm01vec(data(:,i)); end end function vec = norm01vec(vec) end vec = (vec - min(vec)) / (max(vec) - min(vec)); Pavel Kordík(ČVUT FIT) Předzpracování dat MI-PDD, 2012, Cvičení 2 29/29