Klasyfikacja za pomocą algorytmu wektorów wspierających (SVM)

Wielkość: px
Rozpocząć pokaz od strony:

Download "Klasyfikacja za pomocą algorytmu wektorów wspierających (SVM)"

Transkrypt

1 Uczenie_maszynowe_i_sztuczne_sieci_neuronowe_cw/SVM1 Spis treści 1 Klasyfikacja za pomocą algorytmu wektorów wspierających (SVM) 1.1 Materiały 1.2 Ćwiczenie 1: Dane separowalne liniowo 1.3 Ćwiczenie 2: jądro Gaussowskie 1.4 Ćwiczenie 3: skomplikowany podział nieliniowy 1.5 Ćwiczenie 4: automatyzacja dobierania parametrów C i sigma 1.6 Dodatek: implementacja w oparciu o bibliotekę LIBSVM Klasyfikacja za pomocą algorytmu wektorów wspierających (SVM) Materiały Na tych ćwiczeniach zapoznamy się z zastosowaniem SVM do klasyfikacji. Poniżej znajduje się moduł dostarczający kilku funkcji, z których dziś będziemy korzystać. Proszę zapisać go w bieżącym katalogu. Kod modułu svm_modul.py # -*- coding: utf-8 -*- import numpy as np import pylab as py ##################################################################### # definicje funkcji pomocniczych, których nie musisz modyfikować ##################################################################### def rysujdanegrup(x, y, marker, xlabel, ylabel,legend_list): '''X - macierz wartości wejściowych zorganizowana tak, że kolejne przykłady są w wierszach, kolumny to kolejne wynmiary wejścia, y - wektor określający przynależność do grupy, indeksy tego wektora odpowiadają wireszom macierzy X, marker - zestaw markerów do oznaczania elementów grup, markerów powinno być tyle ile jest grup''' p=[] for i,g in enumerate(np.unique(y)): g = int(g)

2 tmp =py.plot(x[np.where(y==g),],x[np.where(y==g),1],marker[i]) p.append(tmp[]) py.legend(p,legend_list) # Dodajemy napisy py.xlabel(xlabel) py.ylabel(ylabel) def rysujpodzial(model, X): # wytworzymy siatkę punktów pokrywających obszar danych: N = 100 # ilość punktów siatki w jednym wymiarze os_x = np.linspace(x.min(),x.max(),n) klasa = np.zeros((n,n)) for ix1, x1 in enumerate(os_x): for ix2, x2 in enumerate(os_x): XX = np.array([x1,x2]).reshape(1,2) klasa[ix1,ix2] = svmpredict(model, XX) # dla każdego punktu siatki obliczamy jego klasę x1_grid,x2_grid = np.meshgrid(os_x,os_x) py.contourf(x1_grid, x2_grid, klasa.t,2) def gaussiankernel(xi,xj,sigma=0.1): z = np.dot((xi-xj).t,(xi-xj)) S = 2*sigma*sigma Z= z/s return np.exp(-z) def svmtrain(x, Y, C, kernelfunction, tol = 1e-3, max_passes = 5, sigma=0.1): '''VMTRAIN Trenuje klasyfikator SVM za pomocą uproszczonego algorytmu SMO. X - macierz wejściowa przykładów z ciągu uczącego wiersze - przyklady, kolumny - cechy Y - wektor etykiet klas {-1,1} C - regularyzacja SVM tol - tolerancja na odstępstwa od wrunków KTT max_passes - ile iteracji bez zmian mnożników Lagrangaea wykonać zanim uznamy, że już nie ma co poprawiać kernelfunction - funkcja jądra, zaimplementowane są: - gaussiankernel - linearkernel sigma - standardowe odchylenie dla jądra gaussowskiego funkcja zwraca parametry doapsowanego modelu w słowniku model Uwaga: To jest wersja uproszczona algorytmu wzorowana na

