Sdílet prostřednictvím


Příprava dat na analýzu

V předchozí fázi tohoto kurzu jsme nainstalovali na váš počítač PyTorch. Teď ho použijeme k nastavení kódu s daty, která použijeme k vytvoření modelu.

Otevřete nový projekt v aplikaci Visual Studio.

  1. Otevřete Visual Studio a zvolte create a new project.

Vytvoření nového projektu sady Visual Studio

  1. Na panelu hledání zadejte Python a vyberte Python Application jako šablonu projektu.

Vytvoření nové aplikace v Pythonu

  1. V okně konfigurace:
  • Pojmenujte projekt. Tady ji nazýváme DataClassifier.
  • Zvolte umístění projektu.
  • Pokud používáte VS2019, zkontrolujte, jestli Create directory for solution je zaškrtnuté.
  • Pokud používáte VS2017, ujistěte se, že Place solution and project in the same directory není zaškrtnuto.

Konfigurace nové aplikace v Pythonu

Stisknutím create vytvoříte projekt.

Vytvoření interpreta Pythonu

Teď musíte definovat nový interpret Pythonu. To musí zahrnovat balíček PyTorch, který jste nedávno nainstalovali.

  1. Přejděte na výběr interpreta a vyberte Add Environment:

Výběr interpreta Pythonu

  1. V okně Add Environment vyberte Existing environmenta zvolte Anaconda3 (3.6, 64-bit). To zahrnuje balíček PyTorch.

Konfigurace nového prostředí Pythonu

Pokud chcete otestovat nový interpret Pythonu a balíček PyTorch, zadejte do DataClassifier.py souboru následující kód:

from __future__ import print_function 

import torch 

x=torch.rand(2, 3) 

print(x) 

Výstup by měl být náhodný tensor 5x3 podobný následujícímu.

Otestování nového interpreta Pythonu

Poznámka:

Zajímá vás další informace? Navštivte oficiální stránky PyTorch.

Pochopení dat

Model vytrénujeme na datové sadě Iris Společnosti Fisher. Tato známá datová sada obsahuje 50 záznamů pro každý ze tří druhů Iris: Iris setosa, Iris virginica a Iris versicolor.

Bylo publikováno několik verzí datové sady. Datovou sadu Iris najdete v úložišti strojového učení UCI, naimportujete datovou sadu přímo z knihovny Python Scikit-learn nebo použijete jakoukoli jinou publikovanou verzi. Informace o datové sadě Iris flower najdete na jeho stránce Wikipedie.

V tomto kurzu předvedete, jak vytrénovat model pomocí tabulkového typu vstupu, použijete datovou sadu Iris exportovanou do excelového souboru.

Každý řádek excelové tabulky bude zobrazovat čtyři vlastnosti kosatců: délku listů v cm, šířku listů v cm, délku okvětního lístku v cm a šířku okvětního lístku v cm. Tyto vlastnosti budou sloužit jako vstup. Poslední sloupec obsahuje typ Iris související s těmito parametry a bude představovat regresní výstup. Datová sada celkem zahrnuje 150 vstupů čtyř funkcí, z nichž každý odpovídá příslušnému typu Iris.

Údaje o duhovce

Regresní analýza zkoumá vztah mezi vstupními proměnnými a výsledkem. Na základě vstupu se model naučí predikovat správný typ výstupu – jeden ze tří typů Iris: Iris-setosa, Iris-versicolor, Iris-virginica.

Důležité

Pokud se rozhodnete k vytvoření vlastního modelu použít jakoukoli jinou datovou sadu, budete muset zadat vstupní proměnné modelu a výstup podle vašeho scénáře.

Načtěte datovou sadu.

  1. Stáhněte datovou sadu Iris ve formátu Excelu. Najdete ho tady.

  2. DataClassifier.py Do souboru ve složce Soubory Průzkumníka řešení přidejte následující příkaz importu, abyste získali přístup ke všem balíčkům, které budeme potřebovat.

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 vidíte, budete k načítání a manipulaci s daty a balíčku torch.nn, který obsahuje moduly a rozšiřitelné třídy pro vytváření neurálních sítí, používat balíček pandas (Analýza dat Pythonu).

  1. Načtěte data do paměti a ověřte počet tříd. Očekáváme, že uvidíme 50 položek každého typu Iris. Nezapomeňte zadat umístění datové sady na počítači.

Do souboru DataClassifier.py přidejte následující kód.

# 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()) 

Při spuštění tohoto kódu je očekávaný výstup následující:

Stav datové sady

Abychom mohli datovou sadu používat a vytrénovat model, musíme definovat vstup a výstup. Vstup zahrnuje 150 řádků funkcí a výstupem je sloupec typu Iris. Neurální síť, kterou použijeme, vyžaduje číselné proměnné, takže výstupní proměnnou převedete na číselný formát.

  1. V datové sadě vytvořte nový sloupec, který bude představovat výstup v číselném formátu a definuje regresní vstup a výstup.

Do souboru DataClassifier.py přidejte následující kód.

# 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()) 

Při spuštění tohoto kódu je očekávaný výstup následující:

Vstup a výstup

K trénování modelu potřebujeme převést vstup a výstup modelu do formátu Tensor:

  1. Převést na Tensor:

Do souboru DataClassifier.py přidejte následující kód.

# 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 

Pokud kód spustíme, očekávaný výstup zobrazí vstupní a výstupní formát následujícím způsobem:

Vstupní a výstupní formát datové sady

Vstupní hodnoty jsou 150. Přibližně 60% bude trénovacími daty modelu. Budete uchovávat 20% pro ověření a 30% pro test.

V tomto kurzu je velikost dávky pro trénovací datovou sadu definovaná jako 10. V trénovací sadě je 95 položek, což znamená, že v průměru je zde 9 celých dávek k iteraci přes trénovací sadu jednou za jednu epochu. Velikost dávky ověřovací a testovací sady zachováte jako 1.

  1. Rozdělte data pro trénování, ověřování a testování sad:

Do souboru DataClassifier.py přidejte následující kód.

# 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)

Další kroky

Když jsou data připravena, je čas vytrénovat náš model PyTorch.