{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.12.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"nvidiaTeslaT4","dataSources":[{"sourceType":"competition","sourceId":3649,"databundleVersionId":46718},{"sourceType":"modelInstanceVersion","sourceId":823996,"databundleVersionId":16540807,"modelInstanceId":626345,"modelId":638249},{"sourceType":"modelInstanceVersion","sourceId":823998,"databundleVersionId":16540814,"modelInstanceId":626347,"modelId":638251},{"sourceType":"modelInstanceVersion","sourceId":823992,"databundleVersionId":16540764,"modelInstanceId":626342,"modelId":638246},{"sourceType":"modelInstanceVersion","sourceId":823997,"databundleVersionId":16540810,"modelInstanceId":626346,"modelId":638250}],"dockerImageVersionId":31329,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"!pip install py7zr \n\nimport os\nimport py7zr\nimport shutil\n\ninput_path  = '/kaggle/input/competitions/cifar-10/'\nworking_path = '/kaggle/working/'\n\nif not os.path.exists(input_path):\n    print(f\"⚠️ HATA: {input_path} yolu bulunamadı!\")\nelse:\n    for file in ['train.7z', 'test.7z']:\n        full_path = os.path.join(input_path, file)\n        if os.path.exists(full_path):\n            if not os.path.exists(os.path.join(working_path, file.replace('.7z', ''))):\n                print(f\"📦 {file} açılıyor...\")\n                with py7zr.SevenZipFile(full_path, mode='r') as z:\n                    z.extractall(path=working_path)\n                print(f\"✔️ {file} hazır.\")\n            else:\n                print(f\"ℹ️ {file} zaten dışarıda, atlanıyor.\")\n        else:\n            print(f\"❌ Dosya bulunamadı: {full_path}\")\n\n    csv_src = os.path.join(input_path, 'trainLabels.csv')\n    if os.path.exists(csv_src):\n        shutil.copy(csv_src, working_path)\n        print(\"✅ trainLabels.csv kopyalandı.\")\n    else:\n        print(f\"❌ trainLabels.csv bulunamadı: {csv_src}\")\n    print(\"\\n🚀 Veri hazırlığı tamamlandı!\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-05-07T17:11:47.014938Z","iopub.execute_input":"2026-05-07T17:11:47.015667Z","iopub.status.idle":"2026-05-07T17:14:41.419220Z","shell.execute_reply.started":"2026-05-07T17:11:47.015633Z","shell.execute_reply":"2026-05-07T17:14:41.418330Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"!pip install  scikit-learn numpy mrmr_selection skrebate","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-05-07T17:14:41.420754Z","iopub.execute_input":"2026-05-07T17:14:41.420987Z","iopub.status.idle":"2026-05-07T17:14:47.503266Z","shell.execute_reply.started":"2026-05-07T17:14:41.420963Z","shell.execute_reply":"2026-05-07T17:14:47.502051Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nimport time\nimport os\nimport warnings\nwarnings.filterwarnings(\"ignore\")\n\n# --- GPU (CuML & CuPy) KÜTÜPHANELERİ ---\nimport cupy as cp\nfrom cuml.model_selection import train_test_split as cu_split\nfrom cuml.preprocessing import StandardScaler as cu_Scaler\nfrom cuml.metrics import accuracy_score as cu_accuracy\n\n# GPU Destekli Sınıflandırıcılar\nfrom cuml.svm import SVC as cu_SVC\nfrom cuml.ensemble import RandomForestClassifier as cu_RFC\nfrom cuml.linear_model import LogisticRegression as cu_LogReg\nfrom cuml.neighbors import KNeighborsClassifier as cu_KNN\n\n# --- CPU KÜTÜPHANELERİ (CuML'de olmayanlar için) ---\nfrom sklearn.tree import DecisionTreeClassifier\nfrom sklearn.metrics import accuracy_score as sk_accuracy\n\n# ================= AYARLAR =================\nmodel_paths = {\n    \"DenseNet-121\":   \"/kaggle/input/models/fatihsar/densenet/pytorch/default/1/cifar10_densenet_features_A100.npz\",\n    \"EfficientNet-B0\":\"/kaggle/input/models/fatihsar/efficentnet/pytorch/default/1/cifar10_effnet_features_A100.npz\",\n    \"GoogLeNet\":      \"/kaggle/input/models/fatihsar/googlenet/pytorch/default/1/cifar10_googlenet_features_A100.npz\",\n    \"ResNeXt-50\":     \"/kaggle/input/models/fatihsar/resnetxt/pytorch/default/1/cifar10_resnext_features_A100.npz\"\n}\n\n# 5 Farklı Sınıflandırıcı (Decision Tree hariç hepsi GPU kullanır)\nclassifiers = {\n    \"SVM\": cu_SVC(kernel='linear', C=1.0),\n    \"RandForest\": cu_RFC(n_estimators=50, random_state=42),\n    \"LogReg\": cu_LogReg(max_iter=500),\n    \"KNN\": cu_KNN(n_neighbors=5),\n    \"DecisionTree\": DecisionTreeClassifier(random_state=42) # CuML'de DT yok, CPU'da çalışır\n}\n\nresults_log = []\n\nprint(\"🚀 4 CNN x 5 ML Algoritması = Toplam 20 Test Başlıyor...\\n\" + \"=\"*60)\n\nfor model_name, path in model_paths.items():\n    if not os.path.exists(path):\n        print(f\"❌ Dosya bulunamadı, atlanıyor: {model_name}\")\n        continue\n\n    print(f\"📦 İşleniyor: {model_name}\")\n    \n    # Veriyi Doğrudan GPU'ya Yükle\n    data = np.load(path)\n    X_gpu = cp.array(data['x'])\n    y_gpu = cp.array(data['y'])\n    \n    # Train/Test Ayrımı (%20 Test)\n    X_train, X_test, y_train, y_test = cu_split(X_gpu, y_gpu, test_size=0.2, random_state=42)\n    \n    # Veri Ölçeklendirme (SVM, KNN, LogReg için kritik)\n    scaler = cu_Scaler()\n    X_train_scaled = scaler.fit_transform(X_train)\n    X_test_scaled  = scaler.transform(X_test)\n\n    # 5 ML Algoritması ile Eğitim ve Test\n    for clf_name, clf in classifiers.items():\n        start_train = time.time()\n        \n        # CPU'da çalışması gereken Decision Tree için veriyi Numpy'a çeviriyoruz\n        if clf_name == \"DecisionTree\":\n            clf.fit(cp.asnumpy(X_train_scaled), cp.asnumpy(y_train))\n            train_time = time.time() - start_train\n            acc = sk_accuracy(cp.asnumpy(y_test), clf.predict(cp.asnumpy(X_test_scaled)))\n        \n        # Diğer 4 algoritma tamamen GPU'da çok hızlı çalışır\n        else:\n            clf.fit(X_train_scaled, y_train)\n            train_time = time.time() - start_train\n            acc = cu_accuracy(y_test, clf.predict(X_test_scaled))\n        \n        # Sonuçları Kaydet\n        results_log.append({\n            \"CNN_Model\": model_name,\n            \"Classifier\": clf_name,\n            \"Train_Time_sn\": round(train_time, 3),\n            \"Accuracy_%\": round(float(acc) * 100, 2)\n        })\n\n# ================= FİNAL TABLO (Tam 20 Sonuç) =================\ndf_results = pd.DataFrame(results_log)\nprint(\"\\n\" + \"🏆\"*3 + \" 20 SONUÇLUK FİNAL KARŞILAŞTIRMA TABLOSU \" + \"🏆\"*3)\n\n# Tabloyu kolay okunur (4 satır, 5 sütun) hale getirelim\npivot_df = df_results.pivot_table(\n    index='CNN_Model', \n    columns='Classifier', \n    values=['Accuracy_%', 'Train_Time_sn'],\n    aggfunc='first'\n)\n\n# Ekrana Düzgün Basma Ayarları\npd.set_option('display.max_columns', None)\npd.set_option('display.width', 1000)\nprint(pivot_df)\n\n# CSV Olarak Kaydetme\ndf_results.to_csv(\"cifar10_20_sonuc_karsilastirma.csv\", index=False)\nprint(\"\\n✅ Sonuçlar 'cifar10_20_sonuc_karsilastirma.csv' olarak başarıyla kaydedildi!\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-05-07T17:14:47.504944Z","iopub.execute_input":"2026-05-07T17:14:47.505466Z","iopub.status.idle":"2026-05-07T17:18:20.716306Z","shell.execute_reply.started":"2026-05-07T17:14:47.505432Z","shell.execute_reply":"2026-05-07T17:18:20.715311Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nimport time\nimport os\nimport warnings\nwarnings.filterwarnings(\"ignore\")\n\n# --- GPU (CuML & CuPy) KÜTÜPHANELERİ ---\nimport cupy as cp\nfrom cuml.model_selection import train_test_split as cu_split\nfrom cuml.preprocessing import StandardScaler as cu_Scaler\nfrom cuml.decomposition import PCA as cu_PCA\nfrom cuml.metrics import accuracy_score as cu_accuracy\nfrom cuml.svm import SVC as cu_SVC\nfrom cuml.ensemble import RandomForestClassifier as cu_RFC\nfrom cuml.linear_model import LogisticRegression as cu_LogReg\nfrom cuml.neighbors import KNeighborsClassifier as cu_KNN\n\n# --- CPU KÜTÜPHANELERİ ---\nfrom sklearn.tree import DecisionTreeClassifier\nfrom sklearn.metrics import accuracy_score as sk_accuracy\nfrom mrmr import mrmr_classif\nfrom skrebate import ReliefF\n\n# ================= AYARLAR & HİPERPARAMETRELER =================\nNUM_FEATURES = 200    \nSUBSET_SIZE = 2000    \nRELIEF_SUBSET = 500   \nRELIEF_NEIGHBORS = 5  \n\nmodel_paths = {\n    \"DenseNet-121\":   \"/kaggle/input/models/fatihsar/densenet/pytorch/default/1/cifar10_densenet_features_A100.npz\",\n    \"EfficientNet-B0\":\"/kaggle/input/models/fatihsar/efficentnet/pytorch/default/1/cifar10_effnet_features_A100.npz\",\n    \"GoogLeNet\":      \"/kaggle/input/models/fatihsar/googlenet/pytorch/default/1/cifar10_googlenet_features_A100.npz\",\n    \"ResNeXt-50\":     \"/kaggle/input/models/fatihsar/resnetxt/pytorch/default/1/cifar10_resnext_features_A100.npz\"\n}\n\nclassifiers = {\n    \"SVM (GPU)\": cu_SVC(kernel='linear', C=1.0),\n    \"RandForest (GPU)\": cu_RFC(n_estimators=50, random_state=42),\n    \"LogReg (GPU)\": cu_LogReg(max_iter=500),\n    \"KNN (GPU)\": cu_KNN(n_neighbors=5),\n    \"DecisionTree (CPU)\": DecisionTreeClassifier(random_state=42)\n}\n\n# --- KENDİ YAZDIĞIMIZ GPU TABANLI GENETİK ALGORİTMA ---\ndef custom_gpu_genetic_selection(X, y, target_dim, pop_size=5, generations=2):\n    total_dim = X.shape[1]\n    # Başlangıç popülasyonu: Rastgele özellik indeksleri\n    population = [np.random.choice(total_dim, target_dim, replace=False) for _ in range(pop_size)]\n    \n    best_features = None\n    best_score = 0.0\n    ga_clf = cu_LogReg(max_iter=100) # GPU üzerinde ışık hızında değerlendirme\n    \n    for gen in range(generations):\n        for ind in population:\n            X_sub = X[:, ind]\n            ga_clf.fit(X_sub, y)\n            score = cu_accuracy(y, ga_clf.predict(X_sub))\n            \n            if score > best_score:\n                best_score = score\n                best_features = ind.copy()\n                \n        # Basit Mutasyon (Elitizm: En iyiyi sakla, diğerlerini en iyiden türet)\n        new_pop = [best_features]\n        for _ in range(pop_size - 1):\n            mutated = best_features.copy()\n            num_mutations = max(1, int(target_dim * 0.1)) # %10 mutasyon oranı\n            drop_idx = np.random.choice(target_dim, num_mutations, replace=False)\n            new_idx = np.random.choice(total_dim, num_mutations, replace=False)\n            mutated[drop_idx] = new_idx\n            new_pop.append(mutated)\n        population = new_pop\n        \n    return best_features\n\nresults_log = []\n\nfor model_name, path in model_paths.items():\n    print(f\"\\n{'='*80}\\n🚀 İŞLENEN DERİN ÖĞRENME MODELİ: {model_name}\\n{'='*80}\")\n    \n    if not os.path.exists(path):\n        print(f\"❌ Dosya bulunamadı: {path}\")\n        continue\n\n    # Veriyi GPU'ya Yükleme ve Hazırlık\n    data = np.load(path)\n    X_gpu, y_gpu = cp.array(data['x']), cp.array(data['y'])\n    X_train, X_test, y_train, y_test = cu_split(X_gpu, y_gpu, test_size=0.2, random_state=42)\n    \n    scaler = cu_Scaler()\n    X_train_scaled = scaler.fit_transform(X_train)\n    X_test_scaled  = scaler.transform(X_test)\n\n    X_train_cpu = cp.asnumpy(X_train_scaled[:SUBSET_SIZE])\n    y_train_cpu = cp.asnumpy(y_train[:SUBSET_SIZE])\n\n    feature_sets = {}\n\n    print(\"[1] Özellik Seçimi/Çıkarımı Başlıyor...\")\n    \n    feature_sets['1_Raw'] = (X_train_scaled, X_test_scaled, 0.0)\n\n    print(\"    📐 PCA hesaplanıyor (GPU)...\")\n    start_t = time.time()\n    pca = cu_PCA(n_components=NUM_FEATURES)\n    feature_sets['2_PCA'] = (pca.fit_transform(X_train_scaled), pca.transform(X_test_scaled), time.time() - start_t)\n\n    print(\"    📊 mRMR hesaplanıyor (CPU->GPU)...\")\n    start_t = time.time()\n    mrmr_idx = mrmr_classif(X=pd.DataFrame(X_train_cpu), y=pd.Series(y_train_cpu), K=NUM_FEATURES)\n    feature_sets['3_mRMR'] = (X_train_scaled[:, mrmr_idx], X_test_scaled[:, mrmr_idx], time.time() - start_t)\n\n    print(\"    🔥 ReliefF hesaplanıyor (CPU Optimize)...\")\n    start_t = time.time()\n    relief = ReliefF(n_features_to_select=NUM_FEATURES, n_neighbors=RELIEF_NEIGHBORS)\n    X_relief_sample = cp.asnumpy(X_train_scaled[:RELIEF_SUBSET])\n    y_relief_sample = cp.asnumpy(y_train[:RELIEF_SUBSET])\n    relief.fit(X_relief_sample, y_relief_sample)\n    relief_idx = relief.top_features_[:NUM_FEATURES]\n    feature_sets['4_ReliefF'] = (X_train_scaled[:, relief_idx], X_test_scaled[:, relief_idx], time.time() - start_t)\n\n    print(\"    🧬 Özel Genetik Algoritma hesaplanıyor (Tamamen GPU)...\")\n    start_t = time.time()\n    # Kendi yazdığımız GPU GA fonksiyonunu çağırıyoruz\n    ga_idx = custom_gpu_genetic_selection(X_train_scaled, y_train, NUM_FEATURES, pop_size=5, generations=2)\n    feature_sets['5_Genetic'] = (X_train_scaled[:, ga_idx], X_test_scaled[:, ga_idx], time.time() - start_t)\n\n    print(f\"\\n[2] Sınıflandırma ve Test Başlıyor...\")\n    \n    for fs_name, (X_tr, X_te, fs_time) in sorted(feature_sets.items()):\n        clean_fs_name = fs_name.split(\"_\")[1]\n        \n        for clf_name, clf in classifiers.items():\n            start_train = time.time()\n            \n            if \"CPU\" in clf_name:\n                clf.fit(cp.asnumpy(X_tr), cp.asnumpy(y_train))\n                train_time = time.time() - start_train\n                acc = sk_accuracy(cp.asnumpy(y_test), clf.predict(cp.asnumpy(X_te)))\n            else:\n                clf.fit(X_tr, y_train)\n                train_time = time.time() - start_train\n                acc = cu_accuracy(y_test, clf.predict(X_te))\n            \n            results_log.append({\n                \"CNN_Model\": model_name,\n                \"Feature_Method\": clean_fs_name,\n                \"Classifier\": clf_name.split(\" \")[0],\n                \"FS_Time (sn)\": round(fs_time, 2),\n                \"Train_Time (sn)\": round(train_time, 3),\n                \"Accuracy (%)\": round(float(acc) * 100, 2)\n            })\n\n# ================= FİNAL TABLO =================\ndf_results = pd.DataFrame(results_log)\nprint(\"\\n\" + \"🏆\"*5 + \" SÜRE VE ACCURACY KARŞILAŞTIRMA TABLOSU (GPU DESTEKLİ) \" + \"🏆\"*5)\n\npivot_df = df_results.pivot_table(\n    index=['CNN_Model', 'Classifier'], \n    columns=['Feature_Method'], \n    values=['Accuracy (%)', 'FS_Time (sn)', 'Train_Time (sn)'],\n    aggfunc='first'\n)\n\npivot_df = pivot_df.swaplevel(0, 1, axis=1).sort_index(axis=1)\npd.set_option('display.max_rows', None)\npd.set_option('display.max_columns', None)\npd.set_option('display.width', 1500)\nprint(pivot_df)\n\ndf_results.to_csv(\"cifar10_100lu_kapsamli_karsilastirma.csv\", index=False)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-05-07T17:19:05.865213Z","iopub.execute_input":"2026-05-07T17:19:05.865862Z","iopub.status.idle":"2026-05-07T17:37:56.095339Z","shell.execute_reply.started":"2026-05-07T17:19:05.865829Z","shell.execute_reply":"2026-05-07T17:37:56.094177Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]}