{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "from sklearn.datasets import make_classification\n", "from sklearn.linear_model import LogisticRegression\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.metrics import roc_curve, auc\n", "from sklearn.preprocessing import OneHotEncoder\n", "from sklearn.tree import DecisionTreeClassifier\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "\n", "\n", "np.random.seed(4040)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# 生成训练数据\n", "n = 4000\n", "X, y = make_classification(n_samples=n, n_features=4)\n", "data = pd.DataFrame(X, columns=['x1', 'x2', 'x3', 'x4'])\n", "data['y'] = y" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# 分别使用逻辑回归、决策树和决策树+逻辑回归建模\n", "res = {}\n", "train_data, test_data = train_test_split(data, test_size=0.5)\n", "features = ['x1', 'x2', 'x3', 'x4']\n", "label = 'y'\n", "# 单独使用逻辑回归\n", "logit_model = LogisticRegression()\n", "logit_model.fit(train_data[features], train_data[label])\n", "logit_prob = logit_model.predict_proba(test_data[features])[:, 1]\n", "res['LR'] = roc_curve(test_data[label], logit_prob)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# 单独使用决策树\n", "dt_model = DecisionTreeClassifier(max_depth=2)\n", "dt_model.fit(train_data[features], train_data[label])\n", "dt_prob = dt_model.predict_proba(test_data[features])[:, 1]\n", "res['DT'] = roc_curve(test_data[label], dt_prob)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# 决策树和逻辑回归联结\n", "# 为了防止过拟合,使用不同的数据训练决策树和逻辑回归\n", "dt, lr = train_test_split(train_data, test_size=0.5)\n", "# 使用决策树对前两个变量做变换\n", "m = 2\n", "_dt = DecisionTreeClassifier(max_depth=2)\n", "_dt.fit(dt[features[:m]], dt[label])\n", "leaf_node = _dt.apply(dt[features[:m]]).reshape(-1, 1)\n", "coder = OneHotEncoder()\n", "coder.fit(leaf_node)\n", "\n", "def get_dt_feature(dt, coder, data):\n", " dt_feature = dt.apply(data[features[:m]]).reshape(-1, 1)\n", " # 为了避免虚拟变量陷阱,舍弃掉第一个虚拟变量\n", " return coder.transform(dt_feature).toarray()[:, 1:]" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "new_feature = np.c_[get_dt_feature(_dt, coder, lr), lr[features[m:]]]\n", "_logit = LogisticRegression()\n", "_logit.fit(new_feature, lr[label])\n", "test_feature = np.c_[get_dt_feature(_dt, coder, test_data), test_data[features[m:]]]\n", "dt_logit_prob = _logit.predict_proba(test_feature)[:, 1]\n", "res['DT + LR'] = roc_curve(test_data[label], dt_logit_prob)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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AC+vqz69JSthmcHh6enJ9u3brY/Xr1+fmJiYfM+h5bSVUip/GlyUMfmNo8hLeLg5W1GupafDnDkwcSLEZU+5fvxxmDwZatQokktkZWXRrl27XFkJ28GYAQEBxMTE5JoiqhkKpZRyngYXZUxe4yig/C245bTUVOjYEfbsMd9v394caHTqVGSXEBGHgUXbtm3tBmMeOHAAEdEuD6WUugoaXJQiV8ZRgBsEEXnx8TH3+5w9a85U/OtfVzUaNeeATA8PD7Kysjh9+jQAjRs3JjIyEsMwcgURutiXUkpdPS3/XUqcKXaVkOAm4yhySkmBd96B++83LzIGEBtrflEqV76qUzuaLnrzzTezceNGwNwFolkJpVRFp+W/3VBWFjRtmn+xK7cYR5GX558316zYtAnWrTOnY8y/5FctKSkpVx0KWzoYUymlip8GFyVIxNztYVtFM69iV27XBWK7culLL8H69fDkk8V6yaioKAICAvAo9wU/lFKqfNHgophZxlU4mk7aqBEcOuQGxa7yk5AAb7xhrrL50UfmbdddZ17NtAjHVZhMplwLfQUEBGimQimlSoE7v62VKhHz+2rbthAYaF4CwzawCAtz88BCBL78Epo0gbffho8/hv37rzx+FU88KyuLtm3bEhgYaL3df//9gDmg8Pf3Jzw8XAdnKqVUKdHMRTHIr1aFZTppQICbdXvYsiwwFhFhvt+wIcycaa6yeZVEhKZNm3IknwEr58+f10GbSilVijS4KGIiEB1tH1jY1qdwu7EUti5ehP/7P5g378oCY//+N7z4IuTosiispKQka2DRqFEjdu7ciWEYmEwm6z7aFaKUUqVLg4si5ChjERUFoaFuHFCAeYGx+fPh1VevLDA2YIB5gbG6da/69JbxFSaTyRo4hIWFERkZqYM1lVKqDNL/zEXEUcYiPLwCBBZbt5oraT71lDmwaNECNmyApUsLFViICImJidZbQkKCdXzFY489BkBCQgI7d+7UwEIppcoozVwUgQqZsUhJgaefhoULzfcLucCYJSvh6emJj48PSUlJBAYGOtzXshqpdnsopVTZph/9ikBiYgXMWPj4QHY5bR5/HA4fhueecyqwsGQnbLMSw4YNy/eYsLAwvvnmm6JouVJKqWKmmYurZKlfYeHWGYuffoLWraFqVfMTfP99uHTJpQXGHJXnhitZCX9/fxISEnId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LyZOnMiuXbtYvnw5O3bsoEOHDsTExBAcHExqaqrdOfr27QtAZmYmbdq0oWvXrmzduhUfHx/rste21T8tS6l7eLjeozh58mSCgoJYtWoVr7/+OqtXryYiIgIfHx9uuukmFi1aBMDixYtZvXq19b5lqfDiZHkdnc0a2Hrttdd4+umn6dKlC7///jutWrWyrkPi7+9vfc3Gjx+Pl5cXderUsSvD3qBBA/bt24ePjw8+Pj52bXjjjTdYunQpe/bsyXVdS7bKch7DMOjUqZPDNu7fv58HHniApk2bFvh8atSowbfffkvt2rUxDIPrr7+el156iRuyB4v7+Phw8803s3HjRrvj7rzzTrusjaueeuopatWqxeLFix2udyMibNiwgfT0dDZt2pQrA+SMlStXcu+993LTTTcxc+ZMvv/+e/r168cvv/xC586drfu1aNGC9evX06VLFzp27Gj9Oylqs2fP5tlnn+XOO+/kmWeeYdasWYwYMYKFCxc6fY7Lly8THh5ORkYG48aNIzMzk2nTptGlSxciIyOpVasWWVlZ9O/fn8jISJ599llq1arFtGnT6NOnDwcOHKBevXrF8vwqtOKIWEriRnbm4uzZWJHISHPWIvvTZUVT0TIXCxculHnz5sktt9wijRo1kjlz5siyZcusj+/evdu6ymVUVJTMmDGjwFUqDcOQn376SURE3nnnHbtswccff2y9Hx8fL4Bs2bLF6fZashJ79+61bhszZowAMn369Fz7v/jii9al2IvLk08+WehMwc6dO63nmTdvntSqVUsuX74s8fHxUqVKFenVq5f18ZEjR0qzZs3kt99+kw8++ECefPJJqV+/vtxyyy1OtbMwS67HxcXZreb6xx9/WFc+zWvF1/T0dIfnOn78eK6f3bhx4xwu033HHXc4lelxZP369VKlShU5f/58nvvs3LnT+jN47rnn7B5zJnORmZkpDRo0kMaNG1uXJc/IyJD69etL3759HV5z/vz5Uq9ePUlLS3Pp+Vy8eFGio6PzvGVmZkpsbKwEBQVJ7969JTMzU0REduzYIYZhyO7du52+1oQJE8TT01MOHjxo3bZ3714xDENefvllERH57rvvxNPTU7Zv327dx/J7MXnyZJeeW3mgmYuiYslc6IqoFcLGjRuJiori4MGDpKens3z5csLCwqhRowY33XSTw099Y8aMITMzk8zM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mQGdrVq1IiMjg+3bt9u1Z+fOndSsWdOl61lcunSJb775hhdeeMHh3+nMmTP58ssv+eyzz4p1xpKi/Ne5OHr0rEinTuY6F8uXFzD71z1VtDoXZ86cERFzDQVLvQHLnHWyq3F6eHhISEiIBAcHi8lkEk9PT/Hx8ZHQ0FC7c/39999iMpnE19dXgoKCJDg4WIKDg8XX11dMJpP1fnBwsPj7+4unp6csXLjQpfY6qnMxfvx4AWT+/Pm59i+JOhc5r2GpcBoREWHdlrNC57x58wSQI0eO5Hne48ePy9dff223be3atQJIcHCwbN261eV2OqpzkZqaKnPnznV4TKdOneTFF18UkSsVVXfv3i3x8fESHx8vt99+u7Xy5KlTp3I977lz5wogK1assNa5sH3O58+fl+DgYLnrrrtExPz317BhQwkLC5Pk5GSXnp/F6dOnJSAgQObNm5frsc8//1wA+fbbb63bMjMzpXLlytaaIitXrhRAlixZYt0nKipK/P39Zfjw4dbXws/PT2688UZrXYnExESpWbOm3Hfffbmum56eLl27dpV+/foV6jkVJC0tTapVqyaDBg2ybjtw4IAYhiFTpkwp1DmHDh0qVapUkUuXLuV67JtvvhEPDw8ZOXJkYZtcbmidi6KiYy4qlJyj3cE8mDI1NdWa5rzzzjvp0aMH6enpbN26lWXLljn8ZFa3bl2Hg9WmTJnCV199xY4dO5xu1549e9izZw8DBw50OO5j5cqV/Prrr6xZs4YVK1Zwzz33uDQgz9aWLVs4c+ZMkU+LdMW+fftYu3YtJ06c4PDhw/zxxx9ER0fTrl077rvvPgC++uorhg4dSkhICKmpqVSuXBkw18hITU3l7rvvLtS1vb29c00XzY+lWwQcD8a19eSTT1KzZk369evncIG6Z555Bh8fHz7++GPruRcvXkyXLl144YUXmDt3rvNPJFudOnWYPn06zz77LI0bN7ZWhwXzeAuTyUT37t2t2zw8POjevTurV68mJSWF3r1707hxY4YNG8ahQ4esdR1SUlKsg5VDQkJ46623eP7557nrrru48847WbBgATExMbz88st27cnKyuKZZ57hzz//ZOfOnS4/H2d4eXkxZswYXnnlFa699lo6derESy+9RGBgoN1AzHXr1pGRkUGfPn3yPd/hw4dZsGABU6dOzdXVeP78eR5//HGCg4Np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oEEDMQxDPD09BZC77rpL/vvf/8qhQ4fkvffey7Mtrq7+ays9PV1uu+026datW56rDr/yyisCyJ9//mm33fI7v3fvXrvtjlb8jYiIkE6dOomvr680atTI7mducerUKWnWrJkMGTKk0M/HWcuWLZNmzZqJn5+f9OvXT86fP+/yOS5duiTPPvus1KlTR3x9feW2226TXbt22e2zefNmhz+zSZMm5XtuXbisKCQlmr9q5qLCsc04NG/enLS0NLy8vJg4cSK7du1i+fLl7Nixgw4dOhATE0NwcDCpqal25+jbty8AmZmZtGnThq5du7J161Z8fHy49dZbAfvS4p6e5j8ZDw/XexQnT55MUFAQq1at4vXXX2f16tVERETg4+PDTTfdxKJFiwBYvHgxq1evtt4PDAwsxKsDCxcuZOLEicXehfPEE09wyy23cOHCBb799luGDRvGP//8w4QJE4r1upafvbNZA1sTJkygT58+DBw4kF27dlG/fn3rIm7+/v7Wn/OgQYO4ePEiTZo0sVuXxsfHh71791ozF7a/DwsXLuS1117jzz//zLXWTWZmJunp6XYLurVt29ZhGw8fPsxdd91FixYtCnw+3t7eLF68mKCgIK6//nq8vb0ZOnQod955JwAbN26kXr16uX4XRo0axa5duwo8f15ee+01oqKi2Lx5s11G0Na6deusXxs3buzyNSIjI+nVqxdNmjRh+vTpbN68mUGDBuHr68uAAQOs+11zzTX89NNPdOzYkXnz5vH0008X7kkV4LvvvuOBBx4gPDycYcOGsWDBAh544AF+/vlnp8+Rnp5Or169OHr0KGPHjqVSpUrMmjWLrl27smXLFm644QbA/NxDQ0OZPn263fFhYWFF+ZSKR3FELCVxw5K5wE/Ew0MkMzPfSM6dVbTMxcKFC2XevHlyyy23SKNGjWTOnDmybNky6+O7d++2LqEdFRUlM2bMKHAJbMMw5KeffhIRkXfeeccuW/Dxxx9b78fHxwsgW7Zscbq9jj6hjRkzRgCZPn16rv1ffPFFMf9pXp0FCxYUOuvhSubi448/tm7LzMyUdu3aSc2aNQt13fy88cYbhc4UfPPNN9bzrFmzRgICAuSvv/6SzMxMadq0qTRv3lzS0tJExPzzr1Spkmzfvl3mz58vI0eOlKZNm0r9+vWdaufs2bMFkPj4eKefW0JCgt3y9mfOnBEfHx/57LPP7Lbb3lJTU/M8HyDff/+99f5HH33k8Hdh5MiRTmV6HDl06JD4+fnluzR7TEyMeHh4CCB333233WPOZi5uuukmqVKlily4cMG6rVu3btK8eXOH1/zpp5+kUqVKLi/ffvnyZYmOjs7zlpaWJpmZmdKgQQNp2bKlJCcni4hYf1YrVqxw+lqW575+/Xrrtn/++UcCAwPlwQcftG4bNGiQ3HHHHS49D5Gykbko9wM6AahcGQrxSVKVTxs3bmTFihUcPHiQCxcusHz5cn7//XciIiIwDIO2bdvSo0cPPD09qV27NmPGjCEgIADDMMjKyrKeJzw8nKZNm9KyZUtEhKFDhxIWFsaMGTM4e/YsLVq04LbbbiuW5/B///d/+Pj4sGTJkmI5f2nx8PCge/funDt3jvT09CI9t2XJ9/379xMfH28dQPjJJ58QHx9PfHw8PXv2pGvXrtb7ljEAlmMjIyN59NFHefHFF/Hx8WHBggUcOXKEadOmMX36dIYMGcKcOXOIj4+nT58+LFmyhMDAQF566SU+/fTTIn0+th544AEqV65svdWpU4fU1FQGDRpkt932Nn/+lcrEsbGx7Ny5k3379nHw4EHAPMDRMv6oMNmdgrz33nsMHDiQZs2a5bnPhg0byMrKYtCgQfz8888uDy49c+YMv/zyCw8++CBVbAbt33777Rw4cMDhOJLu3bvTsWNHPv74Y5eudffddxMaGprnbfPmzezdu5fjx48zcuRIa/apdu3a9OnTh++++87pa23YsIFrr72WHj16WLfVrFmTG2+8kd27d1u37dixgy5durj0PMqK8t8tAtolkgcRKKEB7y7z94fC/r9bsGABANdddx1169a1pl0jIyMBHP4DO3ToEK1atbJLXw8ZMoTU1FROnDjBvn37GDZsGJUrV2bt2rX89NNPjBw5koCAAJKSkpx6o5w4cSKvv/468fHxBXZlVKpUidatW7Nnzx6ysrIK1c3iSGxsrLWtCQkJZGVlERMTY3ddHx+fIrlWXs6ePUtwcHCuVWpdeX0csXRV+Pv72x3v4+NjvW8ymTCZTNb7ljcAy7H79+/nwoUL/Oc//2Hq1KmkpKQwduxYunfvzmuvvUZ4eDj33nsvM2fO5NSpU3bdF1lZWURHR9sN/nSGMz9fb29v7rrrLmsAU69ePT777DNuvvlmAMaOHUtCQgJz584FoFq1anav75YtW+jTp4/dOS3dAj4+PsyZM8elNjtj9erVzJs3L9991q5dyzXXXMNDDz3EZ599xu+//054eLjT19i+fTuQu+uoU6dOPPjgg7m6OS0eeOABFi1axCuvvOL0td599918Z5W1bt2aNWvWANC1a1e7x1q1asXq1audvlZcXBxVHbxvJScnW7vSEhISOHToEKtWrWLWrFnEx8fTqVMnpkyZQseOHZ2+Vmlxj+BCp6E6lJRkri9WFiUkQB5dtE7Zvn07x48fJyQkhIkTJzJ+/HjrP3DLG0lOObcPHToUgFdeeYUaNWrw0ksvAXDp0iV+//13RowYAcDMmTOdmpZ43333cf3119u9IeWnbt26bNu2jUuXLjn8R1MYd999N5s2bbLbZvtmuGDBAoYMGVIk17JISEggJiaG1NRUVq9ezdKlS3nkkUdy7efq65NTUQRglgxBly5d+OGHH3jttdeYMGECvr6+7NixAzBPRZ05cyZHjhwhOjqaPXv2sHnzZn7++We6devm0oyIDz74gP/9738sX76c4ODgPPfz9vYmMzPTOu7DMAwCAgKs9729vfH29rbet2yz6NmzJ4mJiXh7ezNjxgzGjh3LihUr6NOnD8nJyflmyERcn76ZkZHB33//bR0bkJd169bRpUsXOnfujGEYrFu3zqXg4u+//wbINZulR48edp/6c2rRogVHjx51+joA7dq1K3Cfy5cvA+SaKRYaGupwWnNeGjZsyA8//EBMTAzVqlUD4NSpU0RGRlr/L+3YsYOsrCySkpJ4+eWXyczMZO7cudx6663s2bOH6667zunrlQb3CC40c1HhzJs3Dy8vL0wmk/XTXr9+/YD8Mxc57dixg9mzZzNy5EjrNst0QYvRo0czevRoAGuQ4WiqW6tWrRxeIy+WVH1ycrLTxxTE9tPX2rVr+eyzz/j888+tjzszONBVzz//PM8//7z1ft++fZk5c2au/Vx9ffKSlJREQkICiYnmwdypqakkJCQA5gGTmZmZ1vspKSl2x/r6+tKvXz8uXrzI2LFjmT9/Pv7+/tZ/3MeOHeP333+3trdmzZq0atWK1q1bc/fdd9OhQweX2moYBps2baJHjx6sXbvWLrWfc7+cevXqZXc/53RY22M8PT2twbPl53327Fm2bdtGly5dSEtLIzMzM1ctiqSkpDw//efH8jeWX8B3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FampqdYR9HfeeSc9evQgPT2drVu3smzZMoeDMOvWretw4NeUKVP46quvrDMInLFnzx727NnDwIEDHY77WLlyJb/++itr1qxhxYoV3HPPPUU+c6Oobdy40eHr869//cvh/vfffz/XXnstM2fO5O6777Z7rKDXpyScOHGC7777jpMnT3LkyBH++OMPTp8+Tf369enduzc+Pj5s2rSJRx99lJCQEGJjY62fordv387+/ft57LHHCrV2hWEY1hlIzrCMawBzldj8+vRvv/12li1bxv333+/w8QkTJnDu3DlWrVplfe2//PJLWrVqxeDBg1m1apULz8QsICCAjz/+mH79+tGyZUu7GUKW8RY5x/v07NmT6dOn8/fff9OiRQtuvfVWJkyYwIULF2jQoAFffvklp0+f5qOPPgLMn+pnzZpF//796dmzJ4MGDeLbb79l165dfP3117naNHnyZL777jt+++23YsucvfrqqwwcOJCnnnqK+++/n//85z+kpKRYZ3mAObNx5swZ+vfvn++5Ll68yNSpU3n66ae5/vrr7R4bNWoUH3zwAZ06daJv376cO3eOr7/+mnr16llntpVpxRGxlMSN7MzFif9MEzl3Lt8ozt1VtMyFhaPqgnFxcfLYY49J9+7dJTU1VdLT0yU8PFz69euX59oHjkyePNnlNRcmTJjg8BNrzrVF2rZtK7Nnz5aMjAyH5ylLmYu8bsePH3eYuRARmTp1qgC51knI6/Vx1syZMwtdodPyKT4uLk4qV64s9erVk5EjR8o333xjXRfi4MGD8thjj4lhGPLQQw/J5cuXpV+/flK9enX58ccfZciQIeLr6yvnCvh/U5gKnQ8++KDLz8k2c2ErMzNTAFm7dq2ImLM3JpNJPvzww1z7Wn43LRmPwvjggw/Ew8ND3n33Xeu2Ll26SI0aNXLtu2rVKgHko48+EhGRc+fOycCBA6Vy5cri5eUlTZo0sT5ma8WKFRIWFibe3t7SuHFj+fLLL3Pt8/zzz4u3t7ddZdLi8vbbb1vXcPHx8cn12jpaH8WRMWPGSEhISJ7VRLdt2yZdu3YVX19fqVWrlgwdOrTA3z+RspG5KPUgodANty3/vXNngS+2O6uowYXtwmU//fSTjBkzRipXrix9+vSRuLg4637nzp2Tli1bSmhoqEyaNMnarbJ///48F4V64YUXpEWLFg4f27dv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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# 为在Matplotlib中显示中文,设置特殊字体\n", "plt.rcParams['font.sans-serif'] = ['SimHei']\n", "# 正确显示负号\n", "plt.rcParams['axes.unicode_minus'] = False\n", "plt.rcParams.update({'font.size': 13})\n", "# 创建一个图形框\n", "fig = plt.figure(figsize=(6, 6), dpi=100)\n", "ax = fig.add_subplot(1, 1, 1)\n", "ax.set_xlim([0, 1])\n", "ax.set_ylim([0, 1])\n", "styles = ['k--', 'r-.', 'b']\n", "model = ['LR', 'DT', 'DT + LR']\n", "for i, s in zip(model, styles):\n", " fpr, tpr, _ = res[i]\n", " _auc = auc(fpr, tpr)\n", " ax.plot(fpr, tpr, s, label=f'模型:{i}; 曲线下面积(AUC)={_auc:.2f}')\n", " \n", "legend = plt.legend(loc=4, shadow=True)\n", "plt.savefig('dt_logit.png', dpi=200)\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" } }, "nbformat": 4, "nbformat_minor": 4 }