Udostępnij przez


Przygotowywanie danych do analizy

Na poprzednim etapie tego samouczka zainstalowano narzędzie PyTorch na maszynie. Teraz użyjemy go do skonfigurowania kodu z danymi, których użyjemy do utworzenia modelu.

Otwórz nowy projekt w programie Visual Studio.

  1. Otwórz program Visual Studio i wybierz pozycję create a new project.

Tworzenie nowego projektu programu Visual Studio

  1. Na pasku wyszukiwania wpisz Python i wybierz jako Python Application szablon projektu.

Tworzenie nowej aplikacji w języku Python

  1. W oknie konfiguracji:
  • Nadaj projektowi nazwę. W tym miejscu nazywamy go DataClassifier.
  • Wybierz lokalizację projektu.
  • Jeśli używasz programu VS2019, upewnij się, że Create directory for solution jest zaznaczone.
  • Jeśli używasz programu VS2017, upewnij się, że Place solution and project in the same directory nie jest zaznaczona.

Konfigurowanie nowej aplikacji w języku Python

Naciśnij create , aby utworzyć projekt.

Tworzenie interpretera języka Python

Teraz musisz zdefiniować nowy interpreter języka Python. Musi to obejmować ostatnio zainstalowany pakiet PyTorch.

  1. Przejdź do zaznaczenia interpretera i wybierz pozycję Add Environment:

Wybór interpretera języka Python

  1. Add Environment W oknie wybierz pozycję Existing environment, a następnie wybierz pozycję Anaconda3 (3.6, 64-bit). Obejmuje to pakiet PyTorch.

Konfigurowanie nowego środowiska języka Python

Aby przetestować nowy interpreter języka Python i pakiet PyTorch, wprowadź następujący kod do DataClassifier.py pliku:

from __future__ import print_function 

import torch 

x=torch.rand(2, 3) 

print(x) 

Dane wyjściowe powinny być losowym tensorem 5x3 podobnym do poniższego.

Testowanie nowego interpretera języka Python

Uwaga / Notatka

Chcesz dowiedzieć się więcej? Odwiedź oficjalną stronę internetową PyTorch.

Informacje o danych

Wytrenujemy model na zestawie danych fisher's Iris flower. Ten słynny zestaw danych zawiera 50 rekordów dla każdego z trzech gatunków Iris Iris setosa, Iris virginica i Iris versicolor.

Opublikowano kilka wersji zestawu danych. Zestaw danych Iris można znaleźć w repozytorium UCI Machine Learning, zaimportować zestaw danych bezpośrednio z biblioteki Scikit-learn języka Python lub użyć dowolnej innej wersji, która została wcześniej opublikowana. Aby dowiedzieć się więcej o zestawie danych z kwiatami Iris, odwiedź stronę Wikipedii.

W tym samouczku nauczysz się, jak trenować model z użyciem tabelarycznych danych wejściowych, korzystając z zestawu danych Iris wyeksportowanego do pliku Excel.

Każda linia tabeli programu Excel będzie zawierać cztery cechy irysów: długość sepa w cm, szerokość sepa w cm, długość płatka w cm i szerokość płatka w cm. Te funkcje będą służyć jako dane wejściowe. Ostatnia kolumna zawiera typ Iris powiązany z tymi parametrami i będzie stanowić dane wyjściowe regresji. W sumie zestaw danych zawiera 150 danych wejściowych czterech cech, każda z nich dopasowana do odpowiedniego typu irysa.

Dane irysów

Analiza regresji analizuje relację między zmiennymi wejściowymi a wynikiem. Na podstawie danych wejściowych model nauczy się przewidywać prawidłowy typ danych wyjściowych — jeden z trzech typów Iris: Iris-setosa, Iris-versicolor, Iris-virginica.

Ważne

Jeśli zdecydujesz się użyć dowolnego innego zestawu danych do utworzenia własnego modelu, musisz określić zmienne wejściowe i wyjściowe modelu zgodnie ze scenariuszem.

Załaduj zestaw danych.

  1. Pobierz zestaw danych Iris w formacie programu Excel. Możesz go znaleźć tutaj.

  2. DataClassifier.py W pliku w folderze Pliki Eksploratora rozwiązań dodaj następującą instrukcję importu, aby uzyskać dostęp do wszystkich potrzebnych pakietów.

import torch 
import pandas as pd 
import torch.nn as nn 
from torch.utils.data import random_split, DataLoader, TensorDataset 
import torch.nn.functional as F 
import numpy as np 
import torch.optim as optim 
from torch.optim import Adam 

