{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.14","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":81933,"databundleVersionId":9643020,"sourceType":"competition"}],"dockerImageVersionId":30786,"isInternetEnabled":false,"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\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nimport warnings\nimport matplotlib.pyplot as plt\nimport matplotlib.gridspec as gridspec\nimport seaborn as sns","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2024-10-22T11:35:29.454282Z","iopub.execute_input":"2024-10-22T11:35:29.454738Z","iopub.status.idle":"2024-10-22T11:35:30.688852Z","shell.execute_reply.started":"2024-10-22T11:35:29.454699Z","shell.execute_reply":"2024-10-22T11:35:30.687844Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"pip install --upgrade scikit-learn","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-10-22T11:35:30.690899Z","iopub.execute_input":"2024-10-22T11:35:30.691549Z","iopub.status.idle":"2024-10-22T11:35:47.809493Z","shell.execute_reply.started":"2024-10-22T11:35:30.691500Z","shell.execute_reply":"2024-10-22T11:35:47.808110Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"warnings.filterwarnings('ignore', category=FutureWarning)\n\nsns.set(style=\"whitegrid\")\n%matplotlib inline","metadata":{"execution":{"iopub.status.busy":"2024-10-22T11:35:47.811200Z","iopub.execute_input":"2024-10-22T11:35:47.811597Z","iopub.status.idle":"2024-10-22T11:35:47.820195Z","shell.execute_reply.started":"2024-10-22T11:35:47.811561Z","shell.execute_reply":"2024-10-22T11:35:47.818947Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# # loading train and test data","metadata":{}},{"cell_type":"code","source":"TrainData = pd.read_csv('/kaggle/input/child-mind-institute-problematic-internet-use/train.csv')\nTestData = pd.read_csv('/kaggle/input/child-mind-institute-problematic-internet-use/test.csv')\n","metadata":{"execution":{"iopub.status.busy":"2024-10-22T11:35:47.823305Z","iopub.execute_input":"2024-10-22T11:35:47.824366Z","iopub.status.idle":"2024-10-22T11:35:47.909689Z","shell.execute_reply.started":"2024-10-22T11:35:47.824293Z","shell.execute_reply":"2024-10-22T11:35:47.908719Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# Removing outliers in numerical columns","metadata":{}},{"cell_type":"code","source":"\nimport pandas as pd\nimport numpy as np\n\nimport matplotlib.pyplot as plt\nimport scipy.stats as stats\n\n# Identify numerical columns\nnumerical_columns = TrainData.select_dtypes(include=np.number).columns\n\n# Calculate Z-scores\nz_scores = TrainData[numerical_columns].apply(stats.zscore)\n\n# Define outlier threshold\nthreshold = 3\n\n# Identify outliers\noutliers = (z_scores > threshold) | (z_scores < -threshold)\n\n# Create box plots before and after outlier removal\n\n# Before outlier removal\nplt.figure(figsize=(12, 8))\nTrainData[numerical_columns].boxplot(rot=45, fontsize=8)  # Rotate labels and adjust font size\nplt.title(\"Box Plots Before Outlier Removal\")\nplt.xticks(rotation=45)  # Rotate x-axis labels\nplt.show()\n\n# After outlier removal\ndata_without_outliers = TrainData[~outliers.any(axis=1)]\nplt.figure(figsize=(12, 8))\ndata_without_outliers[numerical_columns].boxplot(rot=45, fontsize=8)\nplt.title(\"Box Plots After Outlier Removal\")\nplt.xticks(rotation=45)\nplt.show()\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-10-22T11:35:47.911150Z","iopub.execute_input":"2024-10-22T11:35:47.911512Z","iopub.status.idle":"2024-10-22T11:35:51.313407Z","shell.execute_reply.started":"2024-10-22T11:35:47.911476Z","shell.execute_reply":"2024-10-22T11:35:51.312017Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# Handling missing values in train data ","metadata":{}},{"cell_type":"code","source":"TrainData['sii'].value_counts()","metadata":{"execution":{"iopub.status.busy":"2024-10-22T11:35:51.314824Z","iopub.execute_input":"2024-10-22T11:35:51.315216Z","iopub.status.idle":"2024-10-22T11:35:51.331435Z","shell.execute_reply.started":"2024-10-22T11:35:51.315175Z","shell.execute_reply":"2024-10-22T11:35:51.330208Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train= TrainData.drop('id', axis=1)","metadata":{"execution":{"iopub.status.busy":"2024-10-22T11:35:51.332969Z","iopub.execute_input":"2024-10-22T11:35:51.333997Z","iopub.status.idle":"2024-10-22T11:35:51.342863Z","shell.execute_reply.started":"2024-10-22T11:35:51.333946Z","shell.execute_reply":"2024-10-22T11:35:51.341811Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train3=train['sii']\ntrain3","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-10-22T11:35:51.344250Z","iopub.execute_input":"2024-10-22T11:35:51.344630Z","iopub.status.idle":"2024-10-22T11:35:51.357498Z","shell.execute_reply.started":"2024-10-22T11:35:51.344592Z","shell.execute_reply":"2024-10-22T11:35:51.356365Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train2=train.drop('sii',axis=1)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-10-22T11:35:51.358811Z","iopub.execute_input":"2024-10-22T11:35:51.359146Z","iopub.status.idle":"2024-10-22T11:35:51.370156Z","shell.execute_reply.started":"2024-10-22T11:35:51.359113Z","shell.execute_reply":"2024-10-22T11:35:51.369101Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import pandas as pd\nfrom sklearn.impute import SimpleImputer\n\ndef impute_missing_numerical_values(data):\n  \"\"\"Imputes missing values in numerical columns of a DataFrame.\n\n  Args:\n    data: The DataFrame to impute missing values in.\n\n  Returns:\n    A DataFrame with imputed missing values.\n  \"\"\"\n\n  # Select numerical columns\n  numerical_cols = data.select_dtypes(include='number').columns\n\n  # Create a SimpleImputer object with strategy='mean'\n  imputer = SimpleImputer(strategy='mean')\n\n  # Fit the imputer to the numerical columns and transform the data\n  imputed_data = imputer.fit_transform(data[numerical_cols])\n\n  # Assign imputed values back to the DataFrame (using boolean indexing)\n  data[numerical_cols] = pd.DataFrame(imputed_data, columns=numerical_cols)\n\n  return data\ntrain2 = impute_missing_numerical_values(train2)\n","metadata":{"execution":{"iopub.status.busy":"2024-10-22T11:35:51.374005Z","iopub.execute_input":"2024-10-22T11:35:51.374464Z","iopub.status.idle":"2024-10-22T11:35:51.713029Z","shell.execute_reply.started":"2024-10-22T11:35:51.374402Z","shell.execute_reply":"2024-10-22T11:35:51.712042Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from sklearn.impute import SimpleImputer\n\n# Get the unique values for categorical features only\nunique_values = {}\nfor column in train2.select_dtypes(include='object').columns:\n    unique_values[column] = train2[column].unique()\n\n# Print the unique values for categorical features\nfor feature, values in unique_values.items():\n    print(f\"Feature: {feature}\")\n    print(f\"Unique values: {values}\")\n    print()\n\n# Impute missing values in categorical columns using the most frequent value\nimputer = SimpleImputer(strategy='constant', fill_value='missing')\ntrain2[train2.select_dtypes(include='object').columns] = imputer.fit_transform(train2[train2.select_dtypes(include='object').columns])\n\n\nprint(train2.info())","metadata":{"execution":{"iopub.status.busy":"2024-10-22T11:35:51.714447Z","iopub.execute_input":"2024-10-22T11:35:51.714976Z","iopub.status.idle":"2024-10-22T11:35:51.761262Z","shell.execute_reply.started":"2024-10-22T11:35:51.714938Z","shell.execute_reply":"2024-10-22T11:35:51.760264Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Defining the seasonal values\nseasonal_values = ['Spring', 'Summer', 'Fall', 'Winter', 'missing']\n\n# Manually encode the seasonal features\nfor column in train2.select_dtypes(include='object').columns:\n    if set(train2[column].unique()).issubset(seasonal_values):\n        train2[column] = train2[column].map(\n            {value: i for i, value in enumerate(seasonal_values)}\n        )\n\n# Print the encoded DataFrame\ntrain2","metadata":{"execution":{"iopub.status.busy":"2024-10-22T11:35:51.762457Z","iopub.execute_input":"2024-10-22T11:35:51.762767Z","iopub.status.idle":"2024-10-22T11:35:51.813742Z","shell.execute_reply.started":"2024-10-22T11:35:51.762729Z","shell.execute_reply":"2024-10-22T11:35:51.812604Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"trainfinal=pd.concat([train2, train3], axis=1)\ntrainfinal","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-10-22T11:35:51.815303Z","iopub.execute_input":"2024-10-22T11:35:51.815788Z","iopub.status.idle":"2024-10-22T11:35:51.852691Z","shell.execute_reply.started":"2024-10-22T11:35:51.815739Z","shell.execute_reply":"2024-10-22T11:35:51.851616Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import pandas as pd\n\ndef fill_missing_ordinal_values(data, target_column, imputation_strategy='mode'):\n    \"\"\"Fills missing values in an ordinal column based on the chosen imputation strategy.\n\n    Args:\n        data: The DataFrame containing the data.\n        target_column: The name of the ordinal column to impute.\n        imputation_strategy: The imputation strategy to use ('mean' or 'mode').\n\n    Returns:\n        A DataFrame with imputed missing values in the specified column.\n    \"\"\"\n    # Create a copy of the data to avoid modifying the original\n    data_copy = data.copy()\n\n    # Choose the imputation strategy\n    if imputation_strategy == 'mean':\n        # Compute the mean of non-null values\n        mean_value = data_copy[target_column].mean()\n        # Fill missing values with the mean\n        data_copy[target_column].fillna(mean_value, inplace=True)\n    elif imputation_strategy == 'mode':\n        # Compute the mode of non-null values\n        mode_value = data_copy[target_column].mode()[0]  # Mode returns a Series, take the first value\n        # Fill missing values with the mode\n        data_copy[target_column].fillna(mode_value, inplace=True)\n    else:\n        raise ValueError(\"Invalid imputation strategy. Please choose 'mean' or 'mode'.\")\n\n    return data_copy\n# Impute missing values in the ordinal column using the 'mode' strategy\ndata_imputed = fill_missing_ordinal_values(trainfinal, \"sii\", imputation_strategy=\"mode\")\n\n# Print the imputed data\ndata_imputed.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-10-22T11:35:51.854166Z","iopub.execute_input":"2024-10-22T11:35:51.854615Z","iopub.status.idle":"2024-10-22T11:35:51.886717Z","shell.execute_reply.started":"2024-10-22T11:35:51.854578Z","shell.execute_reply":"2024-10-22T11:35:51.885555Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"data_imputed['sii'].value_counts()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-10-22T11:35:51.888012Z","iopub.execute_input":"2024-10-22T11:35:51.888388Z","iopub.status.idle":"2024-10-22T11:35:51.897278Z","shell.execute_reply.started":"2024-10-22T11:35:51.888326Z","shell.execute_reply":"2024-10-22T11:35:51.896083Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Identifing mismatched feature from test and train data\nmismatched_features = set(data_imputed.columns) - set(TestData.columns)\n\n# Handlig  missing features \nif mismatched_features:\n    #  Drop mismatched features\n    data_imputed1 = data_imputed.drop(columns=mismatched_features)\n    # Check if mismatched features exist in TestData\n    existing_features = set(TestData.columns) & mismatched_features  # Intersection\n    # Drop only features that actually exist\n    test_datanew = TestData.drop(columns=list(existing_features))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-10-22T11:35:51.898854Z","iopub.execute_input":"2024-10-22T11:35:51.899243Z","iopub.status.idle":"2024-10-22T11:35:51.909261Z","shell.execute_reply.started":"2024-10-22T11:35:51.899193Z","shell.execute_reply":"2024-10-22T11:35:51.908140Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"data_imputed1.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-10-22T11:35:51.910661Z","iopub.execute_input":"2024-10-22T11:35:51.911001Z","iopub.status.idle":"2024-10-22T11:35:51.940648Z","shell.execute_reply.started":"2024-10-22T11:35:51.910967Z","shell.execute_reply":"2024-10-22T11:35:51.939090Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.ensemble import RandomForestClassifier\nfrom sklearn.metrics import classification_report, confusion_matrix, roc_auc_score\nfrom imblearn.over_sampling import SMOTE\nfrom imblearn.under_sampling import RandomUnderSampler\nfrom imblearn.combine import SMOTEENN\nfrom imblearn.ensemble import BalancedRandomForestClassifier\nfrom sklearn.utils.class_weight import compute_class_weight\nfrom sklearn.preprocessing import LabelEncoder\n\n# Example dataset\nX = data_imputed1\ny = data_imputed['sii']\n\n# Encode target labels\nle = LabelEncoder()\ny_encoded = le.fit_transform(y)\n\n# Split the dataset\nX_train, X_test, y_train, y_test = train_test_split(X, y_encoded, test_size=0.3, random_state=42, stratify=y_encoded)\n\n# Baseline model\ndef baseline_model(X_train, y_train, X_test, y_test):\n    model = RandomForestClassifier(random_state=42)\n    model.fit(X_train, y_train)\n    y_pred = model.predict(X_test)\n    evaluate_model(\"Baseline RandomForest\", y_test, y_pred)\n\ndef evaluate_model(name, y_test, y_pred):\n    print(f\"\\n{name}\")\n    print(\"Confusion Matrix:\\n\", confusion_matrix(y_test, y_pred))\n    \n    # Convert class labels to strings\n    target_names = [str(cls) for cls in le.classes_]\n    \n    # Generate classification report with string labels\n    print(\"\\nClassification Report:\\n\", classification_report(y_test, y_pred, target_names=target_names))\n    \n    # ROC-AUC can be used for multi-class\n    try:\n        roc_auc = roc_auc_score(y_test, model.predict_proba(X_test), multi_class='ovr')\n        print(f\"ROC-AUC: {roc_auc}\")\n    except:\n        print(\"ROC-AUC not available\")\n\n# Technique 1: SMOTE (Oversampling)\ndef smote_oversample(X_train, y_train, X_test, y_test):\n    smote = SMOTE(random_state=42)\n    X_train_res, y_train_res = smote.fit_resample(X_train, y_train)\n    model = RandomForestClassifier(random_state=42)\n    model.fit(X_train_res, y_train_res)\n    y_pred = model.predict(X_test)\n    evaluate_model(\"SMOTE Oversampling\", y_test, y_pred)\n\n# Technique 2: Random UnderSampler\ndef random_undersample(X_train, y_train, X_test, y_test):\n    undersample = RandomUnderSampler(random_state=42)\n    X_train_res, y_train_res = undersample.fit_resample(X_train, y_train)\n    model = RandomForestClassifier(random_state=42)\n    model.fit(X_train_res, y_train_res)\n    y_pred = model.predict(X_test)\n    evaluate_model(\"Random Undersampling\", y_test, y_pred)\n\n# Technique 3: Class Weights\ndef class_weight_model(X_train, y_train, X_test, y_test):\n    class_weights = compute_class_weight('balanced', classes=np.unique(y_train), y=y_train)\n    model = RandomForestClassifier(class_weight=dict(enumerate(class_weights)), random_state=42)\n    model.fit(X_train, y_train)\n    y_pred = model.predict(X_test)\n    evaluate_model(\"Class Weights\", y_test, y_pred)\n\n# Technique 4: SMOTE + ENN (Hybrid)\ndef smote_enn_combination(X_train, y_train, X_test, y_test):\n    smote_enn = SMOTEENN(random_state=42)\n    X_train_res, y_train_res = smote_enn.fit_resample(X_train, y_train)\n    model = RandomForestClassifier(random_state=42)\n    model.fit(X_train_res, y_train_res)\n    y_pred = model.predict(X_test)\n    evaluate_model(\"SMOTE + ENN\", y_test, y_pred)\n\n# Technique 5: BalancedRandomForest\ndef balanced_random_forest(X_train, y_train, X_test, y_test):\n    model = BalancedRandomForestClassifier(random_state=42)\n    model.fit(X_train, y_train)\n    y_pred = model.predict(X_test)\n    evaluate_model(\"Balanced RandomForest\", y_test, y_pred)\n\n# Run models\nbaseline_model(X_train, y_train, X_test, y_test)\nsmote_oversample(X_train, y_train, X_test, y_test)\nrandom_undersample(X_train, y_train, X_test, y_test)\nclass_weight_model(X_train, y_train, X_test, y_test)\nsmote_enn_combination(X_train, y_train, X_test, y_test)\nbalanced_random_forest(X_train, y_train, X_test, y_test)\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-10-22T11:35:51.942170Z","iopub.execute_input":"2024-10-22T11:35:51.942574Z","iopub.status.idle":"2024-10-22T11:36:02.170593Z","shell.execute_reply.started":"2024-10-22T11:35:51.942527Z","shell.execute_reply":"2024-10-22T11:36:02.169411Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"\nimport imblearn\nfrom imblearn.over_sampling import SMOTE\n# Example dataset\nX = data_imputed1\ny = data_imputed['sii']\n\nsmote = SMOTE(random_state=42)\nX_balanced, y_balanced = smote.fit_resample(X, y)\n\ny_balanced.value_counts()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-10-22T11:36:02.172140Z","iopub.execute_input":"2024-10-22T11:36:02.172783Z","iopub.status.idle":"2024-10-22T11:36:02.218139Z","shell.execute_reply.started":"2024-10-22T11:36:02.172731Z","shell.execute_reply":"2024-10-22T11:36:02.217116Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import pandas as pd\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier, GradientBoostingClassifier, ExtraTreesClassifier, VotingClassifier\nfrom sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, classification_report\n\n\n# Split data into training and testing sets\nX_train, X_test, y_train, y_test = train_test_split(X_balanced, y_balanced, test_size=0.2, random_state=42)\n\n# Define individual models\nrf_model = RandomForestClassifier(random_state=42)\nada_model = AdaBoostClassifier(random_state=42)\ngb_model = GradientBoostingClassifier(random_state=42)\net_model = ExtraTreesClassifier(random_state=42)\n\n# Create ensemble models (voting, averaging, stacking)\nvoting_model = VotingClassifier(estimators=[('rf', rf_model), ('ada', ada_model), ('gb', gb_model), ('et', et_model)], voting='hard')\n# averaging_model = AveragingClassifier(estimators=[rf_model, ada_model, gb_model, et_model])  # Requires installation of scikit-learn-contrib-ensemble\n# stacking_model = StackingClassifier(estimators=[('rf', rf_model), ('ada', ada_model), ('gb', gb_model)], final_estimator=LogisticRegression())  # Requires installation of scikit-learn-contrib-ensemble\n\n# Train models\nmodels = [rf_model, ada_model, gb_model, et_model, voting_model]  # Add averaging_model and stacking_model if installed\nfor model in models:\n    model.fit(X_train, y_train)\n\n# Make predictions\npredictions = {}\nfor model in models:\n    predictions[model.__class__.__name__] = model.predict(X_test)\n\n# Evaluate metrics\nfor model_name, y_pred in predictions.items():\n    accuracy = accuracy_score(y_test, y_pred)\n    precision = precision_score(y_test, y_pred, average='weighted')\n    recall = recall_score(y_test, y_pred, average='weighted')\n    f1 = f1_score(y_test, y_pred, average='weighted')\n\n    print(f\"\\n{model_name}\")\n    print(\"Accuracy:\", accuracy)\n    print(\"Precision:\", precision)\n    print(\"Recall:\", recall)\n    print(\"F1-score:\", f1)\n    print(classification_report(y_test, y_pred))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-10-22T11:36:02.219609Z","iopub.execute_input":"2024-10-22T11:36:02.220489Z","iopub.status.idle":"2024-10-22T11:37:55.761474Z","shell.execute_reply.started":"2024-10-22T11:36:02.220441Z","shell.execute_reply":"2024-10-22T11:37:55.760197Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def fill_missing_values(TestData):\n\n# Identify categorical and numerical columns\n    categorical_cols = TestData.select_dtypes(include=['object']).columns\n    numerical_cols = TestData.select_dtypes(include=['number']).columns\n  # Fill missing values in categorical columns with 'missing'\n    TestData[categorical_cols] = TestData[categorical_cols].fillna('missing')\n\n  # Fill missing values in numerical columns with the mean\n    TestData[numerical_cols] = TestData[numerical_cols].fillna(TestData[numerical_cols].mean())\n\n    return TestData\n\n# Example usage\n\ntest1 = fill_missing_values(TestData)\nprint(test1.info())","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-10-22T11:37:55.762844Z","iopub.execute_input":"2024-10-22T11:37:55.763194Z","iopub.status.idle":"2024-10-22T11:37:55.818034Z","shell.execute_reply.started":"2024-10-22T11:37:55.763156Z","shell.execute_reply":"2024-10-22T11:37:55.816920Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Defining the seasonal values\nseasonal_values1 = ['Spring', 'Summer', 'Fall', 'Winter', 'missing']\n\n# Manually encode the seasonal features\nfor column in test1.select_dtypes(include='object').columns:\n    if set(test1[column].unique()).issubset(seasonal_values1):\n        test1[column] = test1[column].map(\n            {value: i for i, value in enumerate(seasonal_values1)}\n        )\n\n# Print the encoded DataFrame\ntest1.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-10-22T11:37:55.819484Z","iopub.execute_input":"2024-10-22T11:37:55.819943Z","iopub.status.idle":"2024-10-22T11:37:55.858685Z","shell.execute_reply.started":"2024-10-22T11:37:55.819893Z","shell.execute_reply":"2024-10-22T11:37:55.857605Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"testfinal=test1.drop('id',axis=1)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-10-22T11:37:55.860017Z","iopub.execute_input":"2024-10-22T11:37:55.860468Z","iopub.status.idle":"2024-10-22T11:37:55.868522Z","shell.execute_reply.started":"2024-10-22T11:37:55.860430Z","shell.execute_reply":"2024-10-22T11:37:55.867264Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"prediction =rf_model.predict(testfinal)\nprediction","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-10-22T11:37:55.869919Z","iopub.execute_input":"2024-10-22T11:37:55.870257Z","iopub.status.idle":"2024-10-22T11:37:55.894187Z","shell.execute_reply.started":"2024-10-22T11:37:55.870221Z","shell.execute_reply":"2024-10-22T11:37:55.892982Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"sub = pd.read_csv('/kaggle/input/child-mind-institute-problematic-internet-use/sample_submission.csv')\nsub['sii'] = prediction\nsub.to_csv('submission.csv', index=False)","metadata":{"trusted":true},"outputs":[],"execution_count":null}]}