Merhaba! Bugün sizler ile Veri Analizi ile ilgili yaptığım projelerimi anlatacağım. Toplamda 4 proje yaptım ve sizlere bu gönderide bir tanesini anlatacağım!
Veriseti Kaggle Adresi: https://www.kaggle.com/datasets/iabhishekofficial/mobile-price-classification
Ayrıntılı Jupiter Notebook için GitHub adresi : https://github.com/denizzhansahin/data-analysis/blob/main/lessons-project/train.ipynb
Veri Seti Özellikleri
Veri seti, 21 sütun ve 2000 satır bilgiye sahiptir. Veri seti herhangi bir boş veri bilgisine sahip değildir. Böylece boş veri alanları yerine herhangi bir veri eklemesi veya boş veri alanlarına sahip satırların silinmesine gerek kalmamıştır.
battery_power : Cihaz ile ilgili batarya gücünü belirtir.
blue : Cihaz ile ilgili bluetooth bilgisi verilir. 0 yok, 1 var anlamındadır.
clock_speed: Cihaz ile ilgili işlemci saat hızıdır. Ghz cinsinden girişi olmaktadır.
dual_sim: Cihaz, çift sim bilgisini bildirmektedir. 0 yok, 1 var anlamındadır.
fc: Cihaz ile ilgili ön kamera megapixel değerini bildirmektedir. Sayısal olarak değerler
bildirilmektedir.
int_memory: Cihaz ile ilgili depolama alanı GB cinsinden verilmiştir.
m_dep: Cihaz ile ilgili kamera sensörü derinlik bilgisi cm cinsi olarak bildirilmiştir.
four_g: Cihaz ile ilgili 4G bilgisi verilmiştir. 0 yok, 1 var anlamı olmaktadır.
mobil_wt: Cihaz ile ilgili gram cinsinden ağırlık verilmiştir.
n_cores: Cihaz üzerinde yer alan işlemcinin çekirdek sayısı bilgisini vermektedir.
pc: Cihaz üzerindeki ana kameranın megapixel değeri bildirilmiştir.
px_height: Cihaz kamerası tarafından çekilen görüntü yüksekliğini belirtmektedir.
px_width: Cihaz kamerası tarafından çekilen görüntünün genişliğini belirtmektedir.
ram: Cihaz ile ilgili RAM bilgisi bildirilmektedir.
scc_h: Ekran için cm cinsinden yükseklik belirtilmektedir.
sc_w: Ekran için cm cinsinden genişlik belirtilmektedir.
talk_time: Cihaz ile ilgili olarak kullanılma süresi belirtilmektedir.
three_g: Cihaz ile ilgili 3G bilgisi belirtilir. 0 yok, 1 var anlamına gelmektedir.
touch_screen: Cihaz üzerindeki dokunmatik ekran bilgisini verir. 0 yok, 1 var demektir.
wifi: Cihaz ile ilgili WiFi bilgisidir. 0 yok, 1 var anlamına gelmektedir.
price_range: 1,2,3,0 olmak üzere kategori bilgisini verir.
Veri seti, üzerindeki 1010 cihaz Bluetooth desteğine sahptir ve 990 cihaz bu özelliğe
sahip değildir. Veri setinde yer alan cihazlar için en düşük clock speed(0.5) için 413 cihaz vardır ve en
yüksek clock_speed(3.0) için 28 cihaz vardır.Veri seti içinde yer alan cihazların 1019 tanesi çift sim desteğine sahiptir ama 981 cihazbu desteğe sahip değildir.Veri setinde yer alan cihazlar için, ön kamera değeri düşü cihaz sayısı daha fazladır.Veri setinde yer alan cihazların 1043 tanesi 4G desteğine sahiptir ama geri kalanı budesteğe sahip değildir.Veri seti içindeki hafıza kapasitesi çeşitli boyutlar için birbirine yakın sayılarda dağılmıştır.
Veri seti, üzerindeki 1010 cihaz Bluetooth desteğine sahptir ve 990 cihaz bu özelliğe
sahip değildir.Veri setinde yer alan cihazlar için en düşük clock speed(0.5) için 413 cihaz vardır ve en
yüksek clock_speed(3.0) için 28 cihaz vardır.Veri seti içinde yer alan cihazların 1019 tanesi çift sim desteğine sahiptir ama 981 cihazbu desteğe sahip değildir.Veri setinde yer alan cihazlar için, ön kamera değeri düşü cihaz sayısı daha fazladır.Veri setinde yer alan cihazların 1043 tanesi 4G desteğine sahiptir ama geri kalanı budesteğe sahip değildir.Veri seti içindeki hafıza kapasitesi çeşitli boyutlar için birbirine yakın sayılarda dağılmıştır.
Veri setinde yer alan cihazlar için en yüksek kullanım süresi 124 cihaz ile birlikte 7 saatdeğeri olmaktadır. 93 cihaz ile birlikte ise 5 saat kullanım sayısına sahip cihazlarmevcuttur.
Veri setinde yer alan cihazların 1523 tanesi 3G desteğine sahiptir ve 477 cihaz bu desteğe sahip değildir.
Veri setinde 1006 cihaz dokunmatik ekrana sahiptir ama 994 cihaz ise dokunmatik
ekrana sahip değildir. Ayrıca 1014 cihaz WiFi desteğine sahiptir ama 986 cihaz WiFi desteğine sahip değildir. 1,2,3,0 kategorileri olmak üzere bir her bir kategori için 500 cihaz mevcuttur ve her
kategori için eşit dağılım söz konusudur.
Genel olarak batarya ortalaması 1238, işlemci saat hızı 1.5, ön kamera kapasitesi 0.5,
hafıza kapasitesi 32 GB, telefon ağırlıkları 140 gram, çekirdek sayısı 4 ve 5 arası, RAM
kapasitesi 2124 MB, kullanım süreleri ise 11 saat olmak üzere belirlenmiştir. Ayrıca
fiyat kategorisi ise 1 ve 2 arasında değişmektedir.
Veri Seti için Korelasyon
Genel olarak veri seti için korelasyon grafiğine bakıldığında sütüunların birbirleri ile olan ilişkileri çok azdır. Ana kamera kapasitesi ile ön kamera kapasitesi 0.64 ilişkilidir.
3G ve 4G ise 0.58 olarak ilişkilidir. Ayrıca kamera ile çekile fotoğrafiçin ise fotoğraf yüksekliği ve genişliği ile 0.51 ilişki vardır.
Ekran yüksekliği ile ekran genişliği ise 0.51 ilişkiye sahiptir.Ayrıca RAM ile kategorik veriler ise 0.92 ilişkiye sahiptir.
Veri Seti Görselleştirme
Veri seti Seaborn kütüphanesi kullanılarak her bir sütunun tüm sütunlar ile ilişkisi incelenmiştir.
Makine Öğrenmesi için Veri Seti Ayırma
Bu adım için ilk olarak y(istenen değer) olarak price_sütunu değerleri alınmıştır. Geri kalan özellikler ile ise x olarak alınmaktadır ve bu değerler ile birlikte ise y değerinin bulunması hedeflenmektedir. Böylece x ile y kategorik verisi tahmini yapılmaktadır. Bu yol ilse Sklearn RandomForestRegressor için kullanılmıştır. Train veri sayısı 2000 ve Test verisi ise 2000'dir.
Sklearn içinde yer alan Model Selection ile ise Train ve Test verilerinin ayrılmasını sağlamıştır. x_train, x_test, y_train ve y_test verileri test boyutu yüzde %30 olarak belirlenmiştir. Train verileri 1400, test verileri ise 600 olarak ayarlanmıştır.
Sklearn Random Forest Regressorile Tahmin
Bu adıma yer alan n_estimators ile kullanılacak ağaç sayısı belirtilmiştir ve random_state ise 0 olarak belirlenmiştir.
Veri setinde yer alan satırlardan ise belirlenen değerler ile predict(tahmin) işlemi yapılmıştır.
TensorFlow ile Tahmin
Bu adım için ilk olarak Sklearn içinde yer alan Preprocessing ile önişleme yapılmıştır. MinMaxScaler ile birlikte ise belli bir aralıkta ölçeklendirme yapılmıştır. Bunu kullanılması ise birden fazla değer vardır ve herbirinin ölçeklendirme işlemi isefit_transform ile kullanılacak ortak bir yapıya uygun olarak ölçeklenmiştir.
TensorFlow içinde yer alan Sequantial ile bir model oluşturma, Dense ve Activation ile ise katmanlar oluşturulmuştur. Üç tane katman, her katman için ReLu fonksiyonu(doğruluk oranı yüksek) ve optimizer için ise Adam(Hızlı olduğu için ve daha stabil) fonksiyonu kullanılmıştır. Kayıp fonksiyonu için ise MeanSquaredError(Tahmin edilen ve gerçek veriler arası ortalama fark) kullanılmıştır.
Model eğitimi ise 512 veri aynı anda alınarak, toplamda 250 adımda gerçekleştirilmiştir.
Ayrıca model eğitimi sırasında history özelliği ile birlikte her adımdaki validation_loss ve loss değerleri için görselleştirme işlemi yapılmıştır. Ayrıca model eğitimi ise 200. adım için gradyan düşmesi olayı olmuştur ve fazla overfitting olmaması sağlanmıştır.
Ayrıca overfitting önleme için ise gerekli TensorFlow özelliklerinin kullanılmasına gerek duyulmamıştır. Daha sonra belirlenen sütunlar ile model tahmini yapılmıştır.
Tags:
deep learning
derin öğrenme
Ders Notlarım
machine learning
makine öğrenmesi
matplotlib
numpy
pandas
tensorflow
Veri Analizi
veri_analizi
yapay zeka