Son Yazılar

Makine Öğrenmesiyle Veri Seti Üzerinden Gelir Tahmini





Python ile Makine Öğrenmesi projeleri gerçekleştireceğimiz yazılarımızın ilkinde UCI Machine Learning Repostory web sitesinden aldığımız veri seti üzerinden gelir tahmini gerçekleştiren bir projeyi kodlayacağız. Makine öğrenmesi, bilgisayarların verileri öğrenerek, analiz ederek ve kullanarak bir takım görevleri yerine getiren yapay zeka dalıdır. Makine öğrenmesi algoritmaları, doğrusal ve doğrusal olmayan modeller gibi birçok teknik kullanarak öğrenme sürecini gerçekleştirirler. 

Bu yazı içerisinde açık kaynaklı bir veri setinin yüklenmesini, verilerin sınıflandırılmasını, kategorik verilerin sayısal verilere dönüştürülmesini, verilerin eğitim-test şeklinde ayrılmasını, "Decision Tree" modelini oluşturmayı ve eğitmeyi en son olarak da bu yapının performansının değerlendirilmesini işleyeceğiz. 

Kullanacağımız veri setinde ABD'de yaşayan kişilerin çeşitli demografik ve mesleki özellikleri hakkında bilgiler bulunmaktadır. Bu veri seti üzerinde, bir kişinin yıllık gelirinin 50.000 doların altında mı yoksa üstünde mi olduğunu tahmin eden bir makine öğrenmesi modeli oluşturmayı hedeflemekteyiz.

1- İlk olarak Pandas kütüphanesini yükleyip, kullanacağımız veri setini içeri aktardık. Daha sonra da sütunların (columns) isimlerini tanımladık.

import pandas as pd
df = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data", header=None)

df.columns = ["age", "workclass", "fnlwgt", "education", "education-num", "marital-status", "occupation", "relationship", "race", "sex", "capital-gain", "capital-loss", "hours-per-week", "native-country", "income"]

2- Bu aşamada girdi özelliklerini ve hedef değişkeni programa tanıtmamız gerekmektedir. Son sütunumuz "income" yani gelir, hedef değişkenimizdir. Burada özellikleri belirtilen kişinin yıllık gelirinin 50.000 doların üstünde mi ya da eşit veya altında mı olduğu belirtilir. "income" haricinde sütunlar X, hedef değişkenimiz ise y'ye aktarıldı. Daha sonra X'in içinde yer alan bazı kategorik özellikleri sayısal verilere dönüştürmek için "get_dummies" fonksiyonunu kullandık.

X = df.drop("income", axis=1)
y = df["income"]

X = pd.get_dummies(X)

3- Bu kısımda artık kullanabileceğimiz hale getirdiğimiz verilerimizi test-train şeklinde ayırdık.

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

4- Ayırdığımız verileri, Karar Ağacı "Decision Tree" algoritmasını kullanarak eğitmiş olduk.

from sklearn.tree import DecisionTreeClassifier
clf = DecisionTreeClassifier(random_state=42)
clf.fit(X_train, y_train)

5- Son işlem olarak ise tahmin değerleri oluşturup test setindeki performansı değerlendirmeye aldık.

from sklearn.metrics import accuracy_score
y_pred = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy: {:.2f}%".format(accuracy*100))

Bunun neticesinde elde edilen doğruluk oranı da görüldüğü gibidir:

Sonuç olarak, bu projede Python ve Makine Öğrenmesi kütüphaneleri kullanarak bir veri seti üzerinde analiz ve model oluşturma işlemleri gerçekleştirildi. Projede “Karar Ağacı” algoritmasından faydalanılmıştır. Gerçekleştirilen işlemler neticesinde yaklaşık %80’in üstünde bir doğruluk oranı yakalanmıştır.

Projede kullanılan tüm kodlar:

import pandas as pd
df = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data", header=None)
df.columns = ["age", "workclass", "fnlwgt", "education", "education-num", "marital-status", "occupation", "relationship", "race", "sex", "capital-gain", "capital-loss", "hours-per-week", "native-country", "income"]

X = df.drop("income", axis=1)
y = df["income"]

X = pd.get_dummies(X)

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

from sklearn.tree import DecisionTreeClassifier
clf = DecisionTreeClassifier(random_state=42)
clf.fit(X_train, y_train)

from sklearn.metrics import accuracy_score
y_pred = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy: {:.2f}%".format(accuracy*100))

Yazıyı incelediğiniz için teşekkürler.

Sağlıcakla kalın…


Hiç yorum yok