apohllo / sztuczna-inteligencja Goto Github PK
View Code? Open in Web Editor NEWRepozytorium z zadaniami z podstaw sztucznej inteligencji
Repozytorium z zadaniami z podstaw sztucznej inteligencji
folds = KFold(n_splits=10, shuffle=True, random_state=0)
hyper_params = [{"n_features_to_select": list(range(1, train_data.shape[1]))}]
X = train_data_linear.drop(inplace=False, columns=["Age"]).drop(columns="Survived")
Napisane zostało, że najlepsze rozwiązanie dostajemy dla 8 cech zamiast 9.
Nie mamy jednak 9 cech tylko 8. W train_data_linear mamy 10 kolumn.
Jedna to Survived
- usuwamy.
Druga to Age
- też usuwamy bo to nasze
range(1, train_data.shape[1])
- tutaj jest błąd.
Powinno być range(1, X.shape[1] + 1)
, trzeba X
dać linijkę wyżej.
Miara cos jest zazwyczaj wykorzystywana jako similarity, a Euclidean jako distance.
Może lepiej byłoby w zadaniu 8 użyć "naturalnych" interpretacji.
Dodatkowo - euc_thresh nie jest do niczego wykorzystywany, więc po prostu można by odwrócić relację i użyć dla każdego "score" innej relacji (większe/mniejsze).
Gracz losowy losuje miejsce postawienia kółka/krzyżyka dla całej planszy. Ale jest funkcja get_possible_moves
- można by losować indeks w tej tablicy co gwarantowałoby wylosowanie niezajętego miejsca.
w kodzie zadania podanym jako 'plug&play':
image = image.resize(required_size)
face_array = np.asarray(image)
# change channel order from (H, W, C) to (C, H, W)
face = np.moveaxis(face, 2, 0)
metoda .resize() pobiera krotkę jako argument, podczas gdy tutaj mamy int zarówno jako wartość domyślną parametru, jak i wtedy gdy dostajemy kod odpalający tę funkcję (brak argumentu).
Dodatkowo zmienna face_array nie jest nigdzie indziej użyta oprócz jej definicji, więc po co ona jest?
Czy nie powinna się pojawić jako argument metody .moveaxis() ?
Wiele funkcji związanych z obliczaniem kto wygrał, jest realizowanych przez studentów w dość łopatologiczny sposób. Lepiej byłoby w tej grze promować wykorzystanie tablic z NumPy-a. Wtedy np. sprawdzenie, czy w danej linii jest wygrana, byłoby tożsame z policzeniem wartości bezwzględnej z sumy wartości w wierszu/kolumnie/diagonali.
Użycie macierzy oraz operacji macierzowych bardzo uprości niektóre operacje.
Przykładowo obliczenie sum względem wierszy, kolumn i na diagonalach, będzie wyglądało następująco:
a.sum(axis=0)
a.sum(axis=1)
np.multiply(a, np.eye(3,3)).sum()
np.multiply(a, np.rot90(np.eye(3,3))).sum()
W zadaniu 4 do obliczenia auroc używamy y_test i y_score, przy czym y_score nie jest zmieniane od zdefiniowania go w zadaniu 3, przez co auroc score wychodzi takie samo jak w zadaniu 3.
Wydaje mi się że zamiast y_score w funkcji roc_auc_score powinno być y_pred_test_score
W zadaniu 4 "image = image.to(device)" wyrzuca błąd, ponieważ metoda jest wywoływana na nd.array zamiast tensora.
Notebook korzysta ze zmiennej y_score
ostatnio zdefiniowanej w poprzednim zadaniu, więc otrzymujemy bezsensowny AUROC.
Fix:
Dodać y_score = model(X_test)
do bloku no_grad
przy ewaluacji modelu.
W instrukcji nie ma nic na ten temat, ale ewaluacja wartości dla algorytmu alfa/beta nie może opierać się wyłącznie na tym, że mamy wartości -1/0/1, bo wtedy nic ten algorytm nie może poprawić. Trzeba dodać informację np. o tym, żeby uzależnić wartość funkcji oceny od liczby ruchów potrzebnych do zakończenia gry.
We wzorze jest błąd, polegający na tym, że X nie ma indeksu dolnego.
Witam,
W laboratorium nr 1 w punkcie
Trening ulepszonego modelu regresji
mamy korzystać z train_data
które już zdążyliśmy edytować. Więc próba znalezienia Nan w kolumnie Age mija się z celem. Gdyż całe Age jest średnią tej kolumny (zrobione wcześniej). Dalsza część ćwiczenia z takimi danymi jest bezcelowa :(
torch.nn.Sequential
, więc predict_proba
nie jest zdefiniowane. Przy całkiem sensownej implementacji funkcji evaluate_model
która korzysta z tej metody, zamiast ręcznie liczyć aktywacje, kod się psuje."auroc"
i "f1"
, których nie ma, mają być "AUROC"
i "F1-score"
.Zadanie 10 w lab 1 powinno być ulepszone tak, żeby różne metody treningu dawały różnie wyniki.
Obecnie wyniki są identyczne, co pokazuje, że kombinowanie z regularyzacją nie ma uzasadnienia. Co oczywiście nie jest prawdą.
Optymalnie byłoby dobrać takie parametry wywołania, żeby wyniki się różniły.
Ponadto zadanie 11 jest do odstrzału.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.