{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.7.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":5056,"databundleVersionId":868325,"sourceType":"competition"}],"dockerImageVersionId":30170,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"\nimport os\n# for dirname, _, filenames in os.walk('/kaggle/input'):\n#     for filename in filenames:\n#         print(os.path.join(dirname, filename))\n# pandas\nimport pandas as pd\nfrom pandas import Series,DataFrame\n\n# numpy, matplotlib, seaborn\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nsns.set_style('whitegrid')\n%matplotlib inline\n\n# machine learning\nfrom sklearn.linear_model import LogisticRegression\nfrom sklearn.svm import SVC, LinearSVC\nfrom sklearn.ensemble import RandomForestClassifier\nfrom sklearn.neighbors import KNeighborsClassifier\nfrom sklearn.naive_bayes import GaussianNB\nimport xgboost as xgb","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2024-09-07T20:57:50.760418Z","iopub.execute_input":"2024-09-07T20:57:50.761066Z","iopub.status.idle":"2024-09-07T20:57:50.772808Z","shell.execute_reply.started":"2024-09-07T20:57:50.761021Z","shell.execute_reply":"2024-09-07T20:57:50.771893Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# get expedia & test csv files as a DataFrame\nexpedia_df = pd.read_csv('../input/expedia-hotel-recommendations/train.csv', nrows=10000)\n\n\n# preview the data\nexpedia_df.head() ","metadata":{"execution":{"iopub.status.busy":"2024-09-07T21:16:35.43629Z","iopub.execute_input":"2024-09-07T21:16:35.436661Z","iopub.status.idle":"2024-09-07T21:16:35.494174Z","shell.execute_reply.started":"2024-09-07T21:16:35.436624Z","shell.execute_reply":"2024-09-07T21:16:35.493275Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"expedia_df.isnull().sum()","metadata":{"execution":{"iopub.status.busy":"2024-09-07T20:57:58.824683Z","iopub.execute_input":"2024-09-07T20:57:58.825037Z","iopub.status.idle":"2024-09-07T20:57:58.839462Z","shell.execute_reply.started":"2024-09-07T20:57:58.824989Z","shell.execute_reply":"2024-09-07T20:57:58.838558Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\n\n# Function for filling missing values with group-wise mean or median\ndef fill_missing_distance(expedia_df, strategy='mean'):\n    if strategy == 'mean':\n        expedia_df['orig_destination_distance'] = expedia_df.groupby(['user_location_country', 'hotel_market'])['orig_destination_distance'].transform(lambda x: x.fillna(x.mean()))\n    elif strategy == 'median':\n        expedia_df['orig_destination_distance'] = expedia_df.groupby(['user_location_country', 'hotel_market'])['orig_destination_distance'].transform(lambda x: x.fillna(x.median()))\n    return expedia_df\n\nexpedia_df = fill_missing_distance(expedia_df, strategy='mean')\n","metadata":{"execution":{"iopub.status.busy":"2024-09-07T20:57:58.840871Z","iopub.execute_input":"2024-09-07T20:57:58.841195Z","iopub.status.idle":"2024-09-07T20:57:59.242457Z","shell.execute_reply.started":"2024-09-07T20:57:58.84115Z","shell.execute_reply":"2024-09-07T20:57:59.241441Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"expedia_df = expedia_df.dropna(subset=['orig_destination_distance'])\nexpedia_df = expedia_df.drop(['srch_ci','srch_co'], axis=1)","metadata":{"execution":{"iopub.status.busy":"2024-09-07T20:57:59.244513Z","iopub.execute_input":"2024-09-07T20:57:59.244799Z","iopub.status.idle":"2024-09-07T20:57:59.256292Z","shell.execute_reply.started":"2024-09-07T20:57:59.244759Z","shell.execute_reply":"2024-09-07T20:57:59.255134Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df=expedia_df","metadata":{"execution":{"iopub.status.busy":"2024-09-07T20:57:59.25759Z","iopub.execute_input":"2024-09-07T20:57:59.25787Z","iopub.status.idle":"2024-09-07T20:57:59.263045Z","shell.execute_reply.started":"2024-09-07T20:57:59.257826Z","shell.execute_reply":"2024-09-07T20:57:59.262066Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_data = pd.read_csv(\"/kaggle/input/expedia-hotel-recommendations/test.csv\")\ndef fill_missing_distance(test_data, strategy='mean'):\n    if strategy == 'mean':\n        test_data['orig_destination_distance'] =test_data.groupby(['user_location_country', 'hotel_market'])['orig_destination_distance'].transform(lambda x: x.fillna(x.mean()))\n    elif strategy == 'median':\n        test_data['orig_destination_distance'] =test_data.groupby(['user_location_country', 'hotel_market'])['orig_destination_distance'].transform(lambda x: x.fillna(x.median()))\n    return test_data\n\ntest_data = fill_missing_distance(test_data, strategy='mean')\n","metadata":{"execution":{"iopub.status.busy":"2024-09-07T21:18:08.086217Z","iopub.execute_input":"2024-09-07T21:18:08.08721Z","iopub.status.idle":"2024-09-07T21:18:33.073882Z","shell.execute_reply.started":"2024-09-07T21:18:08.08716Z","shell.execute_reply":"2024-09-07T21:18:33.07302Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_data = test_data.dropna(subset=['orig_destination_distance'])\ntest_data = test_data.drop(['srch_ci','srch_co'], axis=1)","metadata":{"execution":{"iopub.status.busy":"2024-09-07T21:18:54.86721Z","iopub.execute_input":"2024-09-07T21:18:54.867565Z","iopub.status.idle":"2024-09-07T21:18:55.406427Z","shell.execute_reply.started":"2024-09-07T21:18:54.867528Z","shell.execute_reply":"2024-09-07T21:18:55.405665Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"desired_columns = ['user_location_country', 'user_location_region', 'user_location_city', 'orig_destination_distance', 'user_id', 'srch_destination_type_id', 'hotel_market', 'hotel_country']\ndf1 = df[desired_columns]  # Select columns using a list within square brackets hotel ki country","metadata":{"execution":{"iopub.status.busy":"2024-09-07T21:22:25.711559Z","iopub.execute_input":"2024-09-07T21:22:25.711868Z","iopub.status.idle":"2024-09-07T21:22:25.718871Z","shell.execute_reply.started":"2024-09-07T21:22:25.711835Z","shell.execute_reply":"2024-09-07T21:22:25.717726Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import pandas as pd\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.ensemble import RandomForestClassifier\n\n\ntrain_data = df1\n\n\n# Feature engineering (if necessary)\n# ...\n\n# Prepare features and target variable for training data\nX_train = train_data[['user_location_country', 'user_location_region', 'user_location_city', 'orig_destination_distance', 'user_id', 'srch_destination_type_id', 'hotel_country', 'hotel_market']]\ny_train = train_data['hotel_country']\n\n# Prepare features and target variable for testing data\nX_test = test_data[['user_location_country', 'user_location_region', 'user_location_city', 'orig_destination_distance', 'user_id', 'srch_destination_type_id', 'hotel_country', 'hotel_market']]\ny_test = test_data['hotel_country']\n\n# Create and train a Random Forest model (adjust parameters as needed)\nmodel = RandomForestClassifier(n_estimators=100, random_state=42)\nmodel.fit(X_train, y_train)\n\n# Make predictions on the testing   \n\ny_pred = model.predict(X_test) ## hotel ki country kya hai\n","metadata":{"execution":{"iopub.status.busy":"2024-09-07T21:22:54.133178Z","iopub.execute_input":"2024-09-07T21:22:54.134124Z","iopub.status.idle":"2024-09-07T21:24:39.340079Z","shell.execute_reply.started":"2024-09-07T21:22:54.134073Z","shell.execute_reply":"2024-09-07T21:24:39.339078Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_pred","metadata":{"execution":{"iopub.status.busy":"2024-09-07T21:33:13.903608Z","iopub.execute_input":"2024-09-07T21:33:13.904771Z","iopub.status.idle":"2024-09-07T21:33:13.912201Z","shell.execute_reply.started":"2024-09-07T21:33:13.904723Z","shell.execute_reply":"2024-09-07T21:33:13.911261Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"desired_columns = ['srch_adults_cnt', 'srch_children_cnt', 'srch_rm_cnt', 'srch_destination_type_id','hotel_country', 'hotel_cluster']\ndf2 = df[desired_columns]\n\n","metadata":{"execution":{"iopub.status.busy":"2024-09-07T21:51:02.106274Z","iopub.execute_input":"2024-09-07T21:51:02.106715Z","iopub.status.idle":"2024-09-07T21:51:02.116823Z","shell.execute_reply.started":"2024-09-07T21:51:02.106668Z","shell.execute_reply":"2024-09-07T21:51:02.115075Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import pandas as pd\nfrom sklearn.cluster import KMeans\n\n# Load your training and testing datasets\ntrain_data = df2\n\n# Feature engineering (if necessary)\n# ...\n\n# Prepare features for training data\nX_train = train_data[['srch_adults_cnt', 'srch_children_cnt', 'srch_rm_cnt', 'srch_destination_type_id', 'hotel_country']]\ny_train = train_data['hotel_cluster']\n\n# Prepare features for testing data\nX_test = test_data[['srch_adults_cnt', 'srch_children_cnt', 'srch_rm_cnt', 'srch_destination_type_id', 'hotel_country']]\ny_test = test_data['hotel_cluster']\n\n# Train the K-Means model (adjust parameters as needed)\nkmeans = KMeans(n_clusters=optimal_num_clusters, random_state=42)\nkmeans.fit(X_train)\n\ntrain_data['hotel_cluster'] = kmeans.labels_\ntest_data['hotel_cluster'] = kmeans.predict(X_test)\n# ... (rest of your code for analysis and recommendations)","metadata":{"execution":{"iopub.status.busy":"2024-09-07T22:12:40.9239Z","iopub.execute_input":"2024-09-07T22:12:40.925001Z","iopub.status.idle":"2024-09-07T22:12:41.00614Z","shell.execute_reply.started":"2024-09-07T22:12:40.924936Z","shell.execute_reply":"2024-09-07T22:12:41.004887Z"},"trusted":true},"execution_count":null,"outputs":[]}]}