{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":84896,"databundleVersionId":10305135,"sourceType":"competition"}],"dockerImageVersionId":30839,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n\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\n\ntrain_data = pd.read_csv('/kaggle/input/playground-series-s4e12/train.csv')\ntest_data = pd.read_csv('/kaggle/input/playground-series-s4e12/test.csv')\nsample_submission = pd.read_csv('/kaggle/input/playground-series-s4e12/sample_submission.csv')","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"execution":{"iopub.status.busy":"2025-02-21T17:54:39.562298Z","iopub.execute_input":"2025-02-21T17:54:39.562675Z","iopub.status.idle":"2025-02-21T17:54:46.897988Z","shell.execute_reply.started":"2025-02-21T17:54:39.562637Z","shell.execute_reply":"2025-02-21T17:54:46.896995Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import matplotlib.pyplot as plt\nimport seaborn as sns","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-21T17:54:51.233479Z","iopub.execute_input":"2025-02-21T17:54:51.233804Z","iopub.status.idle":"2025-02-21T17:54:52.139424Z","shell.execute_reply.started":"2025-02-21T17:54:51.233779Z","shell.execute_reply":"2025-02-21T17:54:52.138442Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_data.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-21T17:59:42.041359Z","iopub.execute_input":"2025-02-21T17:59:42.041928Z","iopub.status.idle":"2025-02-21T17:59:42.09108Z","shell.execute_reply.started":"2025-02-21T17:59:42.041898Z","shell.execute_reply":"2025-02-21T17:59:42.08994Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"print(train_data.shape)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-21T17:59:49.743994Z","iopub.execute_input":"2025-02-21T17:59:49.744344Z","iopub.status.idle":"2025-02-21T17:59:49.750148Z","shell.execute_reply.started":"2025-02-21T17:59:49.744315Z","shell.execute_reply":"2025-02-21T17:59:49.748817Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"test_data.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-21T18:00:07.538281Z","iopub.execute_input":"2025-02-21T18:00:07.538641Z","iopub.status.idle":"2025-02-21T18:00:07.559433Z","shell.execute_reply.started":"2025-02-21T18:00:07.538616Z","shell.execute_reply":"2025-02-21T18:00:07.558521Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"print(test_data.shape)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-21T18:00:12.151452Z","iopub.execute_input":"2025-02-21T18:00:12.151808Z","iopub.status.idle":"2025-02-21T18:00:12.157771Z","shell.execute_reply.started":"2025-02-21T18:00:12.151782Z","shell.execute_reply":"2025-02-21T18:00:12.156543Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"sample_submission.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-21T18:00:15.020209Z","iopub.execute_input":"2025-02-21T18:00:15.020682Z","iopub.status.idle":"2025-02-21T18:00:15.030879Z","shell.execute_reply.started":"2025-02-21T18:00:15.020648Z","shell.execute_reply":"2025-02-21T18:00:15.029666Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# **1. Examining The Dataset** ","metadata":{}},{"cell_type":"code","source":"# Veri setleri hakkında genel bilgiler\nprint(\"Train Data Info:\")\nprint(train_data.info(), \"\\n\")\nprint(\"Train Data Null Values:\")\nprint(train_data.isnull().sum(), \"\\n\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-21T18:00:22.028996Z","iopub.execute_input":"2025-02-21T18:00:22.029372Z","iopub.status.idle":"2025-02-21T18:00:23.399457Z","shell.execute_reply.started":"2025-02-21T18:00:22.029347Z","shell.execute_reply":"2025-02-21T18:00:23.398079Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"print(\"Test Data Info:\")\nprint(test_data.info(), \"\\n\")\nprint(\"Test Data Null Values:\")\nprint(test_data.isnull().sum(), \"\\n\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-21T18:00:27.709382Z","iopub.execute_input":"2025-02-21T18:00:27.709834Z","iopub.status.idle":"2025-02-21T18:00:28.636659Z","shell.execute_reply.started":"2025-02-21T18:00:27.709804Z","shell.execute_reply":"2025-02-21T18:00:28.635503Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Kategorik ve sayısal sütunların analizi\nprint(\"Categorical Columns in Train Data:\")\nprint(train_data.select_dtypes(include=['object']).columns, \"\\n\")\n\nprint(\"Numerical Columns in Train Data:\")\nprint(train_data.select_dtypes(include=['int64', 'float64']).columns, \"\\n\")\n\nprint(\"Categorical Columns in Test Data:\")\nprint(test_data.select_dtypes(include=['object']).columns, \"\\n\")\n\nprint(\"Numerical Columns in Test Data:\")\nprint(test_data.select_dtypes(include=['int64', 'float64']).columns, \"\\n\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-21T18:00:33.99383Z","iopub.execute_input":"2025-02-21T18:00:33.99416Z","iopub.status.idle":"2025-02-21T18:00:34.321526Z","shell.execute_reply.started":"2025-02-21T18:00:33.994135Z","shell.execute_reply":"2025-02-21T18:00:34.320278Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Her sütundaki benzersiz (unique) değerlerin sayısını gösterme\nunique_counts = train_data.nunique()\nprint(\"Unique value counts for each column:\\n\")\nprint(unique_counts)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-21T18:00:38.191865Z","iopub.execute_input":"2025-02-21T18:00:38.192202Z","iopub.status.idle":"2025-02-21T18:00:39.330179Z","shell.execute_reply.started":"2025-02-21T18:00:38.192178Z","shell.execute_reply":"2025-02-21T18:00:39.329029Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Her sütundaki benzersiz (unique) değerlerin sayısını gösterme\nunique_counts = test_data.nunique()\nprint(\"Unique value counts for each column:\\n\")\nprint(unique_counts)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-21T18:00:46.315099Z","iopub.execute_input":"2025-02-21T18:00:46.315443Z","iopub.status.idle":"2025-02-21T18:00:47.060528Z","shell.execute_reply.started":"2025-02-21T18:00:46.315393Z","shell.execute_reply":"2025-02-21T18:00:47.059519Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Her sütundaki benzersiz (unique) değerleri ve frekanslarını sıralama\nfor column in train_data.columns:\n    print(f\"Unique values for '{column}' (Top 10 most frequent):\")\n    print(train_data[column].value_counts().head(10), \"\\n\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-21T18:00:50.408442Z","iopub.execute_input":"2025-02-21T18:00:50.408776Z","iopub.status.idle":"2025-02-21T18:00:52.157107Z","shell.execute_reply.started":"2025-02-21T18:00:50.408751Z","shell.execute_reply":"2025-02-21T18:00:52.156234Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Veri tiplerini dönüştürme\ntrain_data['Age'] = train_data['Age'].astype('Int64')  \ntrain_data['Gender'] = train_data['Gender'].astype('category')\ntrain_data['Marital Status'] = train_data['Marital Status'].astype('category')\ntrain_data['Number of Dependents'] = train_data['Number of Dependents'].astype('Int64')  \ntrain_data['Education Level'] = train_data['Education Level'].astype('category')\ntrain_data['Occupation'] = train_data['Occupation'].astype('category')\ntrain_data['Policy Type'] = train_data['Policy Type'].astype('category')\ntrain_data['Policy Start Date'] = pd.to_datetime(train_data['Policy Start Date'], errors='coerce')\ntrain_data['Customer Feedback'] = train_data['Customer Feedback'].astype('category')\ntrain_data['Exercise Frequency'] = train_data['Exercise Frequency'].astype('category')\ntrain_data['Property Type'] = train_data['Property Type'].astype('category')\n\n\n# Veri tipi dönüşümlerini kontrol etme\nprint(train_data.dtypes)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-21T18:01:01.872145Z","iopub.execute_input":"2025-02-21T18:01:01.872523Z","iopub.status.idle":"2025-02-21T18:01:03.31308Z","shell.execute_reply.started":"2025-02-21T18:01:01.872498Z","shell.execute_reply":"2025-02-21T18:01:03.31212Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Veri tiplerini dönüştürme\ntest_data['Age'] = test_data['Age'].astype('Int64')  \ntest_data['Gender'] = test_data['Gender'].astype('category')\ntest_data['Marital Status'] = test_data['Marital Status'].astype('category')\ntest_data['Number of Dependents'] = test_data['Number of Dependents'].astype('Int64')  \ntest_data['Education Level'] = test_data['Education Level'].astype('category')\ntest_data['Occupation'] = test_data['Occupation'].astype('category')\ntest_data['Policy Type'] = test_data['Policy Type'].astype('category')\ntest_data['Policy Start Date'] = pd.to_datetime(test_data['Policy Start Date'], errors='coerce')\ntest_data['Customer Feedback'] = test_data['Customer Feedback'].astype('category')\ntest_data['Exercise Frequency'] = test_data['Exercise Frequency'].astype('category')\ntest_data['Property Type'] = test_data['Property Type'].astype('category')\n\n\n# Veri tipi dönüşümlerini kontrol etme\nprint(test_data.dtypes)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-08T10:41:27.172683Z","iopub.execute_input":"2025-02-08T10:41:27.173052Z","iopub.status.idle":"2025-02-08T10:41:28.216969Z","shell.execute_reply.started":"2025-02-08T10:41:27.173023Z","shell.execute_reply":"2025-02-08T10:41:28.21553Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Temel istatistiksel bilgiler\nprint(\"Train Data Description:\")\nprint(train_data.describe(), \"\\n\")\nprint(\"Test Data Description:\")\nprint(test_data.describe(), \"\\n\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-08T10:41:28.217849Z","iopub.execute_input":"2025-02-08T10:41:28.2182Z","iopub.status.idle":"2025-02-08T10:41:29.673861Z","shell.execute_reply.started":"2025-02-08T10:41:28.218135Z","shell.execute_reply":"2025-02-08T10:41:29.672504Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# **2. Data Preparation**","metadata":{}},{"cell_type":"code","source":"plt.figure(figsize=(15,9))\nplt.title(\"Visualizing Missing Values\")\nsns.heatmap(train_data.isnull(), cbar=False, cmap=sns.color_palette('magma'), yticklabels=False);\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-08T10:41:29.674905Z","iopub.execute_input":"2025-02-08T10:41:29.675305Z","iopub.status.idle":"2025-02-08T10:41:54.821039Z","shell.execute_reply.started":"2025-02-08T10:41:29.675274Z","shell.execute_reply":"2025-02-08T10:41:54.819629Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Age sütunundaki eksik değerleri medyan ile doldur\nage_median = train_data['Age'].median()\ntrain_data['Age'].fillna(age_median, inplace=True)\n\n# Vehicle Age ve Insurance Duration sütunlarındaki eksik değerleri mod ile doldur\nvehicle_age_mode = train_data['Vehicle Age'].mode()[0]\ninsurance_duration_mode = train_data['Insurance Duration'].mode()[0]\n\ntrain_data['Vehicle Age'].fillna(vehicle_age_mode, inplace=True)\ntrain_data['Insurance Duration'].fillna(insurance_duration_mode, inplace=True)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-08T10:41:54.822325Z","iopub.execute_input":"2025-02-08T10:41:54.822674Z","iopub.status.idle":"2025-02-08T10:41:54.914571Z","shell.execute_reply.started":"2025-02-08T10:41:54.822643Z","shell.execute_reply":"2025-02-08T10:41:54.913292Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def fill_missing_with_proportions(df, column_name):\n    # Mevcut frekans dağılımı\n    value_counts = df[column_name].value_counts(normalize=True)  # Oranları alıyoruz\n    missing_count = df[column_name].isna().sum()  # Eksik değer sayısı\n\n    # Eksik değerleri dolduracak unique değerlerin sayısını hesapla\n    fill_values = np.random.choice(\n        value_counts.index,  # Mevcut unique değerler\n        size=missing_count,  # Eksik değer sayısı kadar rastgele seçim\n        p=value_counts.values  # Orijinal oranlar\n    )\n    \n    # Eksik değerleri doldur\n    df.loc[df[column_name].isna(), column_name] = fill_values\n\n\n# Previous Claims ve Occupation için uygulama\nfill_missing_with_proportions(train_data, 'Previous Claims')\nfill_missing_with_proportions(train_data, 'Occupation')\nfill_missing_with_proportions(train_data, 'Marital Status')\nfill_missing_with_proportions(train_data, 'Number of Dependents')\nfill_missing_with_proportions(train_data, 'Customer Feedback')\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-08T10:41:54.915685Z","iopub.execute_input":"2025-02-08T10:41:54.915978Z","iopub.status.idle":"2025-02-08T10:41:55.14235Z","shell.execute_reply.started":"2025-02-08T10:41:54.915954Z","shell.execute_reply":"2025-02-08T10:41:55.141114Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"print(\"Train Data Null Values:\")\nprint(train_data.isnull().sum(), \"\\n\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-08T10:41:56.060547Z","iopub.execute_input":"2025-02-08T10:41:56.061003Z","iopub.status.idle":"2025-02-08T10:41:56.26079Z","shell.execute_reply.started":"2025-02-08T10:41:56.060953Z","shell.execute_reply":"2025-02-08T10:41:56.259286Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Her sütundaki benzersiz (unique) değerleri ve frekanslarını sıralama\nfor column in train_data.columns:\n    print(f\"Unique values for '{column}' (Top 10 most frequent):\")\n    print(train_data[column].value_counts().head(10), \"\\n\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-08T10:41:55.143704Z","iopub.execute_input":"2025-02-08T10:41:55.144197Z","iopub.status.idle":"2025-02-08T10:41:56.059496Z","shell.execute_reply.started":"2025-02-08T10:41:55.144126Z","shell.execute_reply":"2025-02-08T10:41:56.057917Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Kredi Skoru Kolonu İstatistiksel Özeti\ncredit_score_summary = train_data['Credit Score'].describe()\nprint(\"Kredi Skoru Kolonu İstatistiksel Özeti:\")\nprint(credit_score_summary)\n\n# Eksik değerlerin doldurulup doldurulmadığını kontrol et\nmissing_count = train_data['Credit Score'].isnull().sum()\nprint(\"\\nEksik Değer Sayısı (Doldurma Sonrası):\", missing_count)\n\n# Kredi Skoru Histogramı\nplt.figure(figsize=(10, 6))\nsns.histplot(train_data['Credit Score'], bins=50, kde=True, color='royalblue')\nplt.title('Kredi Skoru Dağılımı')\nplt.xlabel('Kredi Skoru')\nplt.ylabel('Frekans')\nplt.show()\n\n# Kredi Skoru Boxplot ile Uç Değer Analizi\nplt.figure(figsize=(10, 4))\nsns.boxplot(x=train_data['Credit Score'], color='orange')\nplt.title('Kredi Skoru Uç Değer Analizi')\nplt.show()\n\n# Kredi Skoru'nun En Sık Kullanılan İlk 10 Değeri\nmost_frequent_scores = train_data['Credit Score'].value_counts().head(10)\nprint(\"\\nKredi Skoru Kolonundaki En Sık Kullanılan İlk 10 Değer:\")\nprint(most_frequent_scores)\n\n# Verinin yoğun olduğu dilimlerin analizi için çeyrekler\nq1 = train_data['Credit Score'].quantile(0.25)\nq3 = train_data['Credit Score'].quantile(0.75)\niqr = q3 - q1\n\nprint(\"\\nÇeyrek Değerler (Q1, Q3) ve IQR Bilgileri:\")\nprint(f\"Q1: {q1}, Q3: {q3}, IQR: {iqr}\")\nprint(f\"Alt sınır: {q1 - 1.5 * iqr}, Üst sınır: {q3 + 1.5 * iqr}\")\n","metadata":{"trusted":true},"outputs":[],"execution_count":null}]}