{ "metadata": { "kernelspec": { "name": "python", "display_name": "Python (Pyodide)", "language": "python" }, "language_info": { "codemirror_mode": { "name": "python", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8" } }, "nbformat_minor": 5, "nbformat": 4, "cells": [ { "id": "dfb1e3f9", "cell_type": "code", "source": "import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nfrom sklearn.ensemble import RandomForestClassifier\n\n# Load your dataset; replace 'your_data.csv' with your actual dataset file\ndata = pd.read_csv(r'C:\\Users\\HP\\OneDrive\\Desktop\\ConStudents\\NewUpdate\\ALL_SummaryV2\\merged_file1.csv')\n\n# Assuming you have a binary target variable named 'LABEL'\nX = data.drop('LABEL', axis=1)\ny = data['LABEL']\n\n# Initialize a Random Forest classifier\nclf = RandomForestClassifier(n_estimators=100, random_state=42)\n\n# Fit the model to your data\nclf.fit(X, y)\n\n# Get feature importances from the model\nfeature_importances = clf.feature_importances_\n\n# Sort features by importance in descending order\nsorted_indices = np.argsort(feature_importances)[::-1]\n\n# Select the top N most important features\nnum_features = 5 # Change this to the number of features you want to visualize\ntop_feature_indices = sorted_indices[:num_features]\ntop_feature_names = X.columns[top_feature_indices]\ntop_feature_importances = feature_importances[top_feature_indices]\n\n# Create a vertical bar chart to visualize feature importances\ncolors = plt.cm.viridis(np.linspace(0, 1, num_features))\nplt.figure(figsize=(10, 6))\nplt.bar(top_feature_names, top_feature_importances, color=colors)\nplt.xlabel('Features')\nplt.ylabel('Feature Importance')\nplt.title('Top {} Most Important Features'.format(num_features))\nplt.xticks(rotation=45, ha=\"right\")\nplt.tight_layout()\nplt.show()", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAJOCAYAAACqS2TfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABeb0lEQVR4nO3dd3RU1d7G8WfSCSWUQCgGCEV6M4hSIhcQEKRKCdIRlGqkqHQQELgiIB2UFhEEVJB2kSICFxVFIFKk2EJPCEU6CSn7/cObeRkTMCM5DIHvZ61Zy9lnn5PfmRxDnpy997EZY4wAAAAAAEC6c3N1AQAAAAAAPKwI3QAAAAAAWITQDQAAAACARQjdAAAAAABYhNANAAAAAIBFCN0AAAAAAFiE0A0AAAAAgEUI3QAAAAAAWITQDQAAAACARQjdAACn2Gy2NL22bdtmeS2FCxdO9Wv36NHjb/c9duyYvf9bb72Vap+XXnrJ3scq48aN06pVq9Lc32azqU+fPpbVY7VDhw7prbfe0rFjx+7L1/snn29qL39//wemRgBAxmIzxhhXFwEAyDi+++47h/djxozR1q1b9dVXXzm0ly5dWtmyZbO0lsKFC+uxxx7TxIkTHdoDAgIUFBR0132PHTumoKAgZc2aVTlz5tTvv/8uN7f//1v0tWvXlC9fPrm5uenKlSuy6p/LLFmyqGXLlgoPD09Tf5vNpt69e2vGjBmW1GO1zz77TK1atdLWrVv1r3/9y/Kv908+35YtW2rAgAEO7Z6engoODragQudrBABkLB6uLgAAkLE8/fTTDu9z584tNze3FO33S/bs2e/pa4eGhmrevHnasmWL6tata29fvny5EhMT1axZMy1evDg9Sn2kxcfHWzpiID0FBAS47HpOTzdv3lSmTJlcXQYAPPIYXg4ASHcXL15Ur169VKBAAXl5ealIkSIaOnSo4uLiHPolD5V+//339fjjj8vb21ulS5fWsmXL7lutJUqUULVq1bRgwQKH9gULFuiFF16Qn59fin2SkpI0YcIElSxZUt7e3sqTJ486duyoU6dOOfSLiIhQo0aNlCdPHnl7eyt//vx6/vnn7f1sNpuuX7+uDz/80D6M2dm7v9u2bZPNZtPHH3+sgQMHKl++fMqSJYsaN26ss2fP6urVq3rllVfk7+8vf39/denSRdeuXXM4hjPfh4MHD6pp06bKkSOHfHx8VLFiRX344Yep1vTRRx9pwIABKlCggLy9vTVv3jy1atVKklSrVi37OSff4d28ebOaNm2qxx57TD4+PipWrJi6d++u8+fPOxz/rbfeks1m008//aQXX3xRfn5+CggI0EsvvaTLly87nNe9fr6p+eWXX9S2bVv797VUqVKaOXOmQ5/Y2FgNGDBAFStWlJ+fn3LmzKmqVatq9erVDv3uVmPyef5VeHi4bDabwxD9woULq1GjRlq5cqUqVaokHx8fjRo1SpIUHR2t7t2767HHHpOXl5eCgoI0atQoJSQkOBx39uzZqlChgrJkyaKsWbOqZMmSGjJkyD1/XgDwqONONwAgXcXGxqpWrVr67bffNGrUKJUvX147duzQ+PHj9eOPP+o///mPQ/81a9Zo69atGj16tDJnzqxZs2bpxRdflIeHh1q2bPm3X++///2vsmbNqtjYWBUvXlxdu3ZV37595e7unuaau3btqt69e+uPP/5Qjhw5dPToUX377bd6++23tWLFihT9e/bsqQ8++EB9+vRRo0aNdOzYMQ0fPlzbtm3T3r175e/vr+vXr6tu3boKCgrSzJkzFRAQoOjoaG3dulVXr16VJO3cuVO1a9dWrVq1NHz4cEn6x0PyhwwZolq1aik8PFzHjh3T66+/bv8cK1SooKVLlyoiIkJDhgxR1qxZNW3aNIf90/J9OHr0qKpVq6Y8efJo2rRpypUrlxYvXqzOnTvr7NmzevPNNx2OOXjwYFWtWlVz5syRm5ubKleurD/++ENDhgzRzJkz9cQTT0iSihYtKkn67bffVLVqVXXr1k1+fn46duyYJk+erBo1aujAgQPy9PR0OH6LFi0UGhqqrl276sCBAxo8eLAk2f+A8k8/X2NMikDq7u4um82mQ4cOqVq1aipYsKAmTZqkvHnzauPGjQoLC9P58+c1cuRISVJcXJwuXryo119/XQUKFNCtW7f05Zdf6oUXXtDChQvVsWPHe6oxNXv37tXhw4c1bNgwBQUFKXPmzIqOjlaVKlXk5uamESNGqGjRotq5c6fefvttHTt2TAsXLpQkLVu2TL169dKrr76qiRMnys3NTb/++qsOHTr0j2oBANzGAABwDzp16mQyZ85sfz9nzhwjyXzyyScO/d555x0jyWzatMneJslkypTJREdH29sSEhJMyZIlTbFixf72a/fq1cssWLDAbN++3axatcq0a9fOSDLt27f/230jIyONJPPuu++aq1evmixZspgZM2YYY4x54403TFBQkElKSjK9e/c2t/9zefjwYSPJ9OrVy+F433//vZFkhgwZYowxZvfu3UaSWbVq1V3ryJw5s+nUqdPf1ptMkundu7f9/datW40k07hxY4d+ffv2NZJMWFiYQ3uzZs1Mzpw5UxwzLd+HNm3aGG9vb3PixAmH/Rs0aGB8fX3NpUuXHGp65plnUtT/6aefGklm69atdz3PpKQkEx8fb44fP24kmdWrV9u3jRw50kgyEyZMcNinV69exsfHxyQlJdnb/snnm9pr7ty5xhhj6tevbx577DFz+fJlh/369OljfHx8zMWLF1M9bkJCgomPjzddu3Y1lSpVcth2pxqTz/OvFi5caCSZyMhIe1uhQoWMu7u7OXr0qEPf7t27myxZspjjx487tE+cONFIMj/99JO9/uzZs6f+oQAA7gnDywEA6eqrr75S5syZU9yl7ty5syRpy5YtDu116tRRQECA/b27u7tCQ0P166+/phiu/VczZ85Uly5d9Mwzz6hp06ZavHix+vTpo8WLFysiIiLNNWfJkkWtWrXSggULlJCQoEWLFqlLly6pDu3dunWrw/kkq1KlikqVKmU/v2LFiilHjhwaOHCg5syZY/kdw0aNGjm8L1WqlCTp+eefT9F+8eLFFEPM0/J9+Oqrr1SnTh0FBgY67Nu5c2fduHFDO3fudGhv0aKFU+cQExOjHj16KDAwUB4eHvL09FShQoUkSYcPH07Rv0mTJg7vy5cvr9jYWMXExDj1df+qdevW+uGHHxxezZo1U2xsrLZs2aLmzZvL19dXCQkJ9lfDhg0VGxvrsNDgp59+qurVqytLliz285k/f36q55Ieypcvr8cff9yhbd26dapVq5by58/vUG+DBg0kSdu3b5f05/V76dIlvfjii1q9enWKIf0AgH+O0A0ASFcXLlxQ3rx5UwTWPHnyyMPDQxcuXHBoz5s3b4pjJLf9tW9atG/fXlLKVdb/TteuXbV3716NHTtW586dSxGqkyXXlC9fvhTb8ufPb9/u5+en7du3q2LFihoyZIjKlCmj/Pnza+TIkYqPj3eqtrTImTOnw3svL6+7tsfGxjq0p+X7cOHChTue9+39kqXW906SkpJUr149rVy5Um+++aa2bNmiXbt22b+PN2/eTLFPrly5HN57e3vfsa8zcufOrcqVKzu8/P39deHCBSUkJGj69Ony9PR0eDVs2FCS7GF15cqVat26tQoUKKDFixdr586d+uGHH/TSSy+l+OzTS2qf99mzZ7V27doU9ZYpU8ah3g4dOmjBggU6fvy4WrRooTx58uipp57S5s2bLakVAB4lzOkGAKSrXLly6fvvv5cxxiF4x8TEKCEhIcXzjqOjo1McI7ntr6EqLcz/Hu11++O/0qJ69eoqUaKERo8erbp166a4m5ssuaaoqCg99thjDtvOnDnjcH7lypXTsmXLZIzR/v37FR4ertGjRytTpkwaNGiQU/VZLS3fh1y5cikqKipFvzNnzkhSiu+tM6uVHzx4UPv27VN4eLg6depkb//111/TfAyr5ciRQ+7u7urQoYN69+6dap/kR9UtXrxYQUFBWr58ucPn8NfFBO/Gx8fHvk/yHxQk3fEudGqft7+/v8qXL6+xY8emuk/yH0wkqUuXLurSpYuuX7+u//73vxo5cqQaNWqkn3/+2T7iAADgPEI3ACBd1alTR5988olWrVql5s2b29sXLVpk3367LVu26OzZs/ahzYmJiVq+fLmKFi2aItSmRfLX+SePfBo2bJg+++yzOwYqSapdu7akP0PVk08+aW//4YcfdPjwYQ0dOjTFPjabTRUqVNB7772n8PBw7d27177N29v7nu/Mpoe0fB/q1Kmjzz//XGfOnHEIa4sWLZKvr2+aPvM73Y1ODoy3h0tJev/99//5SSl9P19fX1/VqlVLERERKl++vH3UQGpsNpu8vLwcgnB0dHSK1cvvVmPhwoUlSfv373e41tauXZvmmhs1aqT169eraNGiypEjR5r2yZw5sxo0aKBbt26pWbNm+umnnwjdAHAPCN0AgHTVsWNHzZw5U506ddKxY8dUrlw5ff311xo3bpwaNmyoZ5991qG/v7+/ateureHDh9tXzT5y5MjfPjbs448/1sqVK/X888+rUKFCunTpkj799FMtW7ZMnTt3VoUKFZyuvX379vbh6XdSokQJvfLKK5o+fbrc3NzUoEED++rlgYGB6tevn6Q/59LOmjVLzZo1U5EiRWSM0cqVK3Xp0iWH54GXK1dO27Zt09q1a5UvXz5lzZpVJUqUcLr2e5WW78PIkSPtc4RHjBihnDlzasmSJfrPf/6jCRMm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Hh5KSkqyD99dsmSJ2rRpI3d3dxdXjUfdoUOH9N5772nv3r3q1auXunbtKsnx99bdu3ercuXKriwT9xnDy/HAeeKJJzRr1izlyJFDlSpV0tWrVyXJPtRckv79739r8+bNLKICl7p9Aaq6devq888/10cffaT+/fsrNjbWvi0uLk7du3dX37599fvvv7uiVECSlJCQoAIFCmjbtm06c+aMOnfurN9++02SHAL3jBkztGjRIleViUfcpUuXdP36dXtAyZw5s3r06KEWLVpo165dCgsLsw81T0pK0sGDB9WhQwf16tXLxZXjURQXF+ewtkDp0qXVp08fPfHEE5o5c6YWLlwo6c/pPMYYrVmzRlWqVNGyZctcVTJcgNANlztz5oy2b99u/4Fls9lUrlw5LViwQNmyZVOlSpV05coVeXp6KiEhQQkJCZo+fbqGDx/uEGyA++XIkSOKi4tzuKOSlJSk+vXr24P3a6+9Zr8+k4dHJiUlqXDhwi6qGo+qkydPasuWLUpKSrIH63z58unrr7/W6dOn1bFjR3vwlqRTp04pPDxcy5Yts//RE7hffv75Z+XPn18hISEKDQ3VF198oSNHjihbtmwaMGCAOnbsqD179qh379724F28eHGtXbtW/fv3d3X5eMQcOnRIFStWVPv27TV9+nQdPnxYklShQgUNHTpUlSpV0owZMzRv3jxJf/6OW716dQ0dOpTpPI8YhpfDpU6dOqWKFSvq4sWLCg4OVkhIiGrUqKGaNWsqV65c+umnn9S7d28dP35c+/fvtw81j42N1enTp1W0aFEXnwEeNZ9//rlatGihChUqaMSIESpWrJjKlSvn0Gfjxo1q3ry5OnTooPfee0++vr6S/n9o2e1DIgErnTlzRmXKlNHly5fVrFkzeXh4qGfPnsqfP79KlCih6Oho1a1bV9myZVN4eLiKFSsmm82mffv2KXv27EyHwH23aNEide7cWSVLlpS7u7t8fX11+PBhPffcc6patarq1q2rZcuW6YcfflCpUqU0ceJEpkXAZXr37q3Zs2fr8ccfV1RUlIoVK6abN2+qU6dOqlevnhITE/Xhhx9q79696tmzp9q3by9J/B7wCCJ0w6W+++479e/fX5cvX1bWrFlVqVIlffTRRwoKClJQUJBatmwpLy8vTZgwQW5ubtq2bZuyZMni6rLxCPv888/18ccfK2/evPZ1B9q3b69GjRrpiSeesPf74osv9MILL6hjx46aNWuW3N3dlZiYyHxD3FeHDx/WoEGDtGHDBrVp00aZMmXSunXrFB8fr7p166pmzZqqUqWKatWqpWeffVYjR45UqVKl+GUQ992pU6f02GOPSZI++OADjR8/Xt26dVPt2rV1/fp1rVq1SuvWrVPOnDkVExMjDw8PnThxQkOHDtWYMWNcXD0eNbf/e96uXTv99ttvateuncqVK6cNGzbohx9+0DfffKPatWvr9OnTSkxM1KlTp7Rw4UI1b97cxdXDFQjdcImLFy8qZ86ckqStW7dq1qxZunnzpgYMGKDy5cvru+++0/Tp03X9+nV9//33KlGihH766SfVqlVLX375JQuowWX279+vLl26aMaMGapSpYpWrlypWbNmyc3NTYGBgRo0aJACAgKUI0cOe/AeMGCA3n77bVeXjkdIZGSkzp07pypVqmjPnj2aOHGivvnmG3333Xfy9fXV1q1btWzZMu3du1eZM2fWpUuXdOLECXXo0EHz5s2Tp6enq08Bj5B9+/YpODhYn376qT2QTJo0SVOnTlX79u01aNAgZcuWTdKfi1ZGRERozZo1io6O1po1a1S6dGlXlo9HzK+//qovv/xSzz//vAIDA2WMUePGjRUVFaXBgwerZcuWkqS9e/dq165dWrdunXbv3q0bN25oz549Kl68uIvPAC5hgPvs7Nmzpl69embIkCH2to0bN5rGjRubmjVrmq+++srefvXqVbNq1SozduxY88wzz5i9e/e6omQ84jZu3Gi+/vpr+/u33nrLVK1a1Zw+fdoYY8zJkydNjhw5TNasWU3FihXNc889Zz788ENjjDEfffSRyZw5s9mzZ49LasejJyIiwthsNrNo0SKHtgYNGpiCBQuan376yRhjzI0bN4wxxnzyySdmwoQJJjg42Bw4cMAlNePR9eOPPxpfX1/77wSJiYn2bZMmTTL58+c3Q4cONb///rvDfpcuXTJXr169r7UCZ8+eNb6+viZTpkxm6tSp5tSpU/ZtTZs2NaVLlzYff/yxuXbtmsN+v/32m4mJibnf5eIBQujGfXf27FnTpUsXU61aNfP222/b27/88kvTuHFjU7t2bbNu3boU+93+DzFwv8yePdvYbDbz/fff29sOHDhg6tSpYw8vFSpUMHXr1jWXL182y5cvN23atDFV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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "execution_count": 1 }, { "id": "c6e99355", "cell_type": "code", "source": "\n# Load your dataset; replace 'your_data.csv' with your actual dataset file\ndata = pd.read_csv(r'C:\\Users\\HP\\OneDrive\\Desktop\\ConStudents\\NewUpdate\\ALL_SummaryV2\\merged_file1.csv')\n\n# Assuming you have a binary target variable named 'target_column'\nX = data.drop('LABEL', axis=1)\ny = data['LABEL']\n# Get feature importances from the model\nfeature_importances = clf.feature_importances_\n\n# Sort features by importance in descending order\nsorted_indices = np.argsort(feature_importances)[::-1]\n\n# Select the top N most important features\nnum_features = 5 # Change this to the number of features you want to visualize\ntop_feature_indices = sorted_indices[:num_features]\ntop_feature_names = X.columns[top_feature_indices]\ntop_feature_importances = feature_importances[top_feature_indices]\n\n# Get unique class values\nclass_values = np.unique(y)\n\n# Create a grouped bar chart to compare feature importances for each class\ncolors = plt.cm.viridis(np.linspace(0, 1, num_features))\nfig, ax = plt.subplots(figsize=(10, 6))\n\nbar_width = 0.15\nx = np.arange(len(class_values))\n\nfor i, feature in enumerate(top_feature_names):\n importance_by_class = []\n for c in class_values:\n importance = np.sum(top_feature_importances[i] * (y == c))\n importance_by_class.append(importance)\n bars = ax.bar(x + i * bar_width, importance_by_class, bar_width, label=feature, color=colors[i])\n \n # Add percentage labels to each bar\n total = sum(importance_by_class)\n for j, bar in enumerate(bars):\n percentage = (importance_by_class[j] / total) * 100\n ax.annotate(f'{percentage:.2f}%', (bar.get_x() + bar.get_width() / 2, bar.get_height()),\n ha='center', va='bottom', fontsize=8, color='black')\n\nax.set_xlabel('Classes')\nax.set_ylabel('Feature Importance')\nax.set_title(f'Top {num_features} Most Important Features by Class')\nax.set_xticks(x + 0.2)\nax.set_xticklabels([f'Class {class_val}' for class_val in class_values])\nax.legend(title='Features', loc='upper left')\nplt.tight_layout()\n\n# Create a separate legend for the features\nfeature_legend = ax.legend(title='Features', loc='upper right', bbox_to_anchor=(1, 1))\n\n# Add the feature legend to the plot\nax.add_artist(feature_legend)\n\nplt.show()\n\n\n\n\n\n", "metadata": {}, "outputs": [], "execution_count": null } ] }