Jak widać, pakiet pandas (Analiza danych języka Python) będzie używany do ładowania i manipulowania danymi i pakietem torch.nn zawierającym moduły i rozszerzalne klasy do tworzenia sieci neuronowych.

  1. Załaduj dane do pamięci i sprawdź liczbę klas. Oczekujemy, że zobaczymy 50 sztuk każdej odmiany irysa. Pamiętaj, aby określić lokalizację zestawu danych na komputerze.

Dodaj następujący kod do pliku DataClassifier.py.

# Loading the Data
df = pd.read_excel(r'C:…\Iris_dataset.xlsx') 
print('Take a look at sample from the dataset:') 
print(df.head()) 

# Let's verify if our data is balanced and what types of species we have  
print('\nOur dataset is balanced and has the following values to predict:') 
print(df['Iris_Type'].value_counts()) 

Po uruchomieniu tego kodu oczekiwane dane wyjściowe są następujące:

Stan zestawu danych

Aby móc używać zestawu danych i trenować model, musimy zdefiniować dane wejściowe i wyjściowe. Dane wejściowe zawierają 150 wierszy funkcji, a dane wyjściowe to kolumna typu Iris. Używana sieć neuronowa wymaga zmiennych liczbowych, więc przekonwertujesz zmienną wyjściową na format liczbowy.

  1. Utwórz nową kolumnę w zestawie danych, która będzie reprezentować dane wyjściowe w formacie liczbowym i zdefiniuj dane wejściowe i wyjściowe regresji.

Dodaj następujący kod do pliku DataClassifier.py.

# Convert Iris species into numeric types: Iris-setosa=0, Iris-versicolor=1, Iris-virginica=2.  
labels = {'Iris-setosa':0, 'Iris-versicolor':1, 'Iris-virginica':2} 
df['IrisType_num'] = df['Iris_Type']   # Create a new column "IrisType_num" 
df.IrisType_num = [labels[item] for item in df.IrisType_num]  # Convert the values to numeric ones 

# Define input and output datasets 
input = df.iloc[:, 1:-2]            # We drop the first column and the two last ones. 
print('\nInput values are:') 
print(input.head())   
output = df.loc[:, 'IrisType_num']   # Output Y is the last column  
print('\nThe output value is:') 
print(output.head()) 

Po uruchomieniu tego kodu oczekiwane dane wyjściowe są następujące:

Dane wejściowe i wyjściowe

Aby wytrenować model, musimy przekonwertować dane wejściowe i wyjściowe modelu na format Tensor:

  1. Przekonwertuj na tensor:

Dodaj następujący kod do pliku DataClassifier.py.

# Convert Input and Output data to Tensors and create a TensorDataset 
input = torch.Tensor(input.to_numpy())      # Create tensor of type torch.float32 
print('\nInput format: ', input.shape, input.dtype)     # Input format: torch.Size([150, 4]) torch.float32 
output = torch.tensor(output.to_numpy())        # Create tensor type torch.int64  
print('Output format: ', output.shape, output.dtype)  # Output format: torch.Size([150]) torch.int64 
data = TensorDataset(input, output)    # Create a torch.utils.data.TensorDataset object for further data manipulation 

Jeśli uruchomimy kod, oczekiwane dane wyjściowe będą wyświetlać format danych wejściowych i wyjściowych, jak pokazano poniżej:

Format wejściowy i wyjściowy zestawu danych

Istnieją 150 wartości wejściowych. Około 60% będzie częścią danych treningowych modelu. Będziesz przechowywać 20% na potrzeby weryfikacji i 30% na potrzeby testu.

W tym samouczku rozmiar partii zestawu danych trenowania jest definiowany jako 10. W zestawie treningowym znajduje się 95 elementów, co oznacza, że średnio istnieje 9 pełnych partii iterujących po zestawie treningowym (jedna epoka). Rozmiar partii zestawów weryfikacji i testów zachowasz jako 1.

  1. Podziel dane w celu trenowania, weryfikowania i testowania zestawów:

Dodaj następujący kod do pliku DataClassifier.py.

# Split to Train, Validate and Test sets using random_split 
train_batch_size = 10        
number_rows = len(input)    # The size of our dataset or the number of rows in excel table.  
test_split = int(number_rows*0.3)  
validate_split = int(number_rows*0.2) 
train_split = number_rows - test_split - validate_split     
train_set, validate_set, test_set = random_split( 
    data, [train_split, validate_split, test_split])    
 
# Create Dataloader to read the data within batch sizes and put into memory. 
train_loader = DataLoader(train_set, batch_size = train_batch_size, shuffle = True) 
validate_loader = DataLoader(validate_set, batch_size = 1) 
test_loader = DataLoader(test_set, batch_size = 1)

Dalsze kroki

Gdy dane będą gotowe do użycia, nadszedł czas, aby wytrenować nasz model PyTorch