Hoe gegevens in python te normaliseren
Vaak normaliseren we in statistieken en machinaal leren variabelen zodanig dat het bereik van waarden tussen 0 en 1 ligt.
De meest voorkomende reden voor het normaliseren van variabelen is wanneer we een soort multivariate analyse uitvoeren (dwz we willen de relatie tussen verschillende voorspellende variabelen en een responsvariabele begrijpen) en we willen dat elke variabele in gelijke mate aan de analyse bijdraagt.
Wanneer variabelen op verschillende schalen worden gemeten, dragen ze vaak niet in gelijke mate bij aan de analyse. Als de waarden van de ene variabele bijvoorbeeld variëren van 0 tot 100.000 en de waarden van een andere variabele van 0 tot 100, krijgt de variabele met het grootste bereik een groter gewicht in de analyse.
Door de variabelen te standaardiseren, kunnen we er zeker van zijn dat elke variabele in gelijke mate bijdraagt aan de analyse.
Om waarden tussen 0 en 1 te normaliseren, kunnen we de volgende formule gebruiken:
x norm = (x i – x min ) / (x max – x min )
Goud:
- x norm : de i-de genormaliseerde waarde in de dataset
- x i : de i- de waarde van de dataset
- x max : De minimumwaarde in de gegevensset
- x min : de maximale waarde in de gegevensset
De volgende voorbeelden laten zien hoe u een of meer variabelen in Python kunt normaliseren.
Voorbeeld 1: normaliseer een NumPy-array
De volgende code laat zien hoe u alle waarden in een NumPy-array kunt normaliseren:
import numpy as np #create NumPy array data = np. array ([[13, 16, 19, 22, 23, 38, 47, 56, 58, 63, 65, 70, 71]]) #normalize all values in array data_norm = (data - data. min ())/ (data. max () - data. min ()) #view normalized values data_norm array([[0. , 0.05172414, 0.10344828, 0.15517241, 0.17241379, 0.43103448, 0.5862069, 0.74137931, 0.77586207, 0.86206897, 0.89655172, 0.98275862, 1. ]])
Elk van de waarden in de genormaliseerde array ligt nu tussen 0 en 1.
Voorbeeld 2: Normaliseer alle variabelen in Pandas DataFrame
De volgende code laat zien hoe u alle variabelen in een Panda DataFrame kunt normaliseren:
import pandas as pd #createDataFrame df = pd. DataFrame ({' points ': [25, 12, 15, 14, 19, 23, 25, 29], ' assists ': [5, 7, 7, 9, 12, 9, 9, 4], ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]}) #normalize values in every column df_norm = (df-df. min ())/ (df. max () - df. min ()) #view normalized DataFrame df_norm points assists rebounds 0 0.764706 0.125 0.857143 1 0.000000 0.375 0.428571 2 0.176471 0.375 0.714286 3 0.117647 0.625 0.142857 4 0.411765 1.000 0.142857 5 0.647059 0.625 0.000000 6 0.764706 0.625 0.571429 7 1.000000 0.000 1.000000
Elk van de waarden in elke kolom ligt nu tussen 0 en 1.
Voorbeeld 3: Normaliseer specifieke variabelen in Pandas DataFrame
De volgende code laat zien hoe u een specifieke variabele in een Panda DataFrame normaliseert:
import pandas as pd #createDataFrame df = pd. DataFrame ({' points ': [25, 12, 15, 14, 19, 23, 25, 29], ' assists ': [5, 7, 7, 9, 12, 9, 9, 4], ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]}) define columns to normalize x = df. iloc [:,0:2] #normalize values in first two columns only df. iloc [:,0:2] = (xx. min ())/ (x. max () - x. min ()) #view normalized DataFrame df points assists rebounds 0 0.764706 0.125 11 1 0.000000 0.375 8 2 0.176471 0.375 10 3 0.117647 0.625 6 4 0.411765 1.000 6 5 0.647059 0.625 5 6 0.764706 0.625 9 7 1.000000 0.000 12
Merk op dat alleen de waarden in de eerste twee kolommen zijn genormaliseerd.
Aanvullende bronnen
De volgende zelfstudies bieden aanvullende informatie over gegevensnormalisatie:
Hoe gegevens tussen 0 en 1 te normaliseren
Hoe gegevens tussen 0 en 100 te normaliseren
Standaardisatie of normalisatie: wat is het verschil?