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