{"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.12.12"},"kaggle":{"accelerator":"nvidiaTeslaT4","dataSources":[{"databundleVersionId":46665,"isSourceIdPinned":false,"sourceId":4117,"sourceType":"competition"},{"databundleVersionId":16530344,"datasetId":9980424,"sourceId":15597458,"sourceType":"datasetVersion"}],"isGpuEnabled":true,"isInternetEnabled":true,"language":"python","sourceType":"notebook"},"papermill":{"default_parameters":{},"duration":5.933589,"end_time":"2026-04-08T12:21:48.821579+00:00","environment_variables":{},"exception":null,"input_path":"__notebook__.ipynb","output_path":"__notebook__.ipynb","parameters":{},"start_time":"2026-04-08T12:21:42.887990+00:00","version":"2.7.0"}},"nbformat_minor":4,"nbformat":4,"cells":[{"id":"70fa193b","cell_type":"code","source":"import os\nimport joblib\nimport numpy as np\nimport pandas as pd\n\nOUT_DIR = '/kaggle/input/notebooks/nguynhongdiumy/meta-stacking-tree-based-train/processed_data/'\nMODEL_DIR = '/kaggle/input/notebooks/nguynhongdiumy/meta-stacking-tree-based-train/models/'\n\n# 1. Đọc lại danh sách ID theo chuẩn sampleSubmission\nsub_df = pd.read_csv('/kaggle/input/competitions/malware-classification/sampleSubmission.csv')\ntest_ids = sub_df['Id'].tolist()\n\n# 2. Tải mô hình và dữ liệu Meta-features cho Test đã tạo ở Phần 2\nmeta_learner = joblib.load(os.path.join(MODEL_DIR, 'meta_learner.pkl'))\nX_test_level1 = np.load(os.path.join(OUT_DIR, 'X_test_level1.npy'))\n\n# 3. Chạy dự đoán cuối cùng\nprint(\"Đang tạo xác suất dự đoán (Predict Proba)...\")\nfinal_probabilities = meta_learner.predict_proba(X_test_level1)\n\n# 4. Định dạng file theo đúng chuẩn Microsoft BIG 2015\ncol_names = [f'Prediction{i}' for i in range(1, 10)]\nsubmission = pd.DataFrame(final_probabilities, columns=col_names)\n\n# Nối cột ID vào vị trí đầu tiên\nsubmission.insert(0, 'Id', test_ids)\n\n# Lưu ra CSV\nsub_filename = 'submission_malware_2015.csv'\nsubmission.to_csv(sub_filename, index=False)\n\nprint(f\"Thành công! Đã lưu file '{sub_filename}' với kích thước {submission.shape}.\")\nprint(\"Đảm bảo thứ tự ID hoàn toàn khớp. Bạn đã có thể Submit lên Kaggle!\")","metadata":{"_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","execution":{"iopub.execute_input":"2026-04-08T12:21:45.174297Z","iopub.status.busy":"2026-04-08T12:21:45.174038Z","iopub.status.idle":"2026-04-08T12:21:48.201039Z","shell.execute_reply":"2026-04-08T12:21:48.199965Z"},"papermill":{"duration":3.03081,"end_time":"2026-04-08T12:21:48.202595+00:00","exception":false,"start_time":"2026-04-08T12:21:45.171785+00:00","status":"completed"},"tags":[]},"outputs":[],"execution_count":null}]}