İçeriğe geç

Makine Öğrenmesi Hatalı Satırlar

Makine öğrenmesinde bir önceki yazıda nasıl veri seti okunduğunu görmüştük. Şimdi bu datalarda karşılaşılan sorunlardan birisi olan kayıp verileri işlemeyi anlatacağım. Bir veri setinde bazı satırlarda kayıp veriler olabiliyor bu veriler için ?, NaN gibi değerler girilebiliyor. Bu satırlar için alternatifler mevcut bunlardan bir tanesi bu satırları işleme katmayabilirsiniz veya bu satırı diğer satırlara göre düzenleyebilirsiniz. Ben düzenleme işinden bahsedeceğim.

Dediğim gibi NaN veya ? olabiliyor ben buradaki veri setinde ? gördüm ve bu yüzden bu veri setini seçtim. Bu verisetini indirdikten sonra ?’lerini NaN’a çevirdim çünkü ? sorun yaşattı bana floata çevirirken python. Bu çevirme için notepad++ veya emeditor gibi programlar kullanabilirsiniz basitçe çevirecektir veya kod yazarak da çevirebilirsiniz.

Şimdi indirdiğimiz dosyanın .data uzantılı olması sebebi ile read_csv ile okuyamacağımız için farklı bir method seçmeliyiz ben bu methodu read_table olarak seçtim. İnternette karşıma genellikle bu geldiği için bunu kullanma kararı aldım. Şimdi data okuma kısmına gelelim.

import numpy as np
import pandas as pd

veriseti = pd.read_table('horse/horse-colic.data', sep=' ')

Klasik olarak kütüphanelerimi import ettim ve pandas yardımı ile okudum.  Sep ile parçalama operatörümü belirttim.

from sklearn.preprocessing import Imputer

Bu şekilde bir import işlemi gerçekleştirdim. Burayı açıklayacak olursak python kütüphaneleri arasında sklearn klasörü içinde preprosessing içerisindeki Imputer kütüphanesini import ettim.

imputer=Imputer(missing_values='NaN', strategy='mean', axis=0)

Bu satırda imputer isimli bir tanımlama yaptım ve kayıp değerler için yazan değeri kütüphaneye verdim.
Strateji olarak mean yani ortalama al dedim. Bunun dışında “median” ile medyanını veya “most_frequent” ile en çok kullanılan değeri almasını sağlayabilirdim, bu seçim size bağlı. Burada belki karşınıza hiç gelmemiş olan muhtemelen medyan olacaktır. Bunu internetten araştırarak çok kolay şekilde bulabilirsiniz matematiksel formül ile hesaplanmakta ortalama gibi.

Burada birde axis isimli bir parametre mevcut axis işlem yapılacak olan tipi belirtir yani satır mı sütun mu gibi. 0 sütun 1 satırı belirtir.

sonuc=veriseti.iloc[:,2:5].values

Veri setini bir not defteri yardımı ile açarsanız çok fazla kolon olduğunu göreceksiniz. Ben bu kadar kolonda işlem yapmamak için veri setimin belli bir kısmını aldım. Pandas ile seçim yapmak için(sütunları) iloc kullandım ve bunun values al dedim(values olmasaydı ilk kolonu id kabul edip onuda getirecekti).

imputer=imputer.fit(sonuc)
sonuc=imputer.transform(sonuc)

imputer’i daha önce tanımladığım imputer ile sonuc tablosu ile işlem yapacağını belirttim. Transform yardımı ile kayıp değerleri yok edip işlemi tamamlanmasını ve çıkan sonucun tekrar sonuc değişkenine yazılmasını sağladım.

Bu şekilde basitçe olmayadan değerlerimi ortalamalarını alarak değiştirmeyi sağladım.

En son durumda kodun son hali aşağıdaki gibidir.

import numpy as np
import pandas as pd
veriseti = pd.read_table('horse/horse-colic.data', sep=' ',quotechar="\'")

#print veriseti #python 3.0 print(veriseti)

from sklearn.preprocessing import Imputer
imputer=Imputer(missing_values='NaN', strategy='mean', axis=0)
sonuc=veriseti.iloc[:,2:5].values
imputer=imputer.fit(sonuc)
sonuc=imputer.transform(sonuc)
print sonuc

Aşağıdaki resimde solda işlenmiş halini sağda ise ham halini görebilirsiniz.

 

Tarih:Makine Öğrenmesi

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir