PySpark Makina Öğrenmesi (PySpark ML Classification Decision Tree)

PySpark Makina Öğrenmesi (PySpark ML Classification)

Merhaba PySpark yazılarına devam ediyoruz.  Bu yazıda classification algoritmalarından Decision Tree (Karar ağacı) ile örnek yapacağız.  Bu yazıya geçmeden önce bir önceki yazıyı okumalısınız.

https://ittutorial.org/pyspark-makina-ogrenmesi-pyspark-ml-classification/

Decision Tree

Algoritmanın teorik bilgisine girmeden örnek üzerinden ilerleyeceğim.  İlk olarak veri setini train ve test olarak parçalamamız gerekiyor.

flights_train, flights_test = flights_assembled.randomSplit([0.8, 0.2], seed=17)

# Check that training set has around 80% of records
training_ratio = flights_train.count() / flights_assembled.count()
print(training_ratio)

Veriyi böldükten sonra model kurma aşamasına geçelim. Gerekli kütüphaneyi import edelim ve Decision Tree için model oluşturalım.

from pyspark.ml.classification import DecisionTreeClassifier

# Create a classifier object and fit to the training data

tree = DecisionTreeClassifier()

tree_model = tree.fit(flights_train)

# Create predictions for the testing data and take a look at the predictions

prediction = tree_model.transform(flights_test)

prediction.select('label', 'prediction', 'probability').show(5, False)
Test verileri için tahminlerimiz ve tahmin sonuçlarımız.

Evaluate the Decision Tree

Modelinizin kalitesini test verileri üzerinde ne kadar iyi performans gösterdiğini değerlendirerek değerlendirebilirsiniz. Model bu veriler üzerinde eğitilmediğinden, bu modelin objektif bir değerlendirmesini temsil eder.

confusion matrix ‘i ve accuracy sonuçlarını değerlendirelim.

# Create a confusion matrix

prediction.groupBy('label', 'prediction').count().show()

# Calculate the elements of the confusion matrix

TN = prediction.filter('prediction = 0 AND label = prediction').count()

TP = prediction.filter('prediction = 1 AND label = prediction').count()

FN = prediction.filter('prediction = 0 AND label != prediction').count()

FP = prediction.filter('prediction = 1 AND label != prediction').count()

# Accuracy measures the proportion of correct predictions

accuracy = (TN + TP) / (TN + TP + FN + FP)

print(accuracy)
confusion matrix ve accuracy değerlerini yazdırmış olduk. Confusion matrix’i yorumlayacak olursak aslında bize söylemek istediği şey;
  • Gerçekte 1 olup bizim 0 dediğimiz (FalseNegative)
  • Gerçekte 0 olup bizim 0 dediğimiz (True Negative)
  • Gerçekte 1 olup bizim 1 dediğimiz (True Positive)
  • Gerçekte 0 olup bizim 1 dediğimiz (False Positive)

Bir sonraki yazı da Logistic regresyon ile benzer bir çalışma yapacağız.

Görüşmek üzere.

About Deniz Parlak

Hi, i’m Security Data Scientist & Data Engineer at My Security Analytics. I have experienced Advance Python, Machine Learning and Big Data tools. Also i worked Oracle Database Administration, Migration and upgrade projects. For your questions [email protected]

Leave a Reply

Your email address will not be published. Required fields are marked *