3 pdf Nie jest ani specjalnie elegancka ani szybka. Do praktycznych zastosowań zaleca się stosowanie zoptymalizowanych bibliotek: LIBSVM ( SVMLight ( lub sklearn ''' # Pobieramy rozmiary m,n = X.shape #m - ilość przykładów, n - wymiar wejścia # Zmienne alphas = np.zeros(m) b = E = np.zeros(m) passes = eta = L = H = # Pre-compute the Kernel Matrix since our dataset is small # (in practice, optimized SVM packages that handle large datasets # gracefully will _not_ do this) # # We have implemented optimized vectorized version of the Kernels here so # that the svm training will run faster. print 'Obliczam macierz jądra' if kernelfunction =='linearkernel': # to jądro można policzyć od razu dla wszystkich przykładów K = np.dot(x,x.t) else: # Jak nie możemy wymyśleć wektoryzacji obliczeń to # obliczamy każdy element macierzy jądra osobno K = np.zeros((m,m)) for i in range(m): for j in range(i,m): K[i,j] = gaussiankernel(x[i,:].t, X[j,:].T,sigma) K[j,i] = K[i,j] #the matrix is symmetric

4 print 'Trenuję...' dots = 12 while passes < max_passes: num_changed_alphas = for i in range(m): #dla każdego przykładu z ciągu uczącego # obliczamy błąd predykcji dla wektora i E[i] = b + np.sum (alphas*y*k[:,i]) - Y[i] # jeśli jest co poprawiać: if (( (Y[i]*E[i] < -tol) & (alphas[i] < C)) ((Y[i]*E[i] > tol) & (alphas[i] > ))): select randomly. # In practice, there are many heuristics one can use to # the i and j. In this simplified code, we select them j = np.floor(m * np.random.rand()) while j == i: # Make sure i \neq j j = np.floor(m * np.random.rand()) # Obliczamy błąd predykcji dla wektora j. E[j] = b + np.sum (alphas*y*k[:,j]) - Y[j] # Save old alphas alpha_i_old = alphas[i] alpha_j_old = alphas[j] # Oblicz przycięcia do pudełka [0,C] if (Y[i] == Y[j]): L = np.max((, alphas[j] + alphas[i] - C)) H = np.min((c, alphas[j] + alphas[i])) else: L = np.max((, alphas[j] - alphas[i])) H = np.min((c, C + alphas[j] - alphas[i])) if (L == H): # continue to next i. continue # Compute eta by (15). eta = 2 * K[i,j] - K[i,i] - K[j,j] if (eta >= ): # continue to next i. continue # Compute and clip new value for alpha j using (16) and (17). alphas[j] = alphas[j] - (Y[j] * (E[i] - E[j])) / eta # Clip alphas[j] = np.min ((H, alphas[j]))

5 alphas[j] = np.max ((L, alphas[j])) #Check if change in alpha is significant if (np.abs(alphas[j] - alpha_j_old) < tol): # continue to next i. # replace anyway alphas[j] = alpha_j_old continue # Determine value for alpha i using (16). alphas[i] = alphas[i] + Y[i]*Y[j]*(alpha_j_old - alphas[j]) # Compute b1 and b2 using (20) and (21) respectively. b1 = b - E[i] - Y[i] * (alphas[i] - alpha_i_old) * K[i,j] - Y[j] * (alphas[j] - alpha_j_old) * K[i,j].T b2 = b - E[j] - Y[i] * (alphas[i] - alpha_i_old) * K[i,j] - Y[j] * (alphas[j] - alpha_j_old) * K[j,j].T # Compute b by (19). if ( ( < alphas[i]) & (alphas[i] < C)): b = b1 elif ( < alphas[j]) & (alphas[j] < C): b = b2 else: b = (b1+b2)/2 num_changed_alphas = num_changed_alphas + 1 if (num_changed_alphas == ): passes = passes + 1 else: passes = print num_changed_alphas print ' Gotowe! \n\n' # Save the model idx = alphas > model = {} model['x'] = X[idx,:] model['y'] = Y[idx] model['kernelfunction'] = kernelfunction model['b'] = b model['alphas']= alphas[idx] model['w'] = (np.dot((alphas*y).t, X)).T model['sigma'] = sigma print 'ilość wektorów wspierających: ', len(model['alphas']) return model

6 def svmpredict(model,x): '''model - model otrzymany z funkcji svmtrain X - macierz m x n, w której wierszach są przykłady do sklasyfikowania (m) każdy przykład ma wymiar n funkcja zwraca wektor pred - i-ty element to predykcja dla i-tego przykładu ''' # pobieramy rozmiary: m,n = X.shape #print 'm,n',m,n # przygotowujemy tablice: pred = np.zeros(m) # predyktory margines = np.zeros(m) # wartości marginesów if model['kernelfunction'] == 'linearkernel': margines = np.dot(x, model['w']) + model['b'] elif model['kernelfunction'] =='gaussiankernel': for i in range(m): #ta pętla iteruje po przykładach z macierzy X for j in range(len(model['alphas'])): # ta pętlla iteruje po wektorach wspierających margines[i] += model['alphas'][j]*model['y'][j]* gaussiankernel(x[i,:],model['x'][j,:],model['sigma']) margines[i] += model['b'] else: print 'niezaimplementowane jądro '+ model['kernelfunction'] pred[margines >= ] = 1 pred[margines < ] = -1 return pred Potrzebne będą nam też następujące zestawy danych: Plik:Dane1.txt, Plik:Dane2.txt, Plik:Dane3.txt. Proszę pobrać te pliki i zapisać je w bieżącym katalogu. Ćwiczenie 1: Dane separowalne liniowo Poniższy kod prezentuje zastosowanie SVM do problemu, który jest separowalny liniowo. Wykonując poniższy kod proszę zwrócić uwagę na punkt należący do klasy1 o współrzędnych (0.09, 4). Jak pamiętamy z wykładu parametr C to współczynnik regularyzacji SVM, który karze za naruszanie marginesów. Proszę wykonać kod dla C o wartościach {1,2,5,10,20,30,60,120} i zaobserwować wyniki. # -*- coding: utf-8 -*-

7 #importujemy potrzebne moduły i klasy import numpy as np import pylab as py from svm_modul import * #================================================================== # Program #================================================================== # wczytywanie danych dane = np.loadtxt('dane1.txt') # dane zorganizowane są w trzech kolumnach N_przyk, N_wej = dane.shape X = dane[:,:2] # pierwsze dwie kolumny to wejście y = dane[:,2] # trzecia kolumna to etykiety klas # narysujmy te dane rysujdanegrup(x, y, marker=('or','xb'), xlabel='x0', ylabel='x1',legend_list=('klasa0','klasa1')) py.show() # trenujemy model model = svmtrain(x, y, C=100, kernelfunction = 'linearkernel', tol = 1e-3, max_passes = 20,sigma = 10) # prezentujemy podział przestrzeni wejść reprezentowany przez model rysujdanegrup(x, y, marker=('or','xb'), xlabel='x0', ylabel='x1',legend_list=('klasa0','klasa1')) rysujpodzial(model,x) py.show() Ćwiczenie 2: jądro Gaussowskie W poprzednim programie proszę zmodyfikować wywołanie svmtrain: podmienić funkcję jądra na 'gaussiankernel'. ustawić C = 10 zmieniać sigma na wartości: {0.1, 0.2, 0.4, 0.8, 1, 2, 4, 8} Ćwiczenie 3: skomplikowany podział nieliniowy Przy pomocy kodu z ćwiczenia 2 proszę dobrać parametry C i sigma aby otrzymać sensownie wyglądający podział przestrzeni dla danych zawartych w pliku dane2.txt.

8 Ćwiczenie 4: automatyzacja dobierania parametrów C i sigma W wielu prawdziwych zastosowaniach chcielibyśmy aby nasz wybór parametrów był optymalny a jednocześnie możliwie obiektywny. Powszechnie stosowaną metodą jest przeszukanie przestrzeni parametrów (C,sigma). Generuje się siatkę wartości (C,sigma) i dla każdego punktu siatki: estymuje się model ocenia się jakość generalizacji Do oceny jakości w każdym punkcie siatki można zastosować albo zbiór monitorujący albo metody typu leave-one-out. Uwaga: podział przestrzeni często wykonuje się w skali logarytmicznej. Ćwiczenie wykonamy dla zbioru uczącego z pliku dane3.txt. Musimy ten zbiór podzielić na dane do trenowania i dane do testowania np. w proporcji 3:1, Można to zrobić tak: # wczytywanie danych dane = np.loadtxt('dane3.txt') # dane zorganizowane są w trzech kolumnach N_przyk, N_wej = dane.shape X = dane[:,:2] # pierwsze dwie kolumny to wejście y = dane[:,2] # trzecia kolumna to etykiety klas #podział na zbiór uczący i testujący grupa0, = np.where(y==-1) grupa1, = np.where(y==1) # mieszamy kolejność indexów np.random.shuffle(grupa0) np.random.shuffle(grupa1) # kopiujemy dane do zbioru uczącego (pierwsze 75% grupy0 i grupy1) Xu = X[np.concatenate((grupa0[: int(0.75*len(grupa0))],grupa1[:int(0.75*len(grupa0))]))] yu = y[np.concatenate((grupa0[: int(0.75*len(grupa0))],grupa1[:int(0.75*len(grupa0))]))] # kopiujemy dane do zbioru testowego (końcowe 25% grupy0 i grupy1) Xt = X[np.concatenate((grupa0[int(0.75*len(grupa0)):], grupa1[int(0.75*len(grupa0)):]))] yt = y[np.concatenate((grupa0[int(0.75*len(grupa0)):], grupa1[int(0.75*len(grupa0)):]))]

9 # narysujmy te dane rysujdanegrup(xu, yu, marker=('xr','xb'), xlabel='x0', ylabel='x1',legend_list=('klasa0','klasa1')) rysujdanegrup(xt, yt, marker=('or','ob'), xlabel='x0', ylabel='x1',legend_list=('klasa0_test','klasa1_test')) py.show() Mając taki podział danych możemy dopasować model SVM do części uczącej: model = svmtrain(xu, yu, C=10, kernelfunction = 'gaussiankernel', tol = 1e-3, max_passes = 20,sigma = 0.5) A następnie ocenić jego jakość na części testowej (funkcja svmpredict dostarczana jest przez moduł svm_modul.py): TPR = np.sum(yt == svmpredict(model,xt))/float(len(yt)) Proszę napisać program, który skanuje przestrzeń (C,sigma): C w zakresie od 0.1 do 100, sigma w zakresie od 0.1 do 10. Do wygenerowania zakresu ze skalą logarytmiczną można wykorzystać np. takie polecenie: zakresc = np.logspace(np.log2(0.1),np.log2(100),8, base=2) znajduje najlepsze parametry rysuje podział przestrzeni dla najlepszych parametrów. Dodatek: implementacja w oparciu o bibliotekę LIBSVM Do praktycznych zastosowań zaleca się stosowanie zoptymalizowanych bibliotek, np. LIBSVM ( Poniżej prezentujemy przykłady implementacji ćwiczenia 3 i ćwiczenia 4 w oparciu o tą bibliotekę. Aby móc wykonać te programy potrzebna jest skompilowana biblioteka libsvm i moduły pythonowe svm.py oraz svmutil. Cały zestaw wraz z instrukcją komilacji można pobrać z Uwaga: w bibliotece tej jest nieco inna konwencja notacji jądra Gaussowskiego:, tzn. parametr cwiczenie3 # -*- coding: utf-8 -*-

10 #importujemy potrzebne moduły i klasy import numpy as np import pylab as py from svm import * from svmutil import * def rysujdanegrup(x, y, marker, xlabel, ylabel,legend_list): '''X - macierz wartości wejściowych zorganizowana tak, że kolejne przykłady są w wierszach, kolumny to kolejne wynmiary wejścia, y - wektor określający przynależność do grupy, indeksy tego wektora odpowiadają wireszom macierzy X, marker - zestaw markerów do oznaczania elementów grup, markerów powinno być tyle ile jest grup''' p=[] for i,g in enumerate(np.unique(y)): g = int(g) tmp =py.plot(x[np.where(y==g),],x[np.where(y==g),1],marker[i]) p.append(tmp[]) py.legend(p,legend_list) # Dodajemy napisy py.xlabel(xlabel) py.ylabel(ylabel) def rysujpodzial(model, X): # wytworzymy siatkę punktów pokrywających obszar danych: N = 100 # ilość punktów siatki w jednym wymiarze os_x = np.linspace(x.min(),x.max(),n) klasa = np.zeros((n,n)) for ix1, x1 in enumerate(os_x): for ix2, x2 in enumerate(os_x): XX = [[x1,x2]]#np.array([x1,x2]).reshape(1,2) #print XX p_label, p_acc, p_val =svm_predict([], XX, model, '-b 1') klasa[ix1,ix2] = p_label[] klasę #svmpredict(model, XX) # dla każdego punktu siatki obliczamy jego x1_grid,x2_grid = np.meshgrid(os_x,os_x) py.contourf(x1_grid, x2_grid, klasa.t,2) #================================================================== # Program #================================================================== # wczytywanie danych

11 dane = np.loadtxt('dane2.txt') # dane zorganizowane są w trzech kolumnach N_przyk, N_wej = dane.shape X = dane[:,:2].tolist() # pierwsze dwie kolumny to wejście y = dane[:,2].tolist() # trzecia kolumna to etykiety klas prob = svm_problem(y, X, iskernel=false) param = svm_parameter('-t 2 -c 10 -g 50 -b 1 -q') ''''options': -s svm_type : set type of SVM (default 0) 0 -- C-SVC 1 -- nu-svc 2 -- one-class SVM 3 -- epsilon-svr 4 -- nu-svr -t kernel_type : set type of kernel function (default 2) 0 -- linear: u'*v 1 -- polynomial: (gamma*u'*v + coef0)^degree 2 -- radial basis function: exp(-gamma* u-v ^2) 3 -- sigmoid: tanh(gamma*u'*v + coef0) 4 -- precomputed kernel (kernel values in training_set_file) -d degree : set degree in kernel function (default 3) -g gamma : set gamma in kernel function (default 1/num_features) -r coef0 : set coef0 in kernel function (default 0) -c cost : set the parameter C of C-SVC, epsilon-svr, and nu-svr (default 1) -n nu : set the parameter nu of nu-svc, one-class SVM, and nu-svr (default 0.5) -p epsilon : set the epsilon in loss function of epsilon-svr (default 0.1) -m cachesize : set cache memory size in MB (default 100) -e epsilon : set tolerance of termination criterion (default 0.001) -h shrinking : whether to use the shrinking heuristics, 0 or 1 (default 1) -b probability_estimates : whether to train a SVC or SVR model for probability estimates, 0 or 1 (default 0) -wi weight : set the parameter C of class i to weight*c, for C-SVC (default 1) -v n: n-fold cross validation mode -q : quiet mode (no outputs) ''' m = svm_train(prob, param) p_label, p_acc, p_val = svm_predict(y, X, m, '-b 1') ACC, MSE, SCC = evaluations(y, p_label) print ACC, MSE, SCC

12 # prezentujemy podział przestrzeni wejść reprezentowany przez model rysujdanegrup(np.array(x), np.array(y), marker=('or','xb'), xlabel='x0', ylabel='x1',legend_list=('klasa0','klasa1')) rysujpodzial(m,np.array(x)) py.show() cwiczenie4 # -*- coding: utf-8 -*- #importujemy potrzebne moduły i klasy import numpy as np import pylab as py from svm import * from svmutil import * def rysujdanegrup(x, y, marker, xlabel, ylabel,legend_list): '''X - macierz wartości wejściowych zorganizowana tak, że kolejne przykłady są w wierszach, kolumny to kolejne wynmiary wejścia, y - wektor określający przynależność do grupy, indeksy tego wektora odpowiadają wireszom macierzy X, marker - zestaw markerów do oznaczania elementów grup, markerów powinno być tyle ile jest grup''' p=[] for i,g in enumerate(np.unique(y)): g = int(g) tmp =py.plot(x[np.where(y==g),],x[np.where(y==g),1],marker[i]) p.append(tmp[]) py.legend(p,legend_list) # Dodajemy napisy py.xlabel(xlabel) py.ylabel(ylabel) def rysujpodzial(model, X): # wytworzymy siatkę punktów pokrywających obszar danych: N = 100 # ilość punktów siatki w jednym wymiarze os_x = np.linspace(x.min(),x.max(),n) klasa = np.zeros((n,n)) for ix1, x1 in enumerate(os_x): for ix2, x2 in enumerate(os_x): XX = [[x1,x2]]#np.array([x1,x2]).reshape(1,2) #print XX p_label, p_acc, p_val =svm_predict([], XX, model, '-b 1') klasa[ix1,ix2] = p_label[]

13 klasę #svmpredict(model, XX) # dla każdego punktu siatki obliczamy jego x1_grid,x2_grid = np.meshgrid(os_x,os_x) py.contourf(x1_grid, x2_grid, klasa.t,2) #================================================================== # Program #================================================================== # wczytywanie danych dane = np.loadtxt('dane3.txt') # dane zorganizowane są w trzech kolumnach N_przyk, N_wej = dane.shape X = dane[:,:2] # pierwsze dwie kolumny to wejście y = dane[:,2] # trzecia kolumna to etykiety klas #podział na zbiór uczący i testujący grupa0, = np.where(y==-1) grupa1, = np.where(y==1) # mieszamy kolejność indexów np.random.shuffle(grupa0) np.random.shuffle(grupa1) # kopiujemy dane do zbioru uczącego (pierwsze 75% grupy0 i grupy1) Xu = X[np.concatenate((grupa0[: int(0.75*len(grupa0))],grupa1[:int(0.75*len(grupa0))]))] yu = y[np.concatenate((grupa0[: int(0.75*len(grupa0))],grupa1[:int(0.75*len(grupa0))]))] # kopiujemy dane do zbioru testowego (końcowe 25% grupy0 i grupy1) Xt = X[np.concatenate((grupa0[int(0.75*len(grupa0)):], grupa1[int(0.75*len(grupa0)):]))] yt = y[np.concatenate((grupa0[int(0.75*len(grupa0)):], grupa1[int(0.75*len(grupa0)):]))] # narysujmy te dane rysujdanegrup(xu, yu, marker=('xr','xb'), xlabel='x0', ylabel='x1',legend_list=('klasa0','klasa1')) rysujdanegrup(xt, yt, marker=('or','ob'), xlabel='x0', ylabel='x1',legend_list=('klasa0_test','klasa1_test')) py.show() # trenujemy model yul = yu.tolist()

14 Xul = Xu.tolist() ytl = yt.tolist() Xtl = Xt.tolist() prob = svm_problem(yul, Xul, iskernel=false) Ng = 20 zakresc = np.logspace(np.log2(0.1),np.log2(10),20, base=2) zakress = np.logspace(np.log2(0.1),np.log2(10),10, base=2) bestc = bests = besttpr = TPR=np.zeros((20,10)) for i,c in enumerate(zakresc): for j,s in enumerate(zakress): param_string = '-t 2 -q -b 1 -e c '+str(c)+' -g '+str(s) param = svm_parameter(param_string) m = svm_train(prob, param) p_label, p_acc, p_val = svm_predict(ytl, Xtl, m, '-b 1') TPR[i,j] = np.sum(np.array(ytl)==np.array(p_label))/float(len(ytl)) if TPR[i,j]>bestTPR: besttpr = TPR[i,j] bestmodel = m bestc = C bests = S print C,S,TPR[i,j] # prezentujemy podział przestrzeni wejść reprezentowany przez model rysujdanegrup(x, y, marker=('or','xb'), xlabel='x0', ylabel='x1',legend_list=('klasa0','klasa1')) rysujpodzial(bestmodel,x) py.title('c: '+str(bestc)+' S: '+str(bests)) py.figure() py.pcolor(zakresc,zakress,(tpr.t)) py.xlabel('c') py.ylabel('s') py.colorbar() py.show() Uczenie_maszynowe_i_sztuczne_sieci_neuronowe_cw/SVM1

Celem tych ćwiczeń jest zapoznanie się z klasyfikacją za pomocą sieci neuronowych.

Celem tych ćwiczeń jest zapoznanie się z klasyfikacją za pomocą sieci neuronowych. Spis treści 1 Wstęp 1.1 Importy 2 Zbiór uczący 3 Klasyfikacja 3.1 Rysunki dodatkowe 4 Polecenia dodatkowe Wstęp Celem tych ćwiczeń jest zapoznanie się z klasyfikacją za pomocą sieci neuronowych. Importy

Bardziej szczegółowo

Instrukcje. Spis treści. Hipoteza. Parametry

Instrukcje. Spis treści. Hipoteza. Parametry Spis treści 1 Instrukcje 1.1 Hipoteza 1.2 Parametry 1.3 Wyniki 2 Kod 3 Walidacja 3.1 Zastosowanie w naszym przykładzie 3.1.1 Krzywa ROC Instrukcje W tym ćwiczeniu zbudujemy klasyfikator bazujący na regresji

Bardziej szczegółowo

Zadania z rysowania i dopasowania funkcji

Zadania z rysowania i dopasowania funkcji Spis treści 1 Zadania z rysowania i dopasowania funkcji 1.1 Znajdowanie miejsca zerowego funkcji 1.2 Wczytywanie danych i wykres 1.3 Dopasowywanie krzywej do danych i wykres 1.3.1 Wskazówki Zadania z rysowania

Bardziej szczegółowo

Klasyfikator liniowy Wstęp Klasyfikator liniowy jest najprostszym możliwym klasyfikatorem. Zakłada on liniową separację liniowy podział dwóch klas między sobą. Przedstawia to poniższy rysunek: 5 4 3 2

Bardziej szczegółowo

Algorytmy, które estymują wprost rozkłady czy też mapowania z nazywamy algorytmami dyskryminacyjnymi.

Algorytmy, które estymują wprost rozkłady czy też mapowania z nazywamy algorytmami dyskryminacyjnymi. Spis treści 1 Wstęp: generatywne algorytmy uczące 2 Gaussowska analiza dyskryminacyjna 2.1 Gaussowska analiza dyskryminacyjna a regresja logistyczna 3 Naiwny Klasyfikator Bayesa 3.1 Wygładzanie Laplace'a

Bardziej szczegółowo

Wykresy i interfejsy użytkownika

Wykresy i interfejsy użytkownika Wrocław, 07.11.2017 Wstęp do informatyki i programowania: Wykresy i interfejsy użytkownika Wydział Matematyki Politechniki Wrocławskiej Andrzej Giniewicz Dzisiaj na zajęciach... Instrukcje sterujące Biblioteka

Bardziej szczegółowo

Algorytm k-means jest zaimplementowany w module scipy.cluster.vq (vq: vector quantization) ([dokumentacja]). Mamy tam funkcję

Algorytm k-means jest zaimplementowany w module scipy.cluster.vq (vq: vector quantization) ([dokumentacja]). Mamy tam funkcję Spis treści 1 Algorytm k-means 1.1 Przykładowy kod. 2 Segmentacja obrazu algorytmem k-means 3 Algorytm EM: implementacja 3.1 Funkcje pomocnicze 3.2 Szkielet algorytmu 3.3 Program Algorytm k-means Algorytm

Bardziej szczegółowo

Rozpoznawanie obrazów

Rozpoznawanie obrazów Rozpoznawanie obrazów Laboratorium Python Zadanie nr 1 Regresja liniowa autorzy: A. Gonczarek, J.M. Tomczak, S. Zaręba, M. Zięba, J. Kaczmar Cel zadania Celem zadania jest implementacja liniowego zadania

Bardziej szczegółowo

Wprowadzenie do Python

Wprowadzenie do Python Wprowadzenie do Python Marcin Orchel 1 Środowisko Python Zalecane korzystanie z dystrybucji Anaconda. W systemie linux może być już dostępny Python. Sprawdzenie wersji Pythona, python -V. Uruchomienie

Bardziej szczegółowo

Python. Wprowadzenie. Jolanta Bachan

Python. Wprowadzenie. Jolanta Bachan Python Wprowadzenie Jolanta Bachan Zainstaluj i przetestuj Pythona https://www.python.org/downloads/ print 'Hello world!' operatory numeryczne: + - * / // % ** operatory porównania: ==!= > < >=

Bardziej szczegółowo

Programowanie - wykład 4

Programowanie - wykład 4 Programowanie - wykład 4 Filip Sośnicki Wydział Fizyki Uniwersytet Warszawski 20.03.2019 Przypomnienie Prosty program liczący i wyświeltający wartość silni dla wprowadzonej z klawiatury liczby: 1 # include

Bardziej szczegółowo

Kombinacja jądrowych estymatorów gęstości w klasyfikacji wstępne wyniki

Kombinacja jądrowych estymatorów gęstości w klasyfikacji wstępne wyniki Kombinacja jądrowych estymatorów gęstości w klasyfikacji wstępne wyniki Mateusz Kobos, 10.12.2008 Seminarium Metody Inteligencji Obliczeniowej 1/46 Spis treści Działanie algorytmu Uczenie Odtwarzanie/klasyfikacja

Bardziej szczegółowo

Ćwiczenie 1. Wprowadzenie do programu Octave

Ćwiczenie 1. Wprowadzenie do programu Octave Politechnika Wrocławska Wydział Elektroniki Mikrosystemów i Fotoniki Przetwarzanie sygnałów laboratorium ETD5067L Ćwiczenie 1. Wprowadzenie do programu Octave Mimo że program Octave został stworzony do

Bardziej szczegółowo

Metody systemowe i decyzyjne w informatyce

Metody systemowe i decyzyjne w informatyce Metody systemowe i decyzyjne w informatyce Laboratorium MATLAB Zadanie nr 1 Regresja liniowa autorzy: A. Gonczarek, J.M. Tomczak Cel zadania Celem zadania jest zapoznanie się z liniowym zadaniem najmniejszych

Bardziej szczegółowo

Algorytm grupowania danych typu kwantyzacji wektorów

Algorytm grupowania danych typu kwantyzacji wektorów Algorytm grupowania danych typu kwantyzacji wektorów Wstęp Definicja problemu: Typowe, problemem często spotykanym w zagadnieniach eksploracji danych (ang. data mining) jest zagadnienie grupowania danych

Bardziej szczegółowo

Personal Home Page PHP: Hypertext Preprocessor

Personal Home Page PHP: Hypertext Preprocessor Języki, które już znacie Wykład9PodstawyPHP,str1 język polski język angielski język C język preprocesora C język bash-a język HTML kolejny język: PHP Język PHP Wykład9PodstawyPHP,str2 Personal Home Page

Bardziej szczegółowo

Zadanie: Filtr adaptywny

Zadanie: Filtr adaptywny Spis treści 1 Zadanie: Filtr adaptywny 1.1 Przygotuj sygnały: 1.2 Symulacja sieci 1.3 Wykresy 1.4 Szkielet rozwiązania: 1.5 Pytania Zadanie: Filtr adaptywny W tym zadaniu symulujemy działanie filtra, który

Bardziej szczegółowo

Zastosowania funkcji jądrowych do rozpoznawania ręcznie pisanych cyfr.

Zastosowania funkcji jądrowych do rozpoznawania ręcznie pisanych cyfr. Zastosowania funkcji jądrowych do rozpoznawania ręcznie pisanych cyfr. Warszawa, 10 Marca 2016 Plan prezentacji. Definicja funkcji jądrowej. Plan prezentacji. Definicja funkcji jądrowej. Opis problemu

Bardziej szczegółowo

Oracle Data Mining 10g

Oracle Data Mining 10g Oracle Data Mining 10g Zastosowanie algorytmu Support Vector Machines do problemów biznesowych Piotr Hajkowski Oracle Consulting Agenda Podstawy teoretyczne algorytmu SVM SVM w bazie danych Klasyfikacja

Bardziej szczegółowo

- wszystkie elementy - wszystkie elementy

- wszystkie elementy - wszystkie elementy Tablice: indeksy całkowite >=0 tworzenie: TABLICA[0]=45 TABLICA[1]=23 TABLICA[2]=78 lub TABLICA=(45 23 78) lub TABLICA=($@) odwołanie echo ${TABLICA[3] echo ${TABLICA[*] echo ${TABLICA[@] Długość zmiennej:

Bardziej szczegółowo

Spis treści. Optymalizacja jednowymiarowa

Spis treści. Optymalizacja jednowymiarowa Spis treści 1 Optymalizacja jednowymiarowa 2 Optymalizacja wielowymiarowa 2.1 Zadanie - rozkład Cauchy'ego 2.2 Rozwiązanie 2.3 Zadanie - Data Container 2.4 Rozwiązanie Optymalizacja jednowymiarowa Omawianie

Bardziej szczegółowo

tum.de/fall2018/ in2357

tum.de/fall2018/ in2357 https://piazza.com/ tum.de/fall2018/ in2357 Prof. Daniel Cremers From to Classification Categories of Learning (Rep.) Learning Unsupervised Learning clustering, density estimation Supervised Learning learning

Bardziej szczegółowo

Wykład 6. Metoda eliminacji Gaussa: Eliminacja z wyborem częściowym Eliminacja z wyborem pełnym

Wykład 6. Metoda eliminacji Gaussa: Eliminacja z wyborem częściowym Eliminacja z wyborem pełnym 1 Wykład 6 Metoda eliminacji Gaussa: Eliminacja z wyborem częściowym Eliminacja z wyborem pełnym ELIMINACJA GAUSSA Z WYBOREM CZĘŚCIOWYM ELEMENTÓW PODSTAWOWYCH 2 Przy pomocy klasycznego algorytmu eliminacji

Bardziej szczegółowo

Metody klasyfikacji danych - część 1 p.1/24

Metody klasyfikacji danych - część 1 p.1/24 Metody klasyfikacji danych - część 1 Inteligentne Usługi Informacyjne Jerzy Dembski Metody klasyfikacji danych - część 1 p.1/24 Plan wykładu - Zadanie klasyfikacji danych - Przeglad problemów klasyfikacji

Bardziej szczegółowo

7. Maszyny wektorów podpierajacych SVMs

7. Maszyny wektorów podpierajacych SVMs Algorytmy rozpoznawania obrazów 7. Maszyny wektorów podpierajacych SVMs dr inż. Urszula Libal Politechnika Wrocławska 2015 1 1. Maszyny wektorów podpierajacych - SVMs Maszyny wektorów podpierających (ang.

Bardziej szczegółowo

Wstęp do informatyki Ćwiczenia. Piotr Fulmański

Wstęp do informatyki Ćwiczenia. Piotr Fulmański Wstęp do informatyki Ćwiczenia Piotr Fulmański Piotr Fulmański 1 e-mail 1: fulmanp@math.uni.lodz.pl Wydział Matematyki i Informatyki, Uniwersytet Łódzki Banacha 22, 90-238, Łódź Polska Data ostaniej modyfikacji:

Bardziej szczegółowo

Klasyfikacja Support Vector Machines

Klasyfikacja Support Vector Machines Klasyfikacja Support Vector Machines LABORKA Piotr Ciskowski przykład 1 KLASYFIKACJA KWIATKÓW IRYSA przykład 1. klasyfikacja kwiatków irysa (versicolor-virginica) żródło: pomoc MATLABa: http://www.mathworks.com/help/stats/svmclassify.html

Bardziej szczegółowo

A Zadanie

A Zadanie where a, b, and c are binary (boolean) attributes. A Zadanie 1 2 3 4 5 6 7 8 9 10 Punkty a (maks) (2) (2) (2) (2) (4) F(6) (8) T (8) (12) (12) (40) Nazwisko i Imiȩ: c Uwaga: ta część zostanie wypełniona

Bardziej szczegółowo

Modulacja i kodowanie. Labolatorium. Kodowanie źródłowe Kod Huffman a

Modulacja i kodowanie. Labolatorium. Kodowanie źródłowe Kod Huffman a Modulacja i kodowanie Labolatorium Kodowanie źródłowe Kod Huffman a W tym ćwiczeniu zajmiemy się kodowaniem źródłowym (source coding). 1. Kodowanie źródłowe Głównym celem kodowanie źródłowego jest zmniejszenie

Bardziej szczegółowo

do MATLABa programowanie WYKŁAD Piotr Ciskowski

do MATLABa programowanie WYKŁAD Piotr Ciskowski Wprowadzenie do MATLABa programowanie WYKŁAD Piotr Ciskowski instrukcje sterujące instrukcja warunkowa: if instrukcja wyboru: switch instrukcje iteracyjne: for, while instrukcje przerwania: continue, break,

Bardziej szczegółowo

System operacyjny Linux

System operacyjny Linux Paweł Rajba pawel.rajba@continet.pl http://kursy24.eu/ Zawartość modułu 6 Język bash Pierwszy skrypt Rozwinięcia parametryczne Bloki instrukcji Dwa przydatne polecenia Tablice Sprawdzanie warunków Instrukcje

Bardziej szczegółowo

Pakiety Matematyczne - R Zestaw 2.

Pakiety Matematyczne - R Zestaw 2. Pakiety Matematyczne - R Zestaw 2. Część przykładów pochodzi z helpa do R i z książki: R.Biecek, Przewodnik po pakiecie R, GIS 2014, strona www: http://www.biecek.pl, Instrukcje warunkowe Składnia instrukcji

Bardziej szczegółowo

Elementy metod numerycznych - zajęcia 9

Elementy metod numerycznych - zajęcia 9 Poniższy dokument zawiera informacje na temat zadań rozwiązanych w trakcie laboratoriów. Elementy metod numerycznych - zajęcia 9 Tematyka - Scilab 1. Labolatoria Zajęcia za 34 punktów. Proszę wysłać krótkie

Bardziej szczegółowo

Klasy i obiekty cz II

Klasy i obiekty cz II Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Klasy i obiekty cz II Hermetyzacja, mutatory, akcesory, ArrayList Rozwijamy aplikację Chcemy, aby obiekty klasy

Bardziej szczegółowo

Niezawodność diagnostyka systemów laboratorium. Ćwiczenie 2

Niezawodność diagnostyka systemów laboratorium. Ćwiczenie 2 dr inż. Jacek Jarnicki doc. PWr Niezawodność diagnostyka systemów laboratorium Ćwiczenie 2 1. Treść ćwiczenia Generowanie realizacji zmiennych losowych i prezentacja graficzna wyników losowania. Symulacja

Bardziej szczegółowo

Ćwiczenia z przetwarzania tablic 2D

Ćwiczenia z przetwarzania tablic 2D Ćwiczenia z przetwarzania tablic 2D Wyświetlanie tablic 2D Jako wstęp do przetwarzania obrazów w pythonie przećwiczmy podstawowe operacje na dwuwymiarowych tablicach numpy w postaci których będziemy takie

Bardziej szczegółowo

Ćwiczenie 1. Wprowadzenie do programu Octave

Ćwiczenie 1. Wprowadzenie do programu Octave Politechnika Wrocławska Wydział Elektroniki Mikrosystemów i Fotoniki Przetwarzanie sygnałów laboratorium ETD5067L Ćwiczenie 1. Wprowadzenie do programu Octave Mimo że program Octave został stworzony do

Bardziej szczegółowo

Metody systemowe i decyzyjne w informatyce

Metody systemowe i decyzyjne w informatyce Metody systemowe i decyzyjne w informatyce Laboratorium MATLAB Zadanie nr 2 κ-nn i Naive Bayes autorzy: M. Zięba, J.M. Tomczak, A. Gonczarek, S. Zaręba Cel zadania Celem zadania jest implementacja klasyfikatorów

Bardziej szczegółowo

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów SQL3 wprowadza następujące kolekcje: zbiory ( SETS ) - zestaw elementów bez powtórzeń, kolejność nieistotna listy ( LISTS ) - zestaw

Bardziej szczegółowo

Laboratorium 11. Regresja SVM.

Laboratorium 11. Regresja SVM. Laboratorium 11 Regresja SVM. 1. Uruchom narzędzie Oracle Data Miner i połącz się z serwerem bazy danych. 2. Z menu głównego wybierz Activity Build. Na ekranie powitalnym kliknij przycisk Dalej>. 3. Z

Bardziej szczegółowo

W ostatnim wykładzie doszliśmy do tego, że problem znalezienia klasyfikatora optymalnego pod względem marginesów można wyrazić w następujący sposób:

W ostatnim wykładzie doszliśmy do tego, że problem znalezienia klasyfikatora optymalnego pod względem marginesów można wyrazić w następujący sposób: Spis treści 1 Maszyny Wektorów Wspierających 2 1.1 SVM w formaliźmie Lagranga 1.2 Przejście do pstaci dualnej 1.2.1 Wyznaczenie parametrów modelu: 1.2.2 Klasyfikacja: 2 Funkcje jądrowe 2.1 Mapowanie do

Bardziej szczegółowo

Ćwiczenie 12. Metody eksploracji danych

Ćwiczenie 12. Metody eksploracji danych Ćwiczenie 12. Metody eksploracji danych Modelowanie regresji (Regression modeling) 1. Zadanie regresji Modelowanie regresji jest metodą szacowania wartości ciągłej zmiennej celu. Do najczęściej stosowanych

Bardziej szczegółowo

Kompresja pamięci w jądrze Linuksa

Kompresja pamięci w jądrze Linuksa Uniwersytet Warszawski piotr.sarna@students.mimuw.edu.pl 7 lutego 2015 Plan prezentacji 1 Wprowadzenie pamięć niedościgła 2 zswap zcache zram zsmalloc vs zbud 3 LZO LZ4 Crypto API pamięć niedościgła Idea

Bardziej szczegółowo

Ćwiczenie 6. Transformacje skali szarości obrazów

Ćwiczenie 6. Transformacje skali szarości obrazów Politechnika Wrocławska Wydział Elektroniki Mikrosystemów i Fotoniki Przetwarzanie sygnałów laboratorium ETD5067L Ćwiczenie 6. Transformacje skali szarości obrazów 1. Obraz cyfrowy Obraz w postaci cyfrowej

Bardziej szczegółowo

UCZENIE MASZYNOWE III - SVM. mgr inż. Adam Kupryjanow

UCZENIE MASZYNOWE III - SVM. mgr inż. Adam Kupryjanow UCZENIE MASZYNOWE III - SVM mgr inż. Adam Kupryjanow Plan wykładu Wprowadzenie LSVM dane separowalne liniowo SVM dane nieseparowalne liniowo Nieliniowy SVM Kernel trick Przykłady zastosowań Historia 1992

Bardziej szczegółowo

Optymalizacja systemów

Optymalizacja systemów Optymalizacja systemów Laboratorium - problem detekcji twarzy autorzy: A. Gonczarek, J.M. Tomczak, S. Zaręba, P. Klukowski Cel zadania Celem zadania jest zapoznanie się z gradientowymi algorytmami optymalizacji

Bardziej szczegółowo

Dariusz Brzeziński Instytut Informatyki, Politechnika Poznańska

Dariusz Brzeziński Instytut Informatyki, Politechnika Poznańska Dariusz Brzeziński Instytut Informatyki, Politechnika Poznańska Wstęp Biblioteki Pandas Scikit-learn Plotnine Jupyter Zadanie Eksploracja danych w Pythonie 2 Popularny język programowania Prosta składnia

Bardziej szczegółowo

Instrukcja konfiguracji usługi Wirtualnej Sieci Prywatnej w systemie Mac OSX

Instrukcja konfiguracji usługi Wirtualnej Sieci Prywatnej w systemie Mac OSX UNIWERSYTETU BIBLIOTEKA IEGO UNIWERSYTETU IEGO Instrukcja konfiguracji usługi Wirtualnej Sieci Prywatnej w systemie Mac OSX 1. Make a new connection Open the System Preferences by going to the Apple menu

Bardziej szczegółowo

Testowanie modeli predykcyjnych

Testowanie modeli predykcyjnych Testowanie modeli predykcyjnych Wstęp Podczas budowy modelu, którego celem jest przewidywanie pewnych wartości na podstawie zbioru danych uczących poważnym problemem jest ocena jakości uczenia i zdolności

Bardziej szczegółowo

Metody systemowe i decyzyjne w informatyce

Metody systemowe i decyzyjne w informatyce Metody systemowe i decyzyjne w informatyce Laboratorium MATLAB Zadanie nr 2 Detekcja twarzy autorzy: A. Gonczarek, J.M. Tomczak Cel zadania Celem zadania jest zapoznanie się algorytmem gradientu prostego

Bardziej szczegółowo

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre) Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie

Bardziej szczegółowo

Wprowadzenie do programu RapidMiner Studio 7.6, część 4 Michał Bereta

Wprowadzenie do programu RapidMiner Studio 7.6, część 4 Michał Bereta Wprowadzenie do programu RapidMiner Studio 7.6, część 4 Michał Bereta www.michalbereta.pl W tej części: Zachowanie wytrenowanego modelu w celu późniejszego użytku Filtrowanie danych (brakujące etykiety

Bardziej szczegółowo

Politechnika Warszawska

Politechnika Warszawska Politechnika Warszawska Programowa realizacja sieci neuronowych Zbigniew Szymański, Stanisław Jankowski grudzień 03 Instytut Informatyki Nowowiejska 5 / 9, 00-665 Warszawa Programowa realizacja sieci neuronowych

Bardziej szczegółowo

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO LABORATORIUM Temat: THREADS Mariusz Rudnicki 2016 1. Przygotowanie platformy i środowiska IDE. Przed uruchomieniem własnego kodu zwiększ priorytet procesu qconn

Bardziej szczegółowo

Wstęp do obliczeń równoległych na GPU

Wstęp do obliczeń równoległych na GPU Spis treści 1 Wstęp do obliczeń równoległych na GPU 1.1 Zadanie 1.2 Profilowanie 1.2.1 Zadanie Wstęp do obliczeń równoległych na GPU W tej części ćwiczeń stworzymy pierwszy program wykorzystujący bibliotekę

Bardziej szczegółowo

Krok po kroku... (czyli jak stworzyć i wydrukować krzyżówkę)

Krok po kroku... (czyli jak stworzyć i wydrukować krzyżówkę) - Program do tworzenia krzyżówek. - Krzyżówki mogą być przygotowywane w formie drukowanej lub elektronicznej. - Program jest bezpłatny, jeśli ćwiczenia przygotowywane za jego pomocą są udostępniane odbiorcą

Bardziej szczegółowo

Usługi Informatyczne "SZANSA" - Gabriela Ciszyńska-Matuszek ul. Świerkowa 25, Bielsko-Biała

Usługi Informatyczne SZANSA - Gabriela Ciszyńska-Matuszek ul. Świerkowa 25, Bielsko-Biała Usługi Informatyczne "SZANSA" - Gabriela Ciszyńska-Matuszek ul. Świerkowa 25, 43-305 Bielsko-Biała NIP 937-22-97-52 tel. +48 33 488 89 39 zwcad@zwcad.pl www.zwcad.pl Aplikacja do rysowania wykresów i oznaczania

Bardziej szczegółowo

Podstawy programowania skrót z wykładów:

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

System operacyjny Linux

System operacyjny Linux Paweł Rajba pawel.rajba@continet.pl http://kursy24.eu/ Zawartość modułu 7 Język awk Wprowadzenie Schemat programu Konstrukcja wzorców Konstrukcja wyrażeń regularnych Struktury kontrolne Predefiniowane

Bardziej szczegółowo

Pobieranie argumentów wiersza polecenia

Pobieranie argumentów wiersza polecenia Pobieranie argumentów wiersza polecenia 2. Argumenty wiersza polecenia Lista argumentów Lista argumentów zawiera cały wiersz poleceń, łącznie z nazwą programu i wszystkimi dostarczonymi argumentami. Przykłady:

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Podstawowe konstrukcje programistyczne Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk (Wydział Fizyki) WP w. II Jesień 2014 1 / 38 Przypomnienie Programowanie imperatywne Program

Bardziej szczegółowo

(kod ten służy wprowadzeniu definicji mediany, nie jest to optymalna ani nawet szczególnie dobra implementacja obliczania mediany w praktyce!

(kod ten służy wprowadzeniu definicji mediany, nie jest to optymalna ani nawet szczególnie dobra implementacja obliczania mediany w praktyce! Spis treści 1 TI:WTBD/Kolokwium Poprawkowe 1.1 zadanie 1 1.1.1 1.2 zadanie 2 1.2.1 1.3 zadanie 3 1.3.1 TI:WTBD/Kolokwium Poprawkowe zadanie 1 Medianę sekwencji liczb można zdefiniować za pomocą następującego

Bardziej szczegółowo

Metody Metody, parametry, zwracanie wartości

Metody Metody, parametry, zwracanie wartości Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Metody Metody, parametry, zwracanie wartości Metody - co to jest i po co? Metoda to wydzielona część klasy, mająca

Bardziej szczegółowo

Strategie ewolucyjne. Gnypowicz Damian Staniszczak Łukasz Woźniak Marek

Strategie ewolucyjne. Gnypowicz Damian Staniszczak Łukasz Woźniak Marek Strategie ewolucyjne Gnypowicz Damian Staniszczak Łukasz Woźniak Marek Strategie ewolucyjne, a algorytmy genetyczne Podobieństwa: Oba działają na populacjach rozwiązań Korzystają z zasad selecji i przetwarzania

Bardziej szczegółowo

METODY INŻYNIERII WIEDZY

METODY INŻYNIERII WIEDZY METODY INŻYNIERII WIEDZY WALIDACJA KRZYŻOWA dla ZAAWANSOWANEGO KLASYFIKATORA KNN ĆWICZENIA Adrian Horzyk Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej

Bardziej szczegółowo

Kurs języka Python Wykład 8. Przetwarzanie tekstu Wyrażenia regularne Biblioteka urllib Parsowanie html'a XML

Kurs języka Python Wykład 8. Przetwarzanie tekstu Wyrażenia regularne Biblioteka urllib Parsowanie html'a XML Kurs języka Python Wykład 8. Przetwarzanie tekstu Wyrażenia regularne Biblioteka urllib Parsowanie html'a XML Wyrażenia regularne c:\> dir *.exe $ rm *.tmp Wyrażenia regularne 'alamakota' '(hop!)*' { '',

Bardziej szczegółowo

Język PL/SQL Procedury i funkcje składowane

Język PL/SQL Procedury i funkcje składowane Język PL/SQL Procedury i funkcje składowane Podprogramy, procedury i funkcje składowane, typy argumentów, wywoływanie procedur i funkcji, poziomy czystości funkcji 1 Podprogramy Procedury (wykonują określone

Bardziej szczegółowo

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie. Sortowanie Dane wejściowe: ciąg n-liczb (kluczy) (a 1, a 2, a 3,..., a n 1, a n ) Dane wyjściowe: permutacja ciągu wejściowego (a 1, a 2, a 3,..., a n 1, a n) taka, że a 1 a 2 a 3... a n 1 a n. Będziemy

Bardziej szczegółowo

Spis treści. I. Skuteczne. Od autora... Obliczenia inżynierskie i naukowe... Ostrzeżenia...XVII

Spis treści. I. Skuteczne. Od autora... Obliczenia inżynierskie i naukowe... Ostrzeżenia...XVII Spis treści Od autora..................................................... Obliczenia inżynierskie i naukowe.................................. X XII Ostrzeżenia...................................................XVII

Bardziej szczegółowo

Struktura bazy danych

Struktura bazy danych Procedury składowane, funkcje i wyzwalacze Struktura bazy danych Tabela Oddziały ID Nazwa Adres 10 POZNAN Kwiatowa 3 20 WARSZAWA al. Jerozolimskie 22 30 KRAKOW Planty 14 40 WROCLAW Nad Odra 16 50 GDANSK

Bardziej szczegółowo

W przeciwnym wypadku wykonaj instrukcję z bloku drugiego. Ćwiczenie 1 utworzyć program dzielący przez siebie dwie liczby

W przeciwnym wypadku wykonaj instrukcję z bloku drugiego. Ćwiczenie 1 utworzyć program dzielący przez siebie dwie liczby Część XI C++ W folderze nazwisko36 program za każdym razem sprawdza oba warunki co niepotrzebnie obciąża procesor. Ten problem można rozwiązać stosując instrukcje if...else Instrukcja if wykonuje polecenie

Bardziej szczegółowo

Dokumentacja. Kalibracja parametrów modelu Hestona za rozszerzonego filtra Kalmana. Mikołaj Bińkowski Wiktor Gromniak

Dokumentacja. Kalibracja parametrów modelu Hestona za rozszerzonego filtra Kalmana. Mikołaj Bińkowski Wiktor Gromniak Dokumentacja Kalibracja parametrów modelu Hestona za pomoca rozszerzonego filtra Kalmana Mikołaj Bińkowski Wiktor Gromniak Spis treści 1 Wstęp 2 2 Struktura katalogów 2 3 Zależności 2 4 Funkcje 3 4.1 heston_calibr_kalman..........................

Bardziej szczegółowo

Spis treści. Wstęp. Regresja

Spis treści. Wstęp. Regresja Spis treści 1 Wstęp 2 Regresja 2.1 Regresja liniowa 2.1.1 Przykład: Dopasowanie prostej do punktów (zakładamy jednakową wariancję Y dla każdego X) 2.1.2 Ocena jakości dopasownia 2.1.2.1 Współczynnik 2.1.2.2

Bardziej szczegółowo

Programowanie: grafika w SciLab Slajd 1. Programowanie: grafika w SciLab

Programowanie: grafika w SciLab Slajd 1. Programowanie: grafika w SciLab Programowanie: grafika w SciLab Slajd 1 Programowanie: grafika w SciLab Programowanie: grafika w SciLab Slajd 2 Plan zajęć 1. Wprowadzenie 2. Wykresy 2-D 3. Wykresy 3-D 4. Rysowanie figur geometrycznych

Bardziej szczegółowo

Warsztaty dla nauczycieli

Warsztaty dla nauczycieli WPROWADZENIE Wyprowadzanie danych: Wyprowadzanie na ekran komunikatów i wyników umożliwia instrukcja wyjścia funkcja print(). Argumentami funkcji (podanymi w nawiasach) mogą być teksty, wyrażenia arytmetyczne

Bardziej szczegółowo

Obsługa błędów w SQL i transakcje. Obsługa błędów w SQL

Obsługa błędów w SQL i transakcje. Obsługa błędów w SQL Obsługa błędów w SQL i transakcje Zacznijmy od najprostszego przykładu: CREATE PROCEDURE podziel1 Obsługa błędów w SQL Powyższa procedura w większości przypadków zadziała prawidłowo, lecz na przykład poniższe

Bardziej szczegółowo

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze 1 Funkcje i procedury pamiętane Następujące polecenie tworzy zestawienie zawierające informację o tym ilu jest na naszej hipotetycznej

Bardziej szczegółowo

Rozpoznawanie obrazów

Rozpoznawanie obrazów Rozpoznawanie obrazów Laboratorium Python Zadanie nr 2 κ-nn i Naive Bayes autorzy: M. Zięba, J.M. Tomczak, A. Gonczarek, S. Zaręba, J. Kaczmar Cel zadania Celem zadania jest implementacja klasyfikatorów

Bardziej szczegółowo

Bloki anonimowe w PL/SQL

Bloki anonimowe w PL/SQL Język PL/SQL PL/SQL to specjalny język proceduralny stosowany w bazach danych Oracle. Język ten stanowi rozszerzenie SQL o szereg instrukcji, znanych w proceduralnych językach programowania. Umożliwia

Bardziej szczegółowo

Instytut Fizyki Politechniki Łódzkiej Laboratorium Metod Analizy Danych Doświadczalnych Ćwiczenie 3 Generator liczb losowych o rozkładzie Rayleigha.

Instytut Fizyki Politechniki Łódzkiej Laboratorium Metod Analizy Danych Doświadczalnych Ćwiczenie 3 Generator liczb losowych o rozkładzie Rayleigha. Instytut Fizyki Politechniki Łódzkiej Laboratorium Metod Analizy Danych Doświadczalnych Generator liczb losowych o rozkładzie Rayleigha. Generator liczb losowych o rozkładzie Rayleigha. 1. Cel ćwiczenia

Bardziej szczegółowo

Bioinformatyka: Wykład 2. Algorytm Smitha Watermana implementacja w języku Python

Bioinformatyka: Wykład 2. Algorytm Smitha Watermana implementacja w języku Python Bioinformatyka: Wykład 2 Algorytm Smitha Watermana implementacja w języku Python Przyrównanie sekwencji Algorytm Smitha-Watermana dla pary sekwencji P i Q o długościach odpowiednio M i N. Zbuduj macierz

Bardziej szczegółowo

Laboratorium Metod Optymalizacji

Laboratorium Metod Optymalizacji Laboratorium Metod Optymalizacji Grupa nr... Sekcja nr... Ćwiczenie nr 4 Temat: Programowanie liniowe (dwufazowa metoda sympleksu). Lp. 1 Nazwisko i imię Leszek Zaczyński Obecność ocena Sprawozdani e ocena

Bardziej szczegółowo

Laboratorium 4. Naiwny klasyfikator Bayesa.

Laboratorium 4. Naiwny klasyfikator Bayesa. Laboratorium 4 Naiwny klasyfikator Bayesa. 1. Uruchom narzędzie Oracle Data Miner i połącz się z serwerem bazy danych. 2. Z menu głównego wybierz Activity Build. Na ekranie powitalnym kliknij przycisk

Bardziej szczegółowo

Rozpoznawanie obrazów

Rozpoznawanie obrazów Rozpoznawanie obrazów Laboratorium Python Zadanie nr 3 Regresja logistyczna autorzy: A. Gonczarek, J.M. Tomczak, S. Zaręba, M. Zięba, J. Kaczmar Cel zadania Celem zadania jest zaimplementowanie modelu

Bardziej szczegółowo

Przetwarzanie sygnałów

Przetwarzanie sygnałów Spis treści Przetwarzanie sygnałów Ćwiczenie 1 Wprowadzenie do programu Octave 1 Operatory 1 1.1 Operatory arytmetyczne...................... 1 1.2 Operatory relacji.......................... 1 1.3 Operatory

Bardziej szczegółowo

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04 Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04 Cel zajęć. Celem zajęć jest zapoznanie się ze sposobem działania popularnych kolekcji. Wprowadzenie teoretyczne. Rozważana w ramach niniejszych

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Podstawowe konstrukcje programistyczne Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 1 / 34 Przypomnienie Programowanie imperatywne Program

Bardziej szczegółowo

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u będziemy używać w taki sam sposób, jak wbudowanych funkcji

Bardziej szczegółowo

Aby uzyskać zaliczenie w pierwszym terminie (do 30 stycznia 2018) rozliczyć trzeba co najmniej 8 projektów, po 4 z każdej z części: C++ oraz Python.

Aby uzyskać zaliczenie w pierwszym terminie (do 30 stycznia 2018) rozliczyć trzeba co najmniej 8 projektów, po 4 z każdej z części: C++ oraz Python. Aby uzyskać zaliczenie w pierwszym terminie (do 30 stycznia 2018) rozliczyć trzeba co najmniej 8 projektów, po 4 z każdej z części: C++ oraz Python. Pliki z rozwiązaniami projektu (wszystkie polecenia

Bardziej szczegółowo

PWSG Ćwiczenia 12. Wszystkie ukończone zadania należy wysłać na adres: lub

PWSG Ćwiczenia 12. Wszystkie ukończone zadania należy wysłać na adres: lub PWSG Ćwiczenia 12 Wszystkie ukończone zadania należy wysłać na adres: sara.m.jurczyk@gmail.com lub sarajurczyk@kul.lublin.pl Zadanie 1: Różnica między zwykłymi polami/metodami, a polami/metodami static

Bardziej szczegółowo

Podstawowe operacje graficzne.

Podstawowe operacje graficzne. Podstawowe operacje graficzne. Cel ćwiczenia Celem ćwiczenia jest zapoznanie się z możliwościami graficznymi środowiska GNU octave, w tym celu: narzędziami graficznymi, sposobami konstruowania wykresów

Bardziej szczegółowo

Komputerowe przetwarzanie obrazu Laboratorium 5

Komputerowe przetwarzanie obrazu Laboratorium 5 Komputerowe przetwarzanie obrazu Laboratorium 5 Przykład 1 Histogram obrazu a dobór progu binaryzacji. Na podstawie charakterystyki histogramu wybrano dwa różne progi binaryzacji (120 oraz 180). Proszę

Bardziej szczegółowo

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO LABORATORIUM Temat: QNX Neutrino Interrupts Mariusz Rudnicki 2016 Wstęp W QNX Neutrino wszystkie przerwania sprzętowe przechwytywane są przez jądro systemu. Obsługę

Bardziej szczegółowo

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba. Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 2 Kusory Wprowadzenie Kursory użytkownika Kursory domyślne Zmienne kursora Wyrażenia kursora - 2 - Wprowadzenie Co to jest kursor?

Bardziej szczegółowo

Podstawy Programowania C++

Podstawy Programowania C++ Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:

Bardziej szczegółowo

Python. Skąd taka nazwa? Kurs systemu UNIX 1

Python. Skąd taka nazwa? Kurs systemu UNIX 1 Python Skąd taka nazwa? Kurs systemu UNIX 1 Cechy języka marketing Obiektowy (dużo prostszy od C++) Darmowy Nie tylko Unix (choć tam najpopularniejszy) Wiele bibliotek (np. Tkinter, czyli interfejs do

Bardziej szczegółowo

Programowanie w SQL. definicja bloku instrukcji BEGIN...END, warunkowe wykonanie instrukcji IF...ELSE, wyrażenie CASE,

Programowanie w SQL. definicja bloku instrukcji BEGIN...END, warunkowe wykonanie instrukcji IF...ELSE, wyrażenie CASE, Programowanie w SQL definicja bloku instrukcji BEGIN...END, warunkowe wykonanie instrukcji IF...ELSE, wyrażenie CASE, kontynuacja działania od instrukcji za podaną etykietą GOTO etykieta, wyjście bezwarunkowe

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Język programowania Ruby Marcin Młotkowski 12 kwietnia 2018 Plan wykładu 1 Wstęp 2 Typy numeryczne Łańcuchy znaków (klasa String) Przedziały Tablice i tablice asocjacyjne Nazwy

Bardziej szczegółowo

Podstawy Pythona. Krzysztof Gdawiec. Instytut Informatyki Uniwersytet Śląski

Podstawy Pythona. Krzysztof Gdawiec. Instytut Informatyki Uniwersytet Śląski Podstawy Pythona Krzysztof Gdawiec Instytut Informatyki Uniwersytet Śląski Słownik jest typem mutowalnym. Każdy element to para: klucz wartość. W celu stworzenia słownika pary klucz wartość umieszczamy

Bardziej szczegółowo

//warunki początkowe m=500; T=30; c=0.4; t=linspace(0,t,m); y0=[-2.5;2.5];

//warunki początkowe m=500; T=30; c=0.4; t=linspace(0,t,m); y0=[-2.5;2.5]; 4.3. Przykłady wykorzystania funkcji bibliotecznych 73 MATLAB % definiowanie funkcji function [dx]=vderpol(t,y) global c; dx=[y(2); c*(1-y(1)^2)*y(2)-y(1)]; SCILAB // definiowanie układu function [f]=vderpol(t,y,c)

Bardziej szczegółowo