{"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":"none","dataSources":[{"sourceType":"competition","sourceId":4117,"databundleVersionId":46665,"isSourceIdPinned":false},{"sourceType":"datasetVersion","sourceId":15878877,"datasetId":10180842,"databundleVersionId":16832241},{"sourceType":"datasetVersion","sourceId":15906204,"datasetId":10200000,"databundleVersionId":16861691},{"sourceType":"modelInstanceVersion","sourceId":844313,"databundleVersionId":16861777,"modelInstanceId":642249,"modelId":654251,"isSourceIdPinned":false}],"dockerImageVersionId":31328,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import pandas as pd\nimport xgboost as xgb\nfrom sklearn.preprocessing import LabelEncoder\n\n# 1. Đọc và gộp dữ liệu\nprint(\"📂 Đang hợp nhất 4 phần dữ liệu tập Test...\")\np1 = pd.read_csv('/kaggle/input/datasets/phuongnambui/test-dt/test_part1.csv')\np2 = pd.read_csv('/kaggle/input/datasets/phuongnambui/test-dt/test_part2.csv')\np3 = pd.read_csv('/kaggle/input/datasets/phuongnambui/test-dt/test_part3.csv')\np4 = pd.read_csv('/kaggle/input/datasets/phuongnambui/test-dt/test_part4.csv')\n\ndf_test_full = pd.concat([p1, p2, p3, p4], ignore_index=True)\n\n# Kiểm tra số lượng (phải đủ ~10.873 dòng)\nprint(f\"✅ Tổng số file Test đã xử lý: {len(df_test_full)}\")\n\n# Sắp xếp lại theo đúng thứ tự của file mẫu nộp bài cho chắc chắn\nsample_sub = pd.read_csv('/kaggle/input/competitions/malware-classification/sampleSubmission.csv')\ndf_test_full = df_test_full.set_index('Id').reindex(sample_sub['Id']).reset_index()","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"execution":{"iopub.status.busy":"2026-04-24T02:18:00.173724Z","iopub.execute_input":"2026-04-24T02:18:00.174129Z","iopub.status.idle":"2026-04-24T02:18:04.679265Z","shell.execute_reply.started":"2026-04-24T02:18:00.174084Z","shell.execute_reply":"2026-04-24T02:18:04.678045Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"model  = xgb.XGBClassifier()\nmodel.load_model('/kaggle/input/models/phuongnambui/predict-xgb/scikitlearn/default/1/malware_model_0353.json')\n# 2. Chuẩn bị đầu vào cho AI (Bỏ cột Id)\nX_final = df_test_full.drop(columns=['Id'])\n\n# 3. Dự đoán (Nếu bạn đã lưu model thì load lên, nếu model đang có sẵn trong RAM thì dùng luôn)\n# Giả sử biến 'model' của bạn đang sẵn sàng\nprint(\"🧠 AI đang phân tích tập Test...\")\nprobs = model.predict_proba(X_final)\n\n# 4. Tạo file Submission chuẩn định dạng Kaggle\n# Lưu ý: Các cột phải là Class1, Class2, ..., Class9\nsubmission = pd.DataFrame(probs, columns=[f'Prediction{i}' for i in range(1, 10)])\nsubmission.insert(0, 'Id', df_test_full['Id'])\n\n# 5. Xuất file cuối cùng\nsubmission.to_csv('final_submission.csv', index=False)\nprint(\"🚀 ĐÃ XONG! File 'final_submission.csv' đã sẵn sàng để nộp bài.\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-04-24T02:31:29.552761Z","iopub.execute_input":"2026-04-24T02:31:29.553126Z","iopub.status.idle":"2026-04-24T02:31:30.246731Z","shell.execute_reply.started":"2026-04-24T02:31:29.553092Z","shell.execute_reply":"2026-04-24T02:31:30.245635Z"}},"outputs":[],"execution_count":null}]}