Ostatnia aktualizacja: sierpień 17, 2019
redukcja wymiarowości jest techniką uczenia się bez nadzoru.
niemniej jednak może być stosowany jako etap wstępnego przetwarzania transformacji danych dla algorytmów uczenia maszynowego na zestawach danych do modelowania predykcyjnego klasyfikacji i regresji z algorytmami nadzorowanego uczenia.
istnieje wiele algorytmów redukcji wymiarowości do wyboru i nie ma jednego najlepszego algorytmu dla wszystkich przypadków. Zamiast tego dobrym pomysłem jest zbadanie szeregu algorytmów redukcji wymiarowości i różnych konfiguracji dla każdego algorytmu.
w tym samouczku dowiesz się, jak dopasować i ocenić najlepsze algorytmy redukcji wymiarowości w Pythonie.
Po ukończeniu tego kursu dowiesz się:
- redukcja wymiarowości ma na celu niższą reprezentację liczbowych danych wejściowych, która zachowuje istotne relacje w danych.
- istnieje wiele różnych algorytmów redukcji wymiarowości i nie ma jednej najlepszej metody dla wszystkich zbiorów danych.
- jak zaimplementować, dopasować i ocenić redukcję wymiarowości w Pythonie z biblioteką uczenia maszynowego scikit-learn.
Rozpocznij swój projekt od przygotowania danych z mojej nowej książki do uczenia maszynowego, w tym samouczków krok po kroku i plików kodu źródłowego Pythona dla wszystkich przykładów.
zaczynajmy.
algorytmy redukcji wymiarowości w Pythonie
zdjęcie Bernarda Spragga. NZ, niektóre prawa zastrzeżone.
- opis poradnika
- redukcja wymiarowości
- chcesz rozpocząć przygotowanie danych?
- algorytmy redukcji wymiarowości
- metody algebry liniowej
- wielowymiarowe metody uczenia
- przykłady redukcji wymiarowości
- Scikit-dowiedz się instalacja Biblioteki
- zbiór danych klasyfikacji
- analiza głównych komponentów
- Singular Value Decomposition
- Linear Discriminant Analysis
- Isomap Embedding
- Locally Linear Embedding
- Modified Locally Linear Embedding
- Further Reading
- tutoriale
- API
- podsumowanie
- opanuj nowoczesne przygotowanie danych!
- przygotowanie danych do uczenia maszynowego w ciągu kilku minut
- wykorzystaj nowoczesne techniki przygotowywania danych do swoich projektów uczenia maszynowego
opis poradnika
Ten poradnik jest podzielony na trzy części; są to:
- redukcja wymiarowości
- algorytmy redukcji wymiarowości
- przykłady redukcji wymiarowości
- instalacja Biblioteki Scikit-Learn
- Klasyfikacja zbiór danych
- analiza głównych składowych
- rozkład wartości liczby pojedynczej
- liniowa Analiza dyskryminacyjna
- osadzanie Izomap
- lokalnie osadzanie liniowe
- zmodyfikowane lokalnie osadzanie liniowe
redukcja wymiarowości
redukcja wymiarowości odnosi się do technik ograniczania liczby zmiennych wejściowych w danych treningowych.
w przypadku danych o dużych wymiarach często przydatne jest zmniejszenie wymiarowości poprzez rzutowanie danych na podprzestrzeń o niższych wymiarach, która przechwytuje „istotę” danych. Nazywa się to redukcją wymiarowości.
— Strona 11, Uczenie maszynowe: perspektywa probabilistyczna, 2012.
wysoka wymiarowość może oznaczać setki, tysiące, a nawet miliony zmiennych wejściowych.
mniej wymiarów wejściowych często oznacza odpowiednio mniej parametrów lub prostszą strukturę w modelu uczenia maszynowego, określaną jako stopnie swobody. Model o zbyt wielu stopniach swobody prawdopodobnie przepełni zestaw danych treningowych i może nie działać dobrze na nowych danych.
pożądane jest posiadanie prostych modeli, które dobrze uogólniają, a z kolei Dane wejściowe z kilkoma zmiennymi wejściowymi. Jest to szczególnie prawdziwe w przypadku modeli liniowych, w których liczba wejść i stopnie swobody modelu są często ściśle powiązane.
redukcja wymiarowości jest techniką przygotowania danych wykonywaną na danych przed modelowaniem. Może to być wykonywane po oczyszczeniu danych i skalowaniu danych oraz przed szkoleniem modelu predykcyjnego.
… redukcja wymiarowości daje bardziej zwartą, łatwiejszą do interpretacji reprezentację koncepcji docelowej, skupiając uwagę użytkownika na najbardziej istotnych zmiennych.
— strona 289, Data Mining: praktyczne narzędzia i Techniki uczenia maszynowego, wydanie 4, 2016.
w związku z tym wszelkie zmniejszenie wymiarowości wykonywane na danych treningowych musi być również wykonywane na nowych danych, takich jak zestaw danych testowych, zestaw danych walidacyjnych i dane podczas Przewidywania z modelem końcowym.
chcesz rozpocząć przygotowanie danych?
weź mój darmowy 7-dniowy crash course e-mail teraz (z przykładowym kodem).
Kliknij, aby się zapisać, a także otrzymać darmową wersję ebooka kursu w formacie PDF.
Pobierz bezpłatny Mini-kurs
algorytmy redukcji wymiarowości
istnieje wiele algorytmów, które mogą być wykorzystane do redukcji wymiarowości.
dwie główne klasy metod to te zaczerpnięte z algebry liniowej i te zaczerpnięte z wielorakiego uczenia się.
metody algebry liniowej
metody faktoryzacji macierzy zaczerpnięte z dziedziny algebry liniowej mogą być wykorzystywane do wymiarowania.
więcej o faktoryzacji macierzy znajdziesz w tutorialu:
- delikatne Wprowadzenie do faktoryzacji macierzy do uczenia maszynowego
niektóre z bardziej popularnych metod obejmują:
- analiza głównych składników
- rozkład wartości pojedynczej
- nieujemna Faktoryzacja macierzy
wielowymiarowe metody uczenia
wielowymiarowe metody uczenia poszukują niżwymiarowej projekcji danych wejściowych o wysokim wymiarze, która rejestruje istotne właściwości danych wejściowych data.
niektóre z bardziej popularnych metod to:
- osadzanie Izomap
- lokalnie osadzanie liniowe
- skalowanie wielowymiarowe
- osadzanie spektralne
- t-rozproszone osadzanie stochastyczne sąsiada
każdy algorytm oferuje inne podejście do wyzwania odkrywania naturalnych relacji w danych w niższych wymiarach.
nie ma najlepszego algorytmu redukcji wymiarowości i nie ma łatwego sposobu na znalezienie najlepszego algorytmu dla danych bez użycia kontrolowanych eksperymentów.
w tym samouczku omówimy, jak używać każdego podzbioru tych popularnych algorytmów redukcji wymiarowości z biblioteki scikit-learn.
przykłady będą podstawą do kopiowania-wklejania przykładów i testowania metod na własnych danych.
nie zagłębimy się w teorię działania algorytmów ani nie porównamy ich bezpośrednio. Aby uzyskać dobry punkt wyjścia na ten temat, zobacz:
- rozkładanie sygnałów w komponentach, scikit-learn API.
- różnorodne uczenie się, scikit-learn API.
zanurkujmy.
przykłady redukcji wymiarowości
w tej sekcji omówimy, jak używać popularnych algorytmów redukcji wymiarowości w scikit-learn.
obejmuje to przykład zastosowania techniki redukcji wymiarowości jako transformacji danych w potoku modelowania i oceny dopasowania modelu do danych.
przykłady są przeznaczone do kopiowania i wklejania do własnego projektu i stosowania metod do własnych danych. Istnieje kilka algorytmów dostępnych w bibliotece scikit-learn, które nie są demonstrowane, ponieważ nie mogą być używane jako transformata danych bezpośrednio ze względu na charakter algorytmu.
jako taki, w każdym przykładzie użyjemy syntetycznego zbioru danych klasyfikacji.
Scikit-dowiedz się instalacja Biblioteki
najpierw zainstalujmy bibliotekę.
nie pomijaj tego kroku, ponieważ musisz upewnić się, że masz zainstalowaną najnowszą wersję.
możesz zainstalować bibliotekę scikit-learn za pomocą Instalatora Pythona PIP, w następujący sposób:
1
|
sudo pip install scikit-learn
|
For additional installation instructions specific to your platform, see:
- Installing scikit-learn
Next, let’s confirm that the library is installed and you are using a modern version.
Run the following script to print the library version number.
1
2
3
|
# check scikit-learn version
import sklearn
print(sklearn.__version__)
|
Running the example, you should see the following version number or higher.
1
|
0.23.0
|
zbiór danych klasyfikacji
użyjemy funkcji make_classification() do utworzenia testowego binarnego zbioru danych klasyfikacji.
zbiór danych będzie miał 1000 przykładów z 20 funkcjami wejściowymi, z których 10 ma charakter informacyjny, a 10 jest zbędnych. Daje to każdej technice możliwość zidentyfikowania i usunięcia nadmiarowych funkcji wejściowych.
stałe losowe ziarno generatora liczb pseudolosowych zapewnia, że generujemy ten sam syntetyczny zbiór danych za każdym razem, gdy kod działa.
An example of creating and summarizing the synthetic classification dataset is listed below.
1
2
3
4
5
6
|
# synthetic classification dataset
from sklearn.import zestawów danych make_classification
# define dataset
X, y = make_classification(n_samples=1000, n_features=20, n_informative=10, n_redundant=10, random_state=7)
# podsumuj zestaw danych
print(X. shape, Y.shape)
|
uruchomienie przykładu tworzy zbiór danych i raportuje liczbę wierszy i kolumn zgodnych z naszymi oczekiwaniami.
1
|
(1000, 20) (1000,)
|
It is a binary classification task and we will evaluate a LogisticRegression model after each dimensionality reduction transform.
model zostanie oceniony przy użyciu złotego standardu wielokrotnej stratyfikacji 10-krotnej weryfikacji krzyżowej. Należy podać dokładność klasyfikacji średniej i odchylenia standardowego we wszystkich fałdach i powtórzeniach.
poniższy przykład ocenia model na nieprzetworzonym zbiorze danych jako punkt porównania.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
# ocenić model regresji logistycznej dla nieprzetworzonych danych
z numpy import oznacza
z numpy Importuj std
ze sklepu.zbiory danych importują make_classification
ze sklepu.model_selection import cross_val_score
ze sklepu.model_selection import RepeatedStratifiedKFold
ze sklepu.linear_model import LogisticRegression
# define dataset
X, y = make_classification(n_samples=1000, n_features=20, n_informative=10, n_redundant=10, random_state=7)
# define the model
model = LogisticRegression()
# evaluate model
cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1)
n_scores = cross_val_score(model, X, y, scoring=’accuracy’, cv=cv, n_jobs=-1)
# report performance
print(’Accuracy: %.3f (%.3F) ’ % (mean(n_scores), std(n_scores)))
|
uruchomienie przykładu ocenia regresję logistyczną na nieprzetworzonym zbiorze danych ze wszystkimi 20 kolumnami, osiągając dokładność klasyfikacji około 82,4 procent.
udana transformacja redukcji wymiarowości na tych danych powinna skutkować modelem, który ma lepszą dokładność niż ta podstawa, chociaż może to nie być możliwe przy wszystkich technikach.
uwaga: nie próbujemy „rozwiązać” tego zbioru danych, wystarczy podać działające przykłady, które można wykorzystać jako punkt wyjścia.
1
|
Accuracy: 0.824 (0.034)
|
Next, we can start looking at examples of dimensionality reduction algorithms applied to this dataset.
I have made some minimal attempts to tune each method to the dataset. Każda metoda redukcji wymiarowości zostanie skonfigurowana tak, aby w miarę możliwości zmniejszyć 20 kolumn wejściowych do 10.
użyjemy Potoku do połączenia transformacji danych i modelu w jednostkę atomową, która może być oceniana za pomocą procedury weryfikacji krzyżowej; na przykład:
1
2
3
4
|
…
# define the pipeline
steps =
model = Pipeline(steps=steps)
|
Let’s get started.
Can you get a better result for one of the algorithms?
dajcie znać w komentarzach poniżej.
analiza głównych komponentów
analiza głównych komponentów, lub PCA, może być najpopularniejszą techniką redukcji wymiarowości z gęstymi danymi (kilka wartości zerowych).
aby uzyskać więcej informacji na temat działania PCA, zobacz tutorial:
- Jak obliczyć główną analizę składową (PCA) od podstaw w Pythonie
biblioteka scikit-learn zapewnia implementację klasy PCA głównej analizy składowej, która może być używana jako transformata danych redukcji wymiarowości. Argument „n_components” może być ustawiony w celu skonfigurowania liczby pożądanych wymiarów na wyjściu transformacji.
kompletny przykład oceny modelu z redukcją wymiarowości PCA znajduje się poniżej.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
# ocenić pca za pomocą algorytmu regresji logistycznej dla klasyfikacja
from numpy import mean
from numpy import std
from sklepn.zbiory danych importują make_classification
ze sklepu.model_selection import cross_val_score
ze sklepu.model_selection import RepeatedStratifiedKFold
ze sklepu.pipeline import Pipeline
ze sklepu.dekompozycja import PCA
ze sklepu.linear_model import LogisticRegression
# define dataset
X, y = make_classification(n_samples=1000, n_features=20, n_informative=10, n_redundant=10, random_state=7)
# define the pipeline
steps =
model = Pipeline(steps=steps)
# evaluate model
cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1)
n_scores = cross_val_score(model, X, y, scoring=’accuracy’, cv=cv, n_jobs=-1)
# report performance
print(’Accuracy: %.3f (%.3f) ’ % (mean(n_scores), std(n_scores)))
|
uruchomienie przykładu ocenia rurociąg modelowania z redukcją wymiarowości i modelem predykcyjnym regresji logistycznej.
Uwaga: Twoje wyniki mogą się różnić ze względu na stochastyczny charakter algorytmu lub procedury oceny lub różnice w precyzji numerycznej. Rozważ uruchomienie przykładu kilka razy i porównaj średni wynik.
w tym przypadku nie widzimy żadnego podnoszenia wydajności modelu w użyciu transformacji PCA.
1
|
Accuracy: 0.824 (0.034)
|
Singular Value Decomposition
Singular Value Decomposition, or SVD, is one of the most popular techniques for dimensionality reduction for sparse data (data with many zero values).
aby dowiedzieć się więcej o tym, jak działa SVD, zobacz tutorial:
- Jak obliczyć SVD od zera za pomocą Pythona
biblioteka scikit-learn zapewnia implementację klasy TruncatedSVD dekompozycji wartości pojedynczej, która może być używana jako transformata danych redukcji wymiarowości. Argument „n_components” może być ustawiony w celu skonfigurowania liczby pożądanych wymiarów na wyjściu transformacji.
kompletny przykład oceny modelu z redukcją wymiarowości SVD znajduje się poniżej.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
# ocenić svd za pomocą algorytmu regresji logistycznej dla klasyfikacja
from numpy import mean
from numpy import std
from sklepn.zbiory danych importują make_classification
ze sklepu.model_selection import cross_val_score
ze sklepu.model_selection import RepeatedStratifiedKFold
ze sklepu.pipeline import Pipeline
ze sklepu.dekompozycja import TruncatedSVD
ze sklepu.linear_model import LogisticRegression
# define dataset
X, y = make_classification(n_samples=1000, n_features=20, n_informative=10, n_redundant=10, random_state=7)
# define the pipeline
steps =
model = Pipeline(steps=steps)
# evaluate model
cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1)
n_scores = cross_val_score(model, X, y, scoring=’accuracy’, cv=cv, n_jobs=-1)
# report performance
print(’Accuracy: %.3f (%.3f) ’ % (mean(n_scores), std(n_scores)))
|
uruchomienie przykładu ocenia rurociąg modelowania z redukcją wymiarowości i modelem predykcyjnym regresji logistycznej.
Uwaga: Twoje wyniki mogą się różnić ze względu na stochastyczny charakter algorytmu lub procedury oceny lub różnice w precyzji numerycznej. Rozważ uruchomienie przykładu kilka razy i porównaj średni wynik.
w tym przypadku nie widzimy żadnego liftingu w wydajności modelu przy użyciu transformacji SVD.
1
|
Accuracy: 0.824 (0.034)
|
Linear Discriminant Analysis
Linear Discriminant Analysis, or LDA, is a multi-class classification algorithm that can be used for dimensionality reduction.
liczba wymiarów rzutowania jest ograniczona do 1 I C-1, Gdzie C jest liczbą klas. W tym przypadku nasz zbiór danych jest binarnym problemem klasyfikacji (dwie klasy), ograniczającym liczbę wymiarów do 1.
aby uzyskać więcej informacji na temat Lda dla redukcji wymiarowości, zobacz tutorial:
- liniowa Analiza dyskryminacyjna dla redukcji wymiarowości w Pythonie
biblioteka scikit-learn zapewnia implementację klasy liniowej analizy dyskryminacyjnej, która może być używana jako transformata danych redukcji wymiarowości. Argument „n_components” może być ustawiony w celu skonfigurowania liczby pożądanych wymiarów na wyjściu transformacji.
kompletny przykład oceny modelu z redukcją wymiarowości LDA znajduje się poniżej.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
# ocenić lda za pomocą algorytmu regresji logistycznej dla klasyfikacja
from numpy import mean
from numpy import std
from sklepn.zbiory danych importują make_classification
ze sklepu.model_selection import cross_val_score
ze sklepu.model_selection import RepeatedStratifiedKFold
ze sklepu.pipeline import Pipeline
ze sklepu.discriminant_analysis import LinearDiscriminantAnalysis
ze sklepu.linear_model import LogisticRegression
# define dataset
X, y = make_classification(n_samples=1000, n_features=20, n_informative=10, n_redundant=10, random_state=7)
# define the pipeline
steps =
model = Pipeline(steps=steps)
# evaluate model
cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1)
n_scores = cross_val_score(model, X, y, scoring=’accuracy’, cv=cv, n_jobs=-1)
# report performance
print(’Accuracy: %.3f (%.3f) ’ % (mean(n_scores), std(n_scores)))
|
uruchomienie przykładu ocenia rurociąg modelowania z redukcją wymiarowości i modelem predykcyjnym regresji logistycznej.
Uwaga: Twoje wyniki mogą się różnić ze względu na stochastyczny charakter algorytmu lub procedury oceny lub różnice w precyzji numerycznej. Rozważ uruchomienie przykładu kilka razy i porównaj średni wynik.
w tym przypadku widzimy niewielki wzrost wydajności w porównaniu z dopasowaniem bazowym na surowych danych.
1
|
Accuracy: 0.825 (0.034)
|
Isomap Embedding
Isomap Embedding, or Isomap, creates an embedding of the dataset and attempts to preserve the relationships in the dataset.
biblioteka scikit-learn zapewnia implementację klasy Isomap osadzania Isomap, która może być używana jako transformata danych redukcji wymiarowości. Argument „n_components” może być ustawiony w celu skonfigurowania liczby pożądanych wymiarów na wyjściu transformacji.
kompletny przykład oceny modelu z redukcją wymiarowości SVD znajduje się poniżej.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
# ocenić mapę isomap za pomocą algorytmu regresji logistycznej dla klasyfikacja
from numpy import mean
from numpy import std
from sklepn.zbiory danych importują make_classification
ze sklepu.model_selection import cross_val_score
ze sklepu.model_selection import RepeatedStratifiedKFold
ze sklepu.pipeline import Pipeline
ze sklepu.kolektor import Isomap
ze sklepu.linear_model import LogisticRegression
# define dataset
X, y = make_classification(n_samples=1000, n_features=20, n_informative=10, n_redundant=10, random_state=7)
# define the pipeline
steps =
model = Pipeline(steps=steps)
# evaluate model
cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1)
n_scores = cross_val_score(model, X, y, scoring=’accuracy’, cv=cv, n_jobs=-1)
# report performance
print(’Accuracy: %.3f (%.3f) ’ % (mean(n_scores), std(n_scores)))
|
uruchomienie przykładu ocenia rurociąg modelowania z redukcją wymiarowości i modelem predykcyjnym regresji logistycznej.
Uwaga: Twoje wyniki mogą się różnić ze względu na stochastyczny charakter algorytmu lub procedury oceny lub różnice w precyzji numerycznej. Rozważ uruchomienie przykładu kilka razy i porównaj średni wynik.
w tym przypadku możemy zobaczyć wzrost wydajności z transformacją danych Isomap w porównaniu do dopasowania bazowego na surowych danych.
1
|
Accuracy: 0.888 (0.029)
|
Locally Linear Embedding
Locally Linear Embedding, or LLE, creates an embedding of the dataset and attempts to preserve the relationships between neighborhoods in the dataset.
biblioteka scikit-learn zapewnia LocallyLinearEmbedding implementację klasy lokalnie liniowego osadzania, która może być używana jako transformata danych redukcji wymiarowości. Argument „n_components” można ustawić w celu skonfigurowania liczby pożądanych wymiarów na wyjściu transformacji
kompletny przykład obliczenia modelu z redukcją wymiarowości LLE jest wymieniony poniżej.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
# ocena lle i logistycznej regresji dla taksonomii
from numpy import mean
from numpy import std
from sklepn.zbiory danych importują make_classification
ze sklepu.model_selection import cross_val_score
ze sklepu.model_selection import RepeatedStratifiedKFold
ze sklepu.pipeline import Pipeline
ze sklepu.kolektor Import LocallyLinearEmbedding
ze sklepu.linear_model import LogisticRegression
# define dataset
X, y = make_classification(n_samples=1000, n_features=20, n_informative=10, n_redundant=10, random_state=7)
# define the pipeline
steps =
model = Pipeline(steps=steps)
# evaluate model
cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1)
n_scores = cross_val_score(model, X, y, scoring=’accuracy’, cv=cv, n_jobs=-1)
# report performance
print(’Accuracy: %.3f (%.3f) ’ % (mean(n_scores), std(n_scores)))
|
uruchomienie przykładu ocenia rurociąg modelowania z redukcją wymiarowości i modelem predykcyjnym regresji logistycznej.
Uwaga: Twoje wyniki mogą się różnić ze względu na stochastyczny charakter algorytmu lub procedury oceny lub różnice w precyzji numerycznej. Rozważ uruchomienie przykładu kilka razy i porównaj średni wynik.
w tym przypadku widzimy wzrost wydajności z transformacją danych LLE w porównaniu do dopasowania bazowego na surowych danych.
1
|
Accuracy: 0.886 (0.028)
|
Modified Locally Linear Embedding
Modified Locally Linear Embedding, or Modified LLE, is an extension of Locally Linear Embedding that creates multiple weighting vectors for each neighborhood.
biblioteka scikit-learn zapewnia implementację klasy LocallyLinearEmbedding zmodyfikowanego lokalnie osadzania liniowego, które można wykorzystać jako transformatę danych redukcji wymiarowości. Argument” method „musi być ustawiony na 'modified’, a argument” n_components „może być ustawiony tak, aby ustawić liczbę pożądanych wymiarów na wyjściu transformacji, która musi być mniejsza niż argument” n_neighbors”.
kompletny przykład oceny modelu ze zmodyfikowaną redukcją wymiarowości LLE znajduje się poniżej.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
# ocenić zmodyfikowany lle i logistyczne regresji dla klasyfikacja
from numpy import mean
from numpy import std
from sklepn.zbiory danych importują make_classification
ze sklepu.model_selection import cross_val_score
ze sklepu.model_selection import RepeatedStratifiedKFold
ze sklepu.pipeline import Pipeline
ze sklepu.kolektor Import LocallyLinearEmbedding
ze sklepu.linear_model import LogisticRegression
# define dataset
X, y = make_classification(n_samples=1000, n_features=20, n_informative=10, n_redundant=10, random_state=7)
# define the pipeline
steps =
model = Pipeline(steps=steps)
# evaluate model
cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1)
n_scores = cross_val_score(model, X, y, scoring=’accuracy’, cv=cv, n_jobs=-1)
# report performance
print(’Accuracy: %.3f (%.3f) ’ % (mean(n_scores), std(n_scores)))
|
uruchomienie przykładu ocenia rurociąg modelowania z redukcją wymiarowości i modelem predykcyjnym regresji logistycznej.
Uwaga: Twoje wyniki mogą się różnić ze względu na stochastyczny charakter algorytmu lub procedury oceny lub różnice w precyzji numerycznej. Rozważ uruchomienie przykładu kilka razy i porównaj średni wynik.
w tym przypadku widzimy wzrost wydajności dzięki zmodyfikowanej transformacji danych LLE w porównaniu do dopasowania bazowego na surowych danych.
1
|
Accuracy: 0.846 (0.036)
|
Further Reading
This section provides more resources on the topic if you are looking to go deeper.
tutoriale
- Wprowadzenie do redukcji wymiarowości w uczeniu maszynowym
- Główna Analiza składowa dla redukcji wymiarowości w Pythonie
- rozkład liczby pojedynczej dla redukcji wymiarowości w Pythonie
- liniowa Analiza dyskryminacyjna dla redukcji wymiarowości w Pythonie
API
- dekompozycja sygnałów w komponentach, scikit-learn API.
- różnorodne uczenie się, scikit-learn API.
podsumowanie
w tym samouczku odkryłeś, jak dopasować i ocenić najlepsze algorytmy redukcji wymiarowości w Pythonie.
w szczególności nauczyłeś się:
- redukcja wymiarowości ma na celu niższą reprezentację liczbowych danych wejściowych, która zachowuje istotne relacje w danych.
- istnieje wiele różnych algorytmów redukcji wymiarowości i nie ma jednej najlepszej metody dla wszystkich zbiorów danych.
- jak zaimplementować, dopasować i ocenić redukcję wymiarowości w Pythonie z biblioteką uczenia maszynowego scikit-learn.
masz pytania?
Zadawaj pytania w komentarzach poniżej, a ja postaram się odpowiedzieć.
opanuj nowoczesne przygotowanie danych!
przygotowanie danych do uczenia maszynowego w ciągu kilku minut
…dzięki kilku liniom kodu Pythona
Dowiedz się, jak w moim nowym ebooku:
Przygotowanie danych do uczenia maszynowego
zapewnia samouczki do samodzielnej nauki z pełnym kodem roboczym na temat:
wybór funkcji, RFE, Czyszczenie danych, transformacje danych, skalowanie, redukcja wymiarowości i wiele więcej…
wykorzystaj nowoczesne techniki przygotowywania danych do swoich projektów uczenia maszynowego
Zobacz, co jest w środku