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.