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?

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert