Szukaj…


Uwagi

scikit-learn to ogólnodostępna biblioteka typu open source do analizy danych napisana w języku python. Opiera się na innych bibliotekach Pythona: NumPy, SciPy i matplotlib

scikit-learn zawiera szereg implementacji różnych popularnych algorytmów uczenia maszynowego.

Instalacja scikit-learn

Obecna stabilna wersja scikit-learn wymaga :

  • Python (> = 2.6 lub> = 3.3),
  • NumPy (> = 1.6.1),
  • SciPy (> = 0,9).

W przypadku większości instalacji menedżer pakietów python pip może zainstalować Pythona i wszystkie jego zależności:

pip install scikit-learn

Jednak w przypadku systemów Linux zaleca się użycie menedżera pakietów conda , aby uniknąć możliwych procesów kompilacji

conda install scikit-learn

Aby sprawdzić, czy masz scikit-learn , uruchom w powłoce:

python -c 'import sklearn; print(sklearn.__version__)'

Instalacja systemu Windows i Mac OSX:

Zarówno Canopy, jak i Anaconda dostarczają najnowszą wersję scikit-learn , oprócz dużego zestawu naukowej biblioteki python dla systemu Windows, Mac OSX (dotyczy również Linuksa).

Przećwicz klasyfikator z walidacją krzyżową

Za pomocą zestawu danych tęczówki:

import sklearn.datasets
iris_dataset = sklearn.datasets.load_iris()
X, y = iris_dataset['data'], iris_dataset['target']

Dane są dzielone na zestawy pociągów i testów. Aby to zrobić, używamy funkcji narzędzia train_test_split do train_test_split podziału zarówno X i y (wektory danych i wektorów docelowych) z opcją train_size=0.75 (zestawy treningowe zawierają 75% danych).

Zestawy danych szkoleniowych są wprowadzane do k-najbliższego klasyfikatora sąsiadów . Metoda fit klasyfikatora dopasuje model do danych.

from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.75) 
from sklearn.neighbors import KNeighborsClassifier
clf = KNeighborsClassifier(n_neighbors=3)
clf.fit(X_train, y_train)

Wreszcie przewidywanie jakości na próbce testowej:

clf.score(X_test, y_test) # Output: 0.94736842105263153

Używając jednej pary zestawów pociągów i testów, możemy uzyskać tendencyjne oszacowanie jakości klasyfikatora z powodu arbitralnego wyboru podziału danych. Za pomocą walidacji krzyżowej możemy dopasować klasyfikator do różnych podzbiorów danych pociągu / testu i uzyskać średnią dla wszystkich wyników dokładności. Funkcja cross_val_score dopasowuje klasyfikator do danych wejściowych przy użyciu weryfikacji krzyżowej. Jako wejście może przyjąć liczbę różnych podziałów (fałdów), które zostaną użyte (5 w poniższym przykładzie).

from sklearn.cross_validation import cross_val_score
scores = cross_val_score(clf, X, y, cv=5)
print(scores)
# Output: array([ 0.96666667,  0.96666667,  0.93333333,  0.96666667,  1.        ])
print "Accuracy: %0.2f (+/- %0.2f)" % (scores.mean(), scores.std() / 2)
# Output: Accuracy: 0.97 (+/- 0.03)

Tworzenie rurociągów

Znalezienie wzorców w danych często przebiega w szeregu etapów przetwarzania danych, np. Wyboru cech, normalizacji i klasyfikacji. W sklearn wykorzystuje się do tego szereg etapów.

Na przykład poniższy kod pokazuje potok składający się z dwóch etapów. Pierwszy skaluje cechy, a drugi trenuje klasyfikator na wynikowym rozszerzonym zestawie danych:

from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier

pipeline = make_pipeline(StandardScaler(), KNeighborsClassifier(n_neighbors=4))

Po utworzeniu potoku możesz go używać jak zwykłego etapu (w zależności od jego konkretnych kroków). Tutaj na przykład potok zachowuje się jak klasyfikator. W związku z tym możemy użyć go w następujący sposób:

# fitting a classifier
pipeline.fit(X_train, y_train)
# getting predictions for the new data sample
pipeline.predict_proba(X_test)

Interfejsy i konwencje:

