def get_dataset(dataset_type = "training"): """ We will use only this one to get data in part2, which will be a generic logistic regression model @param dataset "training" or "test" @returns standard X,Y or X """ X, Y = None, None #1. Pobieramy obrazki i etykiety images, labels = get_MNIST_dataset(range(10), dataset_type) #2. Konwersja do X,Y (czyli wiersz to jeden przyklad, X - dwuwymiarowa macierz), Y po prostu przepisujemy # hint : reshape, np.zeros, przez macierz mozna latwo iterowac w petli (for row in matrix) #TODO: fill in Y = labels X = images.reshape((images.shape[0], images.shape[1]*images.shape[2])) #for id, digit in enumerate(images): # pl.imshow(digit, cmap=pl.cm.gray) # X[id, :] = digit.reshape((digit.shape[0]*digit.shape[1],)) # if id % 1000 == 0: print "Converted ",id # Czy da sie szybciej? #3. Return X,Y return X, Y
def MNIST_data(): """ Pobieramy wszystkie obrazki 28x28 (indeksowane pierwszym wymiarem) oraz etykiety Images jest 3-wymiarowa macierzy numpy. Wiecej do samodzielnego wykonania bo jestesmy juz swietni w numpy i rysowaniu wykresow """ # Pobieramy macierze numpy z cyframi # images[i,j,k] <=> piksel (j,k) z i-tego obrazka w zbiorze danych images, labels = get_MNIST_dataset(range(10), "training") #pierwszy argument to # a) Ilosc przykladow i rozmiary danych print "Raw training data dimensions ", images.shape print "Labels dimensions ",labels.shape # b) Ile jest cyfr 2? print "Counting 2 in training dataset ",len(filter(lambda x: x == 2, labels)) # c) Jaki jest sredni obrazek 2 ? (Usrednienie wszystkich macierzy ktore sa 2) #1. Pobierzmy wszystkie dwojki, fajny sposob indeksowania print labels == 2 only_2 = images[labels == 2, :, :] print "Checking number of 2s ", only_2.shape #2. TODO: Usrednienie (matrix.mean moze byc przydatne) #3. TODO: narysowanie usrednionej cyfry (zobacz pl.imshow) # d) Ostatnie - przetworzmy ostatnia cyfre do 1 wymiarowego wektora vectorized = np.reshape(images[-1], newshape=(images[-1].shape[0]*images[-1].shape[1])) print "Vectorized last digit ", vectorized
def get_dataset(dataset_type = "training"): """ We will use only this one to get data in part2, which will be a generic logistic regression model @param dataset "training" or "test" @returns standard X,Y or X """ X, Y = None, None #1. Pobieramy obrazki i etykiety images, labels = get_MNIST_dataset(range(10), dataset_type) #2. Konwersja do X,Y (czyli wiersz to jeden przyklad, X - dwuwymiarowa macierz), Y po prostu przepisujemy # hint : reshape, np.zeros, przez macierz mozna latwo iterowac w petli (for row in matrix) # hint2: (funkcja reshape) #TODO: fill in #3. Return X,Y return X, Y