• Yapay zeka soru ve sorunlarınızı uygun olan kategorilere açıp yanıt alabilirsiniz...

NumPy dizisi nasıl normalize edilir?

  • Konuyu Başlatan Konuyu Başlatan Garfield
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 0
  • Etiketler Etiketler
    veri bilimi

Garfield

YZF Admin
Yaş
40
Konum
YurtDışı
Katılım
27 Eki 2026
Konular
664
Mesajlar
689
AI Seviyesi
Yeni
İşin amacına göre NumPy dizisini ya min-maks ölçekleme ile belirli bir aralığa, ya da vektör normuna bölerek birim uzunluğa normalize edebilirsin. En yaygın yöntem olan min-maks normalizasyonunda her değerden dizinin en küçüğü çıkarılır ve sonuç, en büyük ile en küçük arasındaki farka bölünür. Böylece değerler genellikle 0 ile 1 arasına taşınır.

Min-maks normalizasyonu​


Bir dizinin değerlerini 0–1 aralığına taşımak için şu formül kullanılır:

normalize edilmiş değer = (değer - minimum) / (maksimum - minimum)

Örneğin [1, 3, 5] dizisinde minimum 1, maksimum 5 olduğu için sonuç [0.0, 0.5, 1.0] olur. NumPy ile çalışan en küçük örnek şöyledir:

Python:
import numpy as np

dizi = np.array([1, 3, 5], dtype=float)

minimum = dizi.min()
maksimum = dizi.max()

if maksimum == minimum:
    normalize = np.zeros_like(dizi)
else:
    normalize = (dizi - minimum) / (maksimum - minimum)

print(normalize)

Beklenen çıktı yaklaşık olarak şöyledir:

Python:
[0.  0.5 1. ]

Buradaki dtype=float önemlidir; tamsayılarla çalışmak bazı işlemlerde ondalık sonuçların beklenmedik biçimde kaybolmasına yol açabilir. Dizideki bütün değerler aynıysa maksimum - minimum sıfır olur. Bu nedenle örnekte önce bu durum kontrol edilmiştir; tüm değerleri 0 kabul etmek yalnızca uygulamanın bu durumu böyle yorumlaması uygunsa kullanılmalıdır.

Başka bir aralığa dönüştürme​


Değerleri 0–1 yerine a ile b arasına taşımak için önce 0–1 normalizasyonu yapılır, ardından hedef aralığa ölçeklenir:

Python:
import numpy as np

dizi = np.array([10, 20, 30], dtype=float)
a = -1
b = 1

minimum = dizi.min()
maksimum = dizi.max()

if maksimum == minimum:
    normalize = np.full_like(dizi, (a + b) / 2)
else:
    normalize = a + (dizi - minimum) * (b - a) / (maksimum - minimum)

print(normalize)

Bu örneğin çıktısı [-1. 0. 1.] olur. Böylece en küçük değer a değerine, en büyük değer ise b değerine karşılık gelir.

Hangi normalizasyon kullanılmalı?​


“Normalize etmek” tek bir işlemi ifade etmez. Kullanacağın yöntem, verinin hangi özelliğini korumak istediğine bağlıdır.
YöntemFormül veya işlemUygun kullanım
Min-maks(x - min) / (max - min)Değerleri belirli bir aralığa taşımak
Birim vektörDizi / norm(dizi)Yönü koruyup uzunluğu 1 yapmak
Standartlaştırma(x - ortalama) / standart sapmaOrtalama 0 ve standart sapma 1 ölçeğiyle çalışmak
Tablodaki yöntemler birbirinin yerine her zaman kullanılamaz. Örneğin görüntü veya özellik değerlerini 0–1 aralığına almak istiyorsan min-maks yöntemi uygundur. Bir vektörün yönünü karşılaştırmak istiyorsan normuna bölmek daha anlamlıdır. Veriyi ortalaması 0, standart sapması 1 olacak biçimde dönüştürmek istiyorsan standartlaştırma kullanılır.

Bir vektörü birim uzunluğa normalize etme​


Bir vektörü Öklid normuna bölerek uzunluğunu 1 yapabilirsin:

Python:
import numpy as np

vektor = np.array([3, 4], dtype=float)
norm = np.linalg.norm(vektor)

if norm == 0:
    normalize = np.zeros_like(vektor)
else:
    normalize = vektor / norm

print(normalize)
print(np.linalg.norm(normalize))

Çıktı yaklaşık olarak [0.6 0.8] ve 1.0 olur. Bu işlem değerleri 0–1 aralığına sokmayı garanti etmez; örneğin negatif bileşenler yine negatif kalabilir. Sağladığı şey, sıfır olmayan vektörün uzunluğunu 1 yapmaktır.

İki boyutlu dizilerde eksen seçimi​


Bir matrisin tamamını tek bir değer aralığına çekmek ile her sütunu ayrı ayrı normalize etmek farklı sonuçlar verir. Satır veya sütun bazında işlem yapacaksan axis değerini açıkça belirtmelisin:

Python:
import numpy as np

matris = np.array([
    [1, 10],
    [3, 20],
    [5, 30]
], dtype=float)

sutun_min = matris.min(axis=0)
sutun_max = matris.max(axis=0)
sutun_normalize = (matris - sutun_min) / (sutun_max - sutun_min)

print(sutun_normalize)

Burada her sütunun minimumu 0, maksimumu 1 olur. Makine öğrenmesi gibi veri işleme akışlarında normalizasyon sınırlarını yalnızca eğitim verisinden hesaplayıp doğrulama veya test verisine de aynı minimum ve maksimum değerlerini uygulamak gerekir. Aksi hâlde test verisinin bilgisi dönüşüm hesabına karışabilir ve sonuç olduğundan daha iyimser görünebilir.
 

Sen de şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic
Geri
Üst