# DDOS saldırılarını tespit etmek için yapay sinir ağı kullanan bir Python kodu
# Gerekli kütüphaneleri içe aktar
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.preprocessing import LabelEncoder, StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix, accuracy_score, classification_report
from keras.models import Sequential
from keras.layers import Dense, Dropout
# Veri setini oku
data = pd.read_csv("DDoS.csv")
# Veri setinin ilk beş satırını göster
data.head()
# Veri setinin boyutunu göster
data.shape
# Veri setindeki eksik değerleri kontrol et
data.isnull().sum()
# Veri setindeki sınıf dağılımını göster
data["Class"].value_counts()
# Sınıf değişkenini sayısal hale getir
le = LabelEncoder()
data["Class"] = le.fit_transform(data["Class"])
# Girdi ve çıktı değişkenlerini ayır
X = data.drop("Class", axis=1)
y = data["Class"]
# Girdi değişkenlerini ölçeklendir
sc = StandardScaler()
X = sc.fit_transform(X)
# Eğitim ve test verilerini ayır
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Yapay sinir ağı modelini oluştur
model = Sequential()
model.add(Dense(32, input_dim=X.shape[1], activation="relu"))
model.add(Dropout(0.2))
model.add(Dense(16, activation="relu"))
model.add(Dropout(0.2))
model.add(Dense(8, activation="relu"))
model.add(Dropout(0.2))
model.add(Dense(1, activation="sigmoid"))
# Modeli derle
model.compile(loss="binary_crossentropy", optimizer="adam", metrics=["accuracy"])
# Modeli eğit
history = model.fit(X_train, y_train, epochs=10, batch_size=32, validation_split=0.2)
# Modelin eğitim ve doğrulama doğruluğunu görselleştir
plt.plot(history.history["accuracy"], label="train")
plt.plot(history.history["val_accuracy"], label="validation")
plt.title("Model Accuracy")
plt.xlabel("Epoch")
plt.ylabel("Accuracy")
plt.legend()
plt.show()
# Modelin eğitim ve doğrulama kaybını görselleştir
plt.plot(history.history["loss"], label="train")
plt.plot(history.history["val_loss"], label="validation")
plt.title("Model Loss")
plt.xlabel("Epoch")
plt.ylabel("Loss")
plt.legend()
plt.show()
# Test verisi üzerinde modeli değerlendir
y_pred = model.predict_classes(X_test)
cm = confusion_matrix(y_test, y_pred)
sns.heatmap(cm, annot=True, fmt="d")
plt.title("Confusion Matrix")
plt.xlabel("Predicted")
plt.ylabel("Actual")
plt.show()
# Modelin performans metriklerini göster
print("Accuracy:", accuracy_score(y_test, y_pred))
print("Classification Report:\n", classification_report(y_test, y_pred))
Bu kod, yapay zeka kullanarak DDOS saldırılarını tespit etmek için yazılmış bir Python kodudur. Kodun yaptığı işlemleri şöyle açıklayabilirim:
- Öncelikle, gerekli kütüphaneleri içe aktarır. Bu kütüphaneler, veri işleme, görselleştirme, ölçeklendirme, model oluşturma ve değerlendirme için kullanılır.
- Sonra, veri setini okur. Veri seti, DDOS.csv adlı bir dosyadır ve normal ve anormal ağ trafiğini içerir.
- Veri setinin ilk beş satırını ve boyutunu gösterir. Veri setinde eksik değer olup olmadığını kontrol eder. Veri setindeki sınıf değişkeninin dağılımını gösterir. Sınıf değişkeni, normal veya anormal trafiği belirtir.
- Sınıf değişkenini sayısal hale getirir. Bu, modelin sınıfı tanımasını kolaylaştırır.
- Girdi ve çıktı değişkenlerini ayırır. Girdi değişkenleri, ağ trafiğinin özellikleridir. Çıktı değişkeni, sınıf değişkenidir.
- Girdi değişkenlerini ölçeklendirir. Bu, modelin daha iyi öğrenmesini sağlar.
- Eğitim ve test verilerini ayırır. Eğitim verileri, modeli eğitmek için kullanılır. Test verileri, modelin performansını ölçmek için kullanılır.
- Yapay sinir ağı modelini oluşturur. Model, giriş, çıkış ve ara katmanlardan oluşur. Her katman, belirli sayıda nöron ve aktivasyon fonksiyonu içerir. Model, ikili sınıflandırma yapmak için sigmoid aktivasyon fonksiyonu ve ikili çapraz entropi kaybı kullanır.
- Modeli derler. Model, optimizasyon algoritması ve metrikleri belirler.
- Modeli eğitir. Model, eğitim verilerini belirli sayıda dönem ve grup boyutu ile kullanır. Model, her dönemde eğitim ve doğrulama doğruluğu ve kaybını hesaplar.
- Modelin eğitim ve doğrulama doğruluğunu ve kaybını görselleştirir. Bu, modelin nasıl öğrendiğini ve aşırı uyum olup olmadığını gösterir.
- Test verisi üzerinde modeli değerlendirir. Model, test verilerini kullanarak tahminler yapar. Tahminler, gerçek değerlerle karşılaştırılır. Karmaşıklık matrisi, modelin doğru ve yanlış tahminlerini gösterir. Doğruluk, hassasiyet, geri çağırma ve F1 skoru gibi performans metrikleri hesaplanır.
# Gerekli kütüphaneleri içe aktar
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.preprocessing import LabelEncoder, StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix, accuracy_score, classification_report
from keras.models import Sequential
from keras.layers import Dense, Dropout
# Veri setini oku
data = pd.read_csv("DDoS.csv")
# Veri setinin ilk beş satırını göster
data.head()
# Veri setinin boyutunu göster
data.shape
# Veri setindeki eksik değerleri kontrol et
data.isnull().sum()
# Veri setindeki sınıf dağılımını göster
data["Class"].value_counts()
# Sınıf değişkenini sayısal hale getir
le = LabelEncoder()
data["Class"] = le.fit_transform(data["Class"])
# Girdi ve çıktı değişkenlerini ayır
X = data.drop("Class", axis=1)
y = data["Class"]
# Girdi değişkenlerini ölçeklendir
sc = StandardScaler()
X = sc.fit_transform(X)
# Eğitim ve test verilerini ayır
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Yapay sinir ağı modelini oluştur
model = Sequential()
model.add(Dense(32, input_dim=X.shape[1], activation="relu"))
model.add(Dropout(0.2))
model.add(Dense(16, activation="relu"))
model.add(Dropout(0.2))
model.add(Dense(8, activation="relu"))
model.add(Dropout(0.2))
model.add(Dense(1, activation="sigmoid"))
# Modeli derle
model.compile(loss="binary_crossentropy", optimizer="adam", metrics=["accuracy"])
# Modeli eğit
history = model.fit(X_train, y_train, epochs=10, batch_size=32, validation_split=0.2)
# Modelin eğitim ve doğrulama doğruluğunu görselleştir
plt.plot(history.history["accuracy"], label="train")
plt.plot(history.history["val_accuracy"], label="validation")
plt.title("Model Accuracy")
plt.xlabel("Epoch")
plt.ylabel("Accuracy")
plt.legend()
plt.show()
# Modelin eğitim ve doğrulama kaybını görselleştir
plt.plot(history.history["loss"], label="train")
plt.plot(history.history["val_loss"], label="validation")
plt.title("Model Loss")
plt.xlabel("Epoch")
plt.ylabel("Loss")
plt.legend()
plt.show()
# Test verisi üzerinde modeli değerlendir
y_pred = model.predict_classes(X_test)
cm = confusion_matrix(y_test, y_pred)
sns.heatmap(cm, annot=True, fmt="d")
plt.title("Confusion Matrix")
plt.xlabel("Predicted")
plt.ylabel("Actual")
plt.show()
# Modelin performans metriklerini göster
print("Accuracy:", accuracy_score(y_test, y_pred))
print("Classification Report:\n", classification_report(y_test, y_pred))
Bu kod, yapay zeka kullanarak DDOS saldırılarını tespit etmek için yazılmış bir Python kodudur. Kodun yaptığı işlemleri şöyle açıklayabilirim:
- Öncelikle, gerekli kütüphaneleri içe aktarır. Bu kütüphaneler, veri işleme, görselleştirme, ölçeklendirme, model oluşturma ve değerlendirme için kullanılır.
- Sonra, veri setini okur. Veri seti, DDOS.csv adlı bir dosyadır ve normal ve anormal ağ trafiğini içerir.
- Veri setinin ilk beş satırını ve boyutunu gösterir. Veri setinde eksik değer olup olmadığını kontrol eder. Veri setindeki sınıf değişkeninin dağılımını gösterir. Sınıf değişkeni, normal veya anormal trafiği belirtir.
- Sınıf değişkenini sayısal hale getirir. Bu, modelin sınıfı tanımasını kolaylaştırır.
- Girdi ve çıktı değişkenlerini ayırır. Girdi değişkenleri, ağ trafiğinin özellikleridir. Çıktı değişkeni, sınıf değişkenidir.
- Girdi değişkenlerini ölçeklendirir. Bu, modelin daha iyi öğrenmesini sağlar.
- Eğitim ve test verilerini ayırır. Eğitim verileri, modeli eğitmek için kullanılır. Test verileri, modelin performansını ölçmek için kullanılır.
- Yapay sinir ağı modelini oluşturur. Model, giriş, çıkış ve ara katmanlardan oluşur. Her katman, belirli sayıda nöron ve aktivasyon fonksiyonu içerir. Model, ikili sınıflandırma yapmak için sigmoid aktivasyon fonksiyonu ve ikili çapraz entropi kaybı kullanır.
- Modeli derler. Model, optimizasyon algoritması ve metrikleri belirler.
- Modeli eğitir. Model, eğitim verilerini belirli sayıda dönem ve grup boyutu ile kullanır. Model, her dönemde eğitim ve doğrulama doğruluğu ve kaybını hesaplar.
- Modelin eğitim ve doğrulama doğruluğunu ve kaybını görselleştirir. Bu, modelin nasıl öğrendiğini ve aşırı uyum olup olmadığını gösterir.
- Test verisi üzerinde modeli değerlendirir. Model, test verilerini kullanarak tahminler yapar. Tahminler, gerçek değerlerle karşılaştırılır. Karmaşıklık matrisi, modelin doğru ve yanlış tahminlerini gösterir. Doğruluk, hassasiyet, geri çağırma ve F1 skoru gibi performans metrikleri hesaplanır.


