Na tym blogu będziemy omawiać Scikit Learn w Pythonie. Zanim zaczniemy mówić o Scikit Learn, należy zrozumieć pojęcie uczenia maszynowegoi musi wiedzieć, jak używać . Dzięki uczeniu maszynowemu nie musisz ręcznie zbierać swoich danych. Potrzebujesz tylko algorytmu, a maszyna zrobi resztę za Ciebie! Czy to nie jest ekscytujące? Scikit learn to jedna z atrakcji, w której możemy zaimplementować uczenie maszynowe za pomocą Pythona. Toto bezpłatna biblioteka do uczenia maszynowego, która zawiera proste i wydajne narzędzia do analizy danych i celów eksploracyjnych.Przeprowadzę Cię przez następujące tematy, które posłużą jako podstawa dla nadchodzących blogów:
Co to jest uczenie maszynowe?
Uczenie maszynowe to rodzaj sztucznej inteligencji, która pozwala aplikacjom na uczenie się na podstawie danych i dokładniejsze przewidywanie wyników bez interwencji człowieka. Ale jak to się dzieje? W tym celu maszyna musi zostać przeszkolona na pewnych danych i na ich podstawie wykryje wzór do utworzenia modelu.Proces zdobywania wiedzy z danych i dostarczania zaawansowanych spostrzeżeń dotyczy uczenia maszynowego. Zapoznaj się z poniższym obrazem, aby lepiej zrozumieć jego działanie:
Na podstawie tych danych system uczy się algorytmu, a następnie wykorzystuje go do budowy modelu predykcyjnego. Później dostosowujemy model lub poprawiamy dokładność modelu za pomocą danych zwrotnych. Korzystając z tych danych zwrotnych, dostrajamy model i przewidujemy działanie w nowym zestawie danych. Będziemydyskutować przypadek użycia jednego z algorytmów, w którym będziemy szkolić i testować dane, które pomogą Ci lepiej określić, czy będą one dobrze pasować do Twojego konkretnego problemu, czy nie.
Następnie istnieją trzy rodzaje uczenia maszynowego:
- Nadzorowana nauka : Jest to proces uczenia algorytmu na podstawie zbioru danych szkoleniowych. Uczenie nadzorowane polega na wygenerowaniu funkcji odwzorowania między zmienną wejściową (X) a zmienną wyjściową (Y) i użyciu algorytmu do wygenerowania funkcji między nimi. Jest również znane jako modelowanie predykcyjne, które odnosi się do procesu tworzenia prognoz na podstawie danych. Niektóre z algorytmów obejmują regresję liniową, regresję logistyczną, drzewo decyzyjne, las losowy i klasyfikator Naive Bayes. Będziemy dalej omawiać przypadek użycia nadzorowanego uczenia się, w którym trenujemy obsługę maszyny regresja logistyczna .
- Uczenie się bez nadzoru : Jest to proces, w którym model jest szkolony przy użyciu informacji, które nie są oznaczone etykietą. Proces ten może służyć do grupowania danych wejściowych w klasach na podstawie ich właściwości statystycznych. Uczenie się bez nadzoru jest również nazywane canaliza lustrzana, czyli grupowanie obiektów na podstawie informacji zawartych w danych opisujących obiekty lub ich relacje. Celem jest, aby obiekty w jednej grupie były do siebie podobne, ale różniły się od obiektów w innej grupie. Niektóre z algorytmów obejmują grupowanie K-średnich, klastrowanie hierarchiczne itp.
- Uczenie się ze wzmocnieniem: Uczenie się ze wzmocnieniem to uczenie się poprzez interakcję z przestrzenią lub otoczeniem.Agent RL uczy się z konsekwencji swoich działań, a nie z bezpośredniego uczenia się. Swoje działania wybiera na podstawie swoich przeszłych doświadczeń (eksploatacja), a także nowych wyborów (eksploracja).
- Nadzorowana nauka : Jest to proces uczenia algorytmu na podstawie zbioru danych szkoleniowych. Uczenie nadzorowane polega na wygenerowaniu funkcji odwzorowania między zmienną wejściową (X) a zmienną wyjściową (Y) i użyciu algorytmu do wygenerowania funkcji między nimi. Jest również znane jako modelowanie predykcyjne, które odnosi się do procesu tworzenia prognoz na podstawie danych. Niektóre z algorytmów obejmują regresję liniową, regresję logistyczną, drzewo decyzyjne, las losowy i klasyfikator Naive Bayes. Będziemy dalej omawiać przypadek użycia nadzorowanego uczenia się, w którym trenujemy obsługę maszyny regresja logistyczna .
Przegląd Scikit Learn
Scikit Learn to biblioteka służąca do uczenia maszynowego w Pythonie. Scikit learn to biblioteka open source, która jest licencjonowana na podstawie BSD i jest wielokrotnego użytku w różnych kontekstach, zachęcając do użytku akademickiego i komercyjnego. Udostępnia szereg algorytmów uczenia się nadzorowanego i nienadzorowanego w Pythonie.Scikit learn składa się z popularnych algorytmów i bibliotek. Oprócz tego zawiera również następujące pakiety:
implementuj kolejkę priorytetową c ++
- NumPy
- Matplotlib
- SciPy (naukowy Python)
Aby zaimplementować Scikit Learn, najpierw musimy zaimportować powyższe pakiety. Jeśli nie znasz tych bibliotek, możesz rzucić okiem na moje poprzednie blogi i . Możesz pobrać te dwa pakiety za pomocą wiersza poleceń lub jeśli używasz P.YCharm, możesz go zainstalować bezpośrednio, przechodząc do swojego ustawienia w taki sam sposób, w jaki robisz to dla innych pakietów.
Następnie w podobny sposób, musisz zaimportować Sklearn.Scikit learn jest oparta na SciPy (Scientific Python), która musi zostać zainstalowana przed użyciem Scikit-learn. Możesz się do tego odnieść stronie internetowej aby pobrać to samo. Ponadto zainstaluj pakiet Scipy i wheel, jeśli go nie ma, możesz wpisać poniższe polecenie:
pip install scipy
Już go pobrałem i zainstalowałem, możesz zapoznać się z poniższym zrzutem ekranu, aby uzyskać nieporozumienia.
Po zaimportowaniu powyższych bibliotek przyjrzyjmy się dokładniej i zrozummy, jak dokładnie używany jest program Scikit Learn.
Scikit Learn zawiera przykładowe zestawy danych, takie jak irys i cyfry . Możesz importować zbiory danych i bawić się nimi. Następnie musisz zaimportować SVM, co oznacza Support Vector Machine. SVM to forma uczenia maszynowego, która służy do analizy danych.
Weźmy przykład, na którym weźmiemy cyfry zbiór danych i skategoryzuje dla nas numery, na przykład - 0 1 2 3 4 5 6 7 8 9. Skorzystaj z poniższego kodu:
import matplotlib.pyplot as plt from sklearn importuj zestawy danych ze sklearn import svm digits = datasets.load_digits () print (digits.data)
Wynik -
[[0. 0. 5. ..., 0. 0. 0.] [0. 0. 0. ..., 10. 0. 0.] [0. 0. 0. ..., 16. 9. 0.] ..., [0. 0. 1. ..., 6. 0. 0.] [0. 0. 2. ..., 12. 0. 0.] [0. 0. 10. ..., 12. 1. 0.]]
Tutaj właśnie zaimportowaliśmy biblioteki, SVM, zestawy danych i wydrukowaliśmy dane. Jest to długa tablica cyfr, w których są przechowywane dane. Daje dostęp do funkcji, których można użyć do sklasyfikowania cyfry próbki. Następnie możesz wypróbować inne operacje, takie jak cel, obrazy itp. Rozważ poniższy przykład:
import matplotlib.pyplot as plt from sklearn importowanie zestawów danych ze sklearn import svm digits = datasets.load_digits () print (digits.target) print (digits.images [0])
Wynik -
[0 1 2 ..., 8 9 8] // cel danych [[0. 0. 5. 13. 9. 1. 0. 0.] // obraz danych [0. 0. 13. 15. 10. 10. 15. 5. 0.] [0. 3. 15. 2. 0. 11. 8. 0.] [0. 4. 12. 0. 0. 8. 8. 0.] [0. 5. 8. 0. 0. 9. 8. 0.] [0. 4. 11. 0. 1. 12. 7. 0.] [0. 2. 14. 5. 10. 12. 0. 0. ] [0. 0. 6. 13. 10. 0. 0. 0.]]
Jak widać powyżej, drukowane są cyfry docelowe i ich obraz. cyfry.target podaje podstawową prawdę dla cyfra zbiór danych, czyli liczba odpowiadająca każdemu obrazowi cyfrowemu. Następnie dane są zawsze tablicą 2D, która ma kształt (n_samples, n_features), chociaż pierwotne dane mogły mieć inny kształt. Ale w przypadku cyfr każda oryginalna próbka jest obrazem kształtu (8,8) i można do niej uzyskać dostęp za pomocą cyfry . wizerunek.
Uczenie się i przewidywanie
Następnie, w Scikit Learn, użyliśmy zestawu danych (próbka 10 możliwych klas, cyfry od zera do dziewięciu) i musimy przewidzieć cyfry, gdy dany obraz zostanie podany. Aby przewidzieć klasę, potrzebujemy pliku taksator co pomaga przewidzieć klasy, do których należą niewidoczne próbki. W Scikit Learn mamy estymator klasyfikacji, który jest obiektem Pythona, który implementuje metody fit (x, y) i przewidzieć (T). Rozważmy poniższy przykład:
import matplotlib.pyplot as plt from sklearn importuj zestawy danych ze sklearn import svm digits = datasets.load_digits () // dataset clf = svm.SVC (gamma = 0,001, C = 100) print (len (digits.data)) x, y = digits.data [: - 1], digits.target [: - 1] // trenuj dane clf.fit (x, y) print ('Prediction:', clf.predict (digits.data [-1]) ) // przewidywanie danych plt.imshow (digits.images [-1], cmap = plt.cm.gray_r, interpolation = 'najbliższe') plt.show ()
Wynik -
1796
Prognoza: [8]
W powyższym przykładzie najpierw znaleźliśmy długość i załadowaliśmy 1796 przykładów. Następnie wykorzystaliśmy te dane jako dane do nauki, gdzie musimy przetestować ostatni element i pierwszy element negatywny. Musimy również sprawdzić, czy maszyna przewidziała prawidłowe dane, czy nie. W tym celu użyliśmy Matplotlib, w którym wyświetliliśmy obraz cyfr.Podsumowując, masz dane cyfrowe, masz cel, dopasowujesz go i przewidujesz, a więc jesteś gotowy! To naprawdę szybkie i łatwe, prawda?
Możesz również zwizualizować etykiety docelowe za pomocą obrazu, po prostu zapoznaj się z poniższym kodem:
import matplotlib.pyplot as plt from sklearn import datasets from sklearn import svm digits = datasets.load_digits () # Dołącz obrazy i kieruj etykiety na listę images_and_labels = list (zip (digits.images, digits.target)) # dla każdego elementu na liście dla indeksu, (image, label) in enumerate (images_and_labels [: 8]): # zainicjuj subplot 2X4 w i + 1-tej pozycji plt.subplot (2, 4, index + 1) # Wyświetl obrazy we wszystkich podplotach plt.imshow (obraz, cmap = plt.cm.gray_r, interpolation = 'najbliższy') # Dodaj tytuł do każdego subplot plt.title ('Trening:' + str (etykieta)) # Pokaż wykres plt. pokazać()
Wynik-
Jak widać w powyższym kodzie, użyliśmy funkcji „zip”, aby połączyć obrazy i skierować etykiety na listę, a następnie zapisać je w zmiennej, np. Images_and_labels. Następnie zindeksowaliśmy pierwsze osiem elementów w siatce 2 na 4 w każdej pozycji. Następnie właśnie wyświetliliśmy obrazy za pomocą Matplotlib i dodaliśmy tytuł jako „szkolenie”.
Przypadek użycia - Prognozowanie z wykorzystaniem regresji logistycznej
Stwierdzenie problemu - Firma samochodowa wypuściła na rynek nowy SUV. Korzystając z poprzednich danych dotyczących sprzedaży ich SUV-ów, chcą przewidzieć kategorię osób, które mogą być zainteresowane kupnem tego samochodu.
W tym celu zobaczmy zestaw danych, w którym mam UserId, płeć, wiek, szacowane wynagrodzenie i zakupione jako kolumny. To jest tylko przykładowy zbiór danych, z którego możesz pobrać cały zestaw danych tutaj . Po zaimportowaniu danych do pyCharm wygląda to mniej więcej tak.
Teraz zrozummy te dane. Jak widać na powyższym zbiorze danych, mamy takie kategorie jak identyfikator, płeć, wiek itp. Teraz w oparciu o te kategorie zamierzamy wyszkolić naszą maszynę i przewidzieć nie. zakupów. Więc mamy niezależne zmienne jako „wiek”, „oczekiwane wynagrodzenie” i zmienna zależna jako „zakupione”. Teraz zastosujemy uczenie nadzorowane, tj algorytm regresji logistycznej aby dowiedzieć się o liczbie zakupów na podstawie istniejących danych.
Najpierw przyjrzyjmy się regresji logistycznej.
Programowanie gniazd tcp w java
Regresja logistyczna - Regresja logistyczna daje wyniki w formacie binarnym, który jest używany do przewidywania wyniku jakościowej zmiennej zależnej. Jest najczęściej używany, gdy zmienna zależna jest binarna, tj. Liczba dostępnych kategorii wynosi dwie, na przykład zwykłe wyniki regresji logistycznej to -
- Tak i nie
- Prawda i fałsz
- Wysoki i niski
- Pass and Fail
Aby zacząć od kodu, najpierw zaimportujemy te biblioteki - Numpy, Matplotlib i Pandas. Import pandy do Pycharm jest dość łatwy, wykonując poniższe czynności:
Ustawienia -> Dodaj pakiet -> Pandy -> Zainstaluj
Następnie zaimportujemy zestaw danych i oddzielną zmienną zależną (zakupioną) i zmienną niezależną (wiek, wynagrodzenie) przez:
dataset = pd.read_csv ('Social_Network_Ads.csv') X = dataset.iloc [:, [2, 3]]. values y = dataset.iloc [:, 4] .values print (X) print (y)
Następnym krokiem byłoby szkolenie i testowanie danych. Powszechną strategią jest zebranie wszystkich oznaczonych danych i podzielenie ich na podzbiory uczące i testujące, co jest zwykle przyjmowane ze stosunkiem 70-80% dla podzbioru uczącego i 20-30% dla podzbioru testowego. Dlatego stworzyliśmy zestawy treningowe i testowe przy użyciu cross_validation.
from sklearn.cross_validation import train_test_split X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0,25, random_state = 0)
Możemy również skalować wartości wejściowe w celu uzyskania lepszej wydajności za pomocą StandarScaler, jak pokazano poniżej:
from sklearn.preprocessing import StandardScaler sc = StandardScaler () X_train = sc.fit_transform (X_train) X_test = sc.transform (X_test)
Teraz stworzymy nasz model regresji logistycznej.
from sklearn.linear_model import LogisticRegression classifier = LogisticRegression (random_state = 0) classifier.fit (X_train, y_train)
Możemy to wykorzystać i przewidzieć wyniki naszego zestawu testowego.
y_pred = klasyfikator.predict (X_test)
Teraz możemy sprawdzić, ile prognoz było trafnych, a ile nie matryca zamieszania . Zdefiniujmy Y jako pozytywne, a N jako negatywne. Cztery wyniki są sformułowane w macierzy nieporozumień 2 * 2, jak pokazano poniżej:
from sklearn.metrics import confusion_matrix cm = confusion_matrix (y_test, y_pred) print (cm)
Wynik-
[[65 3] [8 24]]
Następnie, na podstawie naszej macierzy nieporozumień, możemy obliczyć dokładność. Zatem w naszym powyższym przykładzie dokładność byłaby:
= TP + TN / FN + FP
różnica między przeciążaniem metod a zastępowaniem w java
= 65 + 24/65 + 3+ 8 + 24
= 89%
Zrobiliśmy to ręcznie! Zobaczmy teraz, jak maszyna oblicza to samo dla nas, w tym celu mamy wbudowaną funkcję „dokładność_score”, która oblicza dokładność i drukuje ją, jak pokazano poniżej:
from sklearn.metrics import compliance_score // zaimportuj funkcję compliance_score print (dokładność_score (y_test, y_pred) * 100) // wypisuje dokładność
Wynik -
89,0
Hurra! W ten sposób z powodzeniem wdrożyliśmy regresję logistyczną za pomocą Scikit Learn z dokładnością 89%.
Kliknij tutaj aby uzyskać pełne źródło powyższej prognozy przy użyciu biblioteki Python Scikit Learn.
W ten sposób omówiliśmy tylko jeden z wielu popularnych algorytmów, które oferuje Python.Omówiliśmy wszystkie podstawy Scikit Learn the Library,więc możesz zacząć ćwiczyć już teraz. Im więcej ćwiczysz, tym więcej się nauczysz. Czekaj na dalsze blogi z samouczkami Pythona!
Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy tego bloga „Scikit Learn”, a my skontaktujemy się z Tobą tak szybko, jak to możliwe. Aby uzyskać dogłębną wiedzę o Pythonie i jego różnych aplikacjach, możesz do szkoleń online na żywo z całodobowym wsparciem i dożywotnim dostępem.