{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.11.11","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":87793,"databundleVersionId":12024591,"sourceType":"competition"}],"dockerImageVersionId":31012,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"execution":{"iopub.status.busy":"2025-05-02T03:42:03.930988Z","iopub.execute_input":"2025-05-02T03:42:03.932086Z","iopub.status.idle":"2025-05-02T03:42:04.384585Z","shell.execute_reply.started":"2025-05-02T03:42:03.932056Z","shell.execute_reply":"2025-05-02T03:42:04.383517Z"},"collapsed":true,"jupyter":{"outputs_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# Mengumpulkan data","metadata":{"execution":{"iopub.status.busy":"2025-05-01T15:18:08.510989Z","iopub.execute_input":"2025-05-01T15:18:08.511347Z","iopub.status.idle":"2025-05-01T15:18:08.517668Z","shell.execute_reply.started":"2025-05-01T15:18:08.511321Z","shell.execute_reply":"2025-05-01T15:18:08.516562Z"}}},{"cell_type":"code","source":"import pandas as pd\n\n# Path dasar ke folder input\nbase_path = \"/kaggle/input/stanford-rna-3d-folding/\"\n\n# Load dataset utama dengan path lengkap\ntrain_seq = pd.read_csv(base_path + \"train_sequences.csv\")\ntrain_lbl = pd.read_csv(base_path + \"train_labels.csv\")\nval_seq = pd.read_csv(base_path + \"validation_sequences.csv\")\nval_lbl = pd.read_csv(base_path + \"validation_labels.csv\")\ntest_seq = pd.read_csv(base_path + \"test_sequences.csv\")\nsample_sub = pd.read_csv(base_path + \"sample_submission.csv\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-02T03:42:04.386590Z","iopub.execute_input":"2025-05-02T03:42:04.386954Z","iopub.status.idle":"2025-05-02T03:42:04.883668Z","shell.execute_reply.started":"2025-05-02T03:42:04.386921Z","shell.execute_reply":"2025-05-02T03:42:04.882661Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Cek bentuk data\nprint(\"Train sequences:\", train_seq.shape)\nprint(\"Train labels:\", train_lbl.shape)\nprint(\"Validation sequences:\", val_seq.shape)\nprint(\"Validation labels:\", val_lbl.shape)\nprint(\"Test sequences:\", test_seq.shape)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-02T03:42:04.884965Z","iopub.execute_input":"2025-05-02T03:42:04.885350Z","iopub.status.idle":"2025-05-02T03:42:04.891636Z","shell.execute_reply.started":"2025-05-02T03:42:04.885312Z","shell.execute_reply":"2025-05-02T03:42:04.890434Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Lihat beberapa baris awal\nprint(train_seq.head())","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-02T03:42:04.893749Z","iopub.execute_input":"2025-05-02T03:42:04.894082Z","iopub.status.idle":"2025-05-02T03:42:04.926593Z","shell.execute_reply.started":"2025-05-02T03:42:04.894057Z","shell.execute_reply":"2025-05-02T03:42:04.925285Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"print(train_lbl.head())","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-02T03:42:04.927802Z","iopub.execute_input":"2025-05-02T03:42:04.928285Z","iopub.status.idle":"2025-05-02T03:42:04.941291Z","shell.execute_reply.started":"2025-05-02T03:42:04.928251Z","shell.execute_reply":"2025-05-02T03:42:04.939863Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"print(test_seq.head())","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-02T03:42:04.942460Z","iopub.execute_input":"2025-05-02T03:42:04.942869Z","iopub.status.idle":"2025-05-02T03:42:04.965897Z","shell.execute_reply.started":"2025-05-02T03:42:04.942844Z","shell.execute_reply":"2025-05-02T03:42:04.964652Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"print(val_lbl.head())","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-02T03:42:04.967071Z","iopub.execute_input":"2025-05-02T03:42:04.967460Z","iopub.status.idle":"2025-05-02T03:42:05.003866Z","shell.execute_reply.started":"2025-05-02T03:42:04.967427Z","shell.execute_reply":"2025-05-02T03:42:05.002423Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"print(val_seq.head())","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-02T03:42:05.004809Z","iopub.execute_input":"2025-05-02T03:42:05.005045Z","iopub.status.idle":"2025-05-02T03:42:05.029965Z","shell.execute_reply.started":"2025-05-02T03:42:05.005027Z","shell.execute_reply":"2025-05-02T03:42:05.028859Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# Menelaah data","metadata":{"execution":{"iopub.status.busy":"2025-05-01T15:37:49.405375Z","iopub.execute_input":"2025-05-01T15:37:49.405737Z","iopub.status.idle":"2025-05-01T15:37:49.409801Z","shell.execute_reply.started":"2025-05-01T15:37:49.405713Z","shell.execute_reply":"2025-05-01T15:37:49.408856Z"}}},{"cell_type":"code","source":"# Memeriksa Tipe Data\nprint(\"\\nTipe Data dalam Train Sequences:\\n\", train_seq.dtypes)\nprint(\"\\nTipe Data dalam Train Labels:\\n\", train_lbl.dtypes)\nprint(\"\\nTipe Data dalam Validation Sequences:\\n\", val_seq.dtypes)\nprint(\"\\nTipe Data dalam Validation Labels:\\n\", val_lbl.dtypes)\nprint(\"\\nTipe Data dalam Test Sequences:\\n\", test_seq.dtypes)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-02T03:42:05.034932Z","iopub.execute_input":"2025-05-02T03:42:05.035279Z","iopub.status.idle":"2025-05-02T03:42:05.054059Z","shell.execute_reply.started":"2025-05-02T03:42:05.035255Z","shell.execute_reply":"2025-05-02T03:42:05.052909Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Memeriksa Ukuran Dataset (Jumlah Baris dan Kolom)\nprint(\"\\nJumlah baris dan kolom dalam Train Sequences:\", train_seq.shape)\nprint(\"\\nJumlah baris dan kolom dalam Train Labels:\", train_lbl.shape)\nprint(\"\\nJumlah baris dan kolom dalam Validation Sequences:\", val_seq.shape)\nprint(\"\\nJumlah baris dan kolom dalam Validation Labels:\", val_lbl.shape)\n\n# Memeriksa Ketidaksesuaian Kategori dalam Kolom (Jika ada kolom kategori)\nif 'category_column' in train_seq.columns:  # Ganti 'category_column' dengan nama kolom kategori\n    print(\"\\nKategori dalam Kolom Category:\\n\", train_seq['category_column'].unique())\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-02T03:42:05.200960Z","iopub.execute_input":"2025-05-02T03:42:05.201323Z","iopub.status.idle":"2025-05-02T03:42:05.208281Z","shell.execute_reply.started":"2025-05-02T03:42:05.201299Z","shell.execute_reply":"2025-05-02T03:42:05.206894Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# Menvalidasi data","metadata":{}},{"cell_type":"code","source":"# Memeriksa Missing Values (Data yang Hilang)\nmissing_train_seq = train_seq.isnull().sum()\nmissing_train_lbl = train_lbl.isnull().sum()\nmissing_val_seq = val_seq.isnull().sum()\nmissing_val_lbl = val_lbl.isnull().sum()\n\n# Menampilkan informasi missing values\nprint(\"\\nMissing Values in Train Sequences:\\n\", missing_train_seq)\nprint(\"\\nMissing Values in Train Labels:\\n\", missing_train_lbl)\nprint(\"\\nMissing Values in Validation Sequences:\\n\", missing_val_seq)\nprint(\"\\nMissing Values in Validation Labels:\\n\", missing_val_lbl)\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-02T03:42:05.209649Z","iopub.execute_input":"2025-05-02T03:42:05.209890Z","iopub.status.idle":"2025-05-02T03:42:05.262852Z","shell.execute_reply.started":"2025-05-02T03:42:05.209871Z","shell.execute_reply":"2025-05-02T03:42:05.261734Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Memeriksa Duplikasi (Duplicate Data)\nduplicate_train_seq = train_seq.duplicated().sum()\nduplicate_train_lbl = train_lbl.duplicated().sum()\nduplicate_val_seq = val_seq.duplicated().sum()\nduplicate_val_lbl = val_lbl.duplicated().sum()\n\n# Menampilkan jumlah duplikasi\nprint(\"\\nJumlah baris duplikat dalam Train Sequences:\", duplicate_train_seq)\nprint(\"Jumlah baris duplikat dalam Train Labels:\", duplicate_train_lbl)\nprint(\"Jumlah baris duplikat dalam Validation Sequences:\", duplicate_val_seq)\nprint(\"Jumlah baris duplikat dalam Validation Labels:\", duplicate_val_lbl)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-02T03:42:05.269470Z","iopub.execute_input":"2025-05-02T03:42:05.270264Z","iopub.status.idle":"2025-05-02T03:42:05.374161Z","shell.execute_reply.started":"2025-05-02T03:42:05.270239Z","shell.execute_reply":"2025-05-02T03:42:05.373083Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Statistik Deskriptif (Descriptive Statistics) untuk Data Numerik\nprint(\"\\nStatistik Deskriptif Train Labels:\\n\", train_lbl.describe())\nprint(\"\\nStatistik Deskriptif Train Sequences:\\n\", train_seq.describe())\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-02T03:42:05.375816Z","iopub.execute_input":"2025-05-02T03:42:05.376153Z","iopub.status.idle":"2025-05-02T03:42:05.430393Z","shell.execute_reply.started":"2025-05-02T03:42:05.376130Z","shell.execute_reply":"2025-05-02T03:42:05.429293Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import seaborn as sns\nimport matplotlib.pyplot as plt\nfrom collections import Counter\n\n# Gabungkan semua sekuens dalam train_sequences\nall_nucleotides = ''.join(train_seq['sequence'].values)\n\n# Hitung frekuensi setiap nukleotida\ncounter = Counter(all_nucleotides)\n\n# Visualisasi frekuensi nukleotida\nplt.figure(figsize=(6, 4))\nsns.barplot(x=list(counter.keys()), y=list(counter.values()), palette='viridis')\nplt.title('Frekuensi Nukleotida dalam Train Sequences')\nplt.xlabel('Simbol Nukleotida')\nplt.ylabel('Frekuensi')\nplt.show()\n\n# Menampilkan frekuensi simbol nukleotida\nprint(\"Frekuensi simbol nukleotida:\", dict(counter))\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-02T03:42:06.050901Z","iopub.execute_input":"2025-05-02T03:42:06.051264Z","iopub.status.idle":"2025-05-02T03:42:07.590840Z","shell.execute_reply.started":"2025-05-02T03:42:06.051241Z","shell.execute_reply":"2025-05-02T03:42:07.589615Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import matplotlib.pyplot as plt\nimport seaborn as sns\n\n# 1. Prosentase Nilai Hilang\nmissing_train_seq = train_seq.isnull().mean() * 100\nmissing_train_lbl = train_lbl.isnull().mean() * 100\nmissing_val_seq = val_seq.isnull().mean() * 100\nmissing_val_lbl = val_lbl.isnull().mean() * 100\n\n# Plot missing values\nfig, axes = plt.subplots(2, 2, figsize=(12, 10))\n\n# Train Sequences Missing\nsns.barplot(x=missing_train_seq.index, y=missing_train_seq.values, ax=axes[0, 0])\naxes[0, 0].set_title('Missing Data in Train Sequences')\naxes[0, 0].set_ylabel('Percentage')\n\n# Train Labels Missing\nsns.barplot(x=missing_train_lbl.index, y=missing_train_lbl.values, ax=axes[0, 1])\naxes[0, 1].set_title('Missing Data in Train Labels')\naxes[0, 1].set_ylabel('Percentage')\n\n# Validation Sequences Missing\nsns.barplot(x=missing_val_seq.index, y=missing_val_seq.values, ax=axes[1, 0])\naxes[1, 0].set_title('Missing Data in Validation Sequences')\naxes[1, 0].set_ylabel('Percentage')\n\n# Validation Labels Missing\nsns.barplot(x=missing_val_lbl.index, y=missing_val_lbl.values, ax=axes[1, 1])\naxes[1, 1].set_title('Missing Data in Validation Labels')\naxes[1, 1].set_ylabel('Percentage')\n\nplt.tight_layout()\nplt.show()\n\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-02T03:42:07.592734Z","iopub.execute_input":"2025-05-02T03:42:07.593087Z","iopub.status.idle":"2025-05-02T03:42:09.116567Z","shell.execute_reply.started":"2025-05-02T03:42:07.593064Z","shell.execute_reply":"2025-05-02T03:42:09.115591Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]}