{"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"},{"sourceId":9442759,"sourceType":"datasetVersion","datasetId":5738511}],"dockerImageVersionId":30761,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"!pip install flaml --no-index --find-links=file:///kaggle/input/environments/FLAML-2.3.0-py3-none-any.whl\n# !pip install grapcio --no-index --find-links=file:///kaggle/input/environments/ray-2.4.0-cp310-cp310-manylinux2014_x86_64.whl\n!pip install ray --no-index --find-links=file:///kaggle/input/environments/ray-2.4.0-cp310-cp310-manylinux2014_x86_64.whl","metadata":{"execution":{"iopub.status.busy":"2024-09-20T12:52:20.078836Z","iopub.execute_input":"2024-09-20T12:52:20.079266Z","iopub.status.idle":"2024-09-20T12:52:45.997911Z","shell.execute_reply.started":"2024-09-20T12:52:20.079223Z","shell.execute_reply":"2024-09-20T12:52:45.996648Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import pandas as pd\nimport lightgbm as lgb\n# explicitly require this experimental feature\nfrom sklearn.experimental import enable_iterative_imputer  # noqa\n# now you can import normally from sklearn.impute\nfrom sklearn.impute import IterativeImputer\nimport numpy as np\nfrom flaml import AutoML\nfrom sklearn.metrics import cohen_kappa_score\n\n# le = LabelEncoder()\n\ndf_train = pd.read_csv(\"/kaggle/input/child-mind-institute-problematic-internet-use/train.csv\")\ndf_test = pd.read_csv(\"/kaggle/input/child-mind-institute-problematic-internet-use/test.csv\")\nfeatures = df_test.columns.tolist()\nfeatures.remove(\"id\")\n#\ndf_train = df_train[~df_train[\"sii\"].isna()]\n# train_X = df_train[features]\n# train_y = df_train[\"sii\"]\n# target_columns = [x for x in df_train.columns if x not in df_test.columns]\n\n# train_withoutlabel = df_train[]\n# df_train = df_train[~df_train[\"sii\"].isna()]\n# train_X = df_train.drop([\"sii\", \"id\"], axis=1)\n# train_y = df_train[\"sii\"]\n\n# cat_features = []\n# for col in train_X.columns:\n#     if len(train_X[col].dropna().unique()) <= 10:\n#         cat_features.append(col)\n        \n# for col in cat_features:\n#     original = train_X[col].copy()\n#     mask = original.isnull()\n#     train_X[col] = le.fit_transform(train_X[col])\n#     train_X[col] = train_X[col].where(~mask, np.nan)\n        \n# train_data = lgb.Dataset(train_X, label=train_y, categorical_feature=cat_features)\n# param = {'num_leaves': 31, 'objective': 'multiclass', 'num_class': 4}\n# param['metric'] = 'multi_logloss'\n# # lgb.cv(param, train_data, nfold=5)\n# bst = lgb.train(param, train_data)\n# train_pred = bst.predict(train_X)\nall_features = pd.concat([\n    df_train[features], df_test[features]\n])\ncat_features = []\nfor col in all_features.columns:\n    if len(all_features[col].dropna().unique()) <= 10:\n        cat_features.append(col)\nnum_features = [x for x in features if x not in cat_features]\n# preprocessing\nimp_mean = IterativeImputer(random_state=2024)\nimp_mean.fit(all_features[num_features])\nall_features[num_features] = imp_mean.transform(all_features[num_features])\n\nall_features[cat_features] = all_features[cat_features].astype(\"category\")\nn_train = len(df_train)\ntrain_features = all_features[:n_train]\ntest_features = all_features[n_train:]\ntrain_labels = df_train['sii']\n# train\ndef cal_cohen_kappa_score(\n    X_val,\n    y_val,\n    estimator,\n    labels,\n    X_train,\n    y_train,\n    weight_val=None,\n    weight_train=None,\n    *args,\n):\n    import time\n\n    start = time.time()\n    y_pred = estimator.predict(X_val)\n    pred_time = (time.time() - start) / len(X_val)\n    val_loss = cohen_kappa_score(y_val, y_pred, labels=labels, sample_weight=weight_val, weights=\"quadratic\")\n    y_pred = estimator.predict(X_train)\n    train_loss = cohen_kappa_score(y_train, y_pred, labels=labels, sample_weight=weight_train, weights=\"quadratic\")\n    return -val_loss, {\n        \"val_loss\": -val_loss,\n        \"train_loss\": -train_loss,\n        \"pred_time\": pred_time,\n    }\n\nautoml = AutoML()\nautoml_settings = {\n    \"time_budget\": 100, \n    \"task\": 'classification', \n    'n_jobs': -1, \n    'metric': cal_cohen_kappa_score, \n    'eval_method': 'cv', \n#     \"estimator_list\": [\"lgbm\"], \n    \"fit_kwargs_by_estimator\": {\n        \"lgbm\": {\n            \"categorical_feature\": cat_features\n        }\n    }\n}\nautoml.fit(X_train=train_features, y_train=train_labels, **automl_settings)\ntest_pred = automl.predict(test_features)\nsample = pd.read_csv(\"/kaggle/input/child-mind-institute-problematic-internet-use/sample_submission.csv\")\nsample[\"sii\"] = test_pred\nsample.to_csv(\"submission.csv\", index=False)","metadata":{"execution":{"iopub.status.busy":"2024-09-20T12:53:14.483077Z","iopub.execute_input":"2024-09-20T12:53:14.483475Z","iopub.status.idle":"2024-09-20T12:55:05.327222Z","shell.execute_reply.started":"2024-09-20T12:53:14.483435Z","shell.execute_reply":"2024-09-20T12:55:05.326169Z"},"trusted":true},"execution_count":null,"outputs":[]}]}