Różne operacje na danych są wykonywane przy użyciu specjalnych klas.

Większość klas należy do jednej z następujących grup:

  • algorytmy klasyfikacji (pochodzące ze sklearn.base.ClassifierMixin ) w celu rozwiązania problemów z klasyfikacją
  • algorytmy regresji (pochodzące ze sklearn.base.RegressorMixin ) w celu rozwiązania problemu rekonstrukcji zmiennych ciągłych (problem regresji)
  • transformacje danych (pochodzące ze sklearn.base.TransformerMixin ), które wstępnie przetwarzają dane

Dane są przechowywane w numpy.array s (ale inne obiekty podobne do tablicy, takie jak pandas.DataFrame s są akceptowane, jeśli można je przekształcić w numpy.array s)

Każdy obiekt w danych jest opisany przez zestaw cech, ogólna konwencja jest taka, że próbka danych jest reprezentowana przez tablicę, gdzie pierwszy wymiar to identyfikator próbki danych, a drugi wymiar to identyfikator cechy.

import numpy
data = numpy.arange(10).reshape(5, 2)
print(data)

Output:
[[0 1]
 [2 3]
 [4 5]
 [6 7]
 [8 9]]

W konwencjach sklearn powyższy zestaw danych zawiera 5 obiektów, każdy opisany przez 2 funkcje.

Przykładowe zestawy danych

Dla ułatwienia testowania, sklearn udostępnia niektóre wbudowane zestawy danych w module sklearn.datasets . Na przykład załadujmy zestaw danych tęczówki Fishera:

import sklearn.datasets
iris_dataset = sklearn.datasets.load_iris()
iris_dataset.keys()
['target_names', 'data', 'target', 'DESCR', 'feature_names']

Możesz przeczytać pełny opis, nazwy funkcji i nazwy klas ( target_names ). Są one przechowywane jako ciągi znaków.

Interesują nas dane i klasy, które są przechowywane w data i polach target . Zgodnie z konwencją są one oznaczone jako X i y

X, y = iris_dataset['data'], iris_dataset['target']
X.shape, y.shape
((150, 4), (150,))
numpy.unique(y)
array([0, 1, 2])

Kształty X i y mówią, że istnieje 150 próbek z 4 funkcjami. Każda próbka należy do jednej z następujących klas: 0, 1 lub 2.

X i y można teraz wykorzystać do szkolenia klasyfikatora, wywołując metodę fit() klasyfikatora.


Oto pełna lista zestawów danych dostarczonych przez moduł sklearn.datasets wraz z ich rozmiarem i przeznaczeniem:

Załaduj z Opis Rozmiar Stosowanie
load_boston() Zestaw danych o cenach domów w Bostonie 506 regresja
load_breast_cancer() Rak piersi Zbiór danych Wisconsin 569 klasyfikacja (binarna)
load_diabetes() Zestaw danych o cukrzycy 442 regresja
load_digits(n_class) Zestaw danych cyfr 1797 Klasyfikacja
load_iris() Zestaw danych Iris 150 klasyfikacja (wieloklasowa)
load_linnerud() Zestaw danych Linnerud 20 regresja wielowymiarowa

Uwaga: (źródło: http://scikit-learn.org/stable/datasets/) :

Te zestawy danych są przydatne do szybkiego zilustrowania zachowania różnych algorytmów zaimplementowanych w programie scikit. Są jednak często zbyt małe, aby reprezentować rzeczywiste zadania uczenia maszynowego.

Oprócz tych wbudowanych przykładowych zestawów danych zabawki, sklearn.datasets zapewnia również funkcje narzędziowe do ładowania zewnętrznych zestawów danych:

  • load_mlcomp do ładowania przykładowych zestawów danych z repozytorium mlcomp.org (zwróć uwagę, że zestawy danych należy pobrać wcześniej). Oto przykład użycia.
  • fetch_lfw_pairs i fetch_lfw_people do wczytywania zestawu danych par etykietowanych twarzy na wolności (LFW) z http://vis-www.cs.umass.edu/lfw/ , służących do weryfikacji twarzy (lub rozpoznawania twarzy). Ten zestaw danych jest większy niż 200 MB. Oto przykład użycia.


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow