ibnummuhammad
commited on
Commit
•
423984a
1
Parent(s):
90e79c8
Add 'Logistic Regression Model Fitting'
Browse files
forecasting_logistic_regression.ipynb
CHANGED
@@ -1550,11 +1550,30 @@
|
|
1550 |
"metadata": {},
|
1551 |
"outputs": [],
|
1552 |
"source": [
|
1553 |
-
"cols=[
|
1554 |
-
"
|
1555 |
-
"
|
1556 |
-
"
|
1557 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1558 |
]
|
1559 |
},
|
1560 |
{
|
@@ -1609,11 +1628,622 @@
|
|
1609 |
],
|
1610 |
"source": [
|
1611 |
"import statsmodels.api as sm\n",
|
1612 |
-
"
|
1613 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1614 |
"print(result.summary2())"
|
1615 |
]
|
1616 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1617 |
{
|
1618 |
"cell_type": "code",
|
1619 |
"execution_count": null,
|
|
|
1550 |
"metadata": {},
|
1551 |
"outputs": [],
|
1552 |
"source": [
|
1553 |
+
"cols = [\n",
|
1554 |
+
" \"euribor3m\",\n",
|
1555 |
+
" \"job_blue-collar\",\n",
|
1556 |
+
" \"job_housemaid\",\n",
|
1557 |
+
" \"marital_unknown\",\n",
|
1558 |
+
" \"education_illiterate\",\n",
|
1559 |
+
" \"default_no\",\n",
|
1560 |
+
" \"default_unknown\",\n",
|
1561 |
+
" \"contact_cellular\",\n",
|
1562 |
+
" \"contact_telephone\",\n",
|
1563 |
+
" \"month_apr\",\n",
|
1564 |
+
" \"month_aug\",\n",
|
1565 |
+
" \"month_dec\",\n",
|
1566 |
+
" \"month_jul\",\n",
|
1567 |
+
" \"month_jun\",\n",
|
1568 |
+
" \"month_mar\",\n",
|
1569 |
+
" \"month_may\",\n",
|
1570 |
+
" \"month_nov\",\n",
|
1571 |
+
" \"month_oct\",\n",
|
1572 |
+
" \"poutcome_failure\",\n",
|
1573 |
+
" \"poutcome_success\",\n",
|
1574 |
+
"]\n",
|
1575 |
+
"X = os_data_X[cols]\n",
|
1576 |
+
"y = os_data_y[\"y\"]"
|
1577 |
]
|
1578 |
},
|
1579 |
{
|
|
|
1628 |
],
|
1629 |
"source": [
|
1630 |
"import statsmodels.api as sm\n",
|
1631 |
+
"\n",
|
1632 |
+
"logit_model = sm.Logit(y, X.astype(float))\n",
|
1633 |
+
"result = logit_model.fit()\n",
|
1634 |
+
"print(result.summary2())"
|
1635 |
+
]
|
1636 |
+
},
|
1637 |
+
{
|
1638 |
+
"cell_type": "code",
|
1639 |
+
"execution_count": 29,
|
1640 |
+
"metadata": {},
|
1641 |
+
"outputs": [
|
1642 |
+
{
|
1643 |
+
"name": "stdout",
|
1644 |
+
"output_type": "stream",
|
1645 |
+
"text": [
|
1646 |
+
"Optimization terminated successfully.\n",
|
1647 |
+
" Current function value: 0.452566\n",
|
1648 |
+
" Iterations 7\n",
|
1649 |
+
" Results: Logit\n",
|
1650 |
+
"=====================================================================\n",
|
1651 |
+
"Model: Logit Method: MLE \n",
|
1652 |
+
"Dependent Variable: y Pseudo R-squared: 0.347 \n",
|
1653 |
+
"Date: 2024-04-06 21:12 AIC: 46314.9963\n",
|
1654 |
+
"No. Observations: 51134 BIC: 46456.4716\n",
|
1655 |
+
"Df Model: 15 Log-Likelihood: -23141. \n",
|
1656 |
+
"Df Residuals: 51118 LL-Null: -35443. \n",
|
1657 |
+
"Converged: 1.0000 LLR p-value: 0.0000 \n",
|
1658 |
+
"No. Iterations: 7.0000 Scale: 1.0000 \n",
|
1659 |
+
"---------------------------------------------------------------------\n",
|
1660 |
+
" Coef. Std.Err. z P>|z| [0.025 0.975]\n",
|
1661 |
+
"---------------------------------------------------------------------\n",
|
1662 |
+
"euribor3m -0.7705 0.0079 -97.4685 0.0000 -0.7860 -0.7550\n",
|
1663 |
+
"job_blue-collar 0.3321 0.0270 12.3210 0.0000 0.2793 0.3850\n",
|
1664 |
+
"job_housemaid 0.3507 0.0711 4.9350 0.0000 0.2114 0.4900\n",
|
1665 |
+
"marital_unknown 0.6770 0.2173 3.1160 0.0018 0.2512 1.1029\n",
|
1666 |
+
"education_illiterate 1.7304 0.3651 4.7396 0.0000 1.0148 2.4459\n",
|
1667 |
+
"month_apr 1.4746 0.0351 42.0361 0.0000 1.4059 1.5434\n",
|
1668 |
+
"month_aug 2.3491 0.0408 57.6216 0.0000 2.2692 2.4290\n",
|
1669 |
+
"month_dec 1.9147 0.1285 14.9013 0.0000 1.6629 2.1665\n",
|
1670 |
+
"month_jul 2.7454 0.0414 66.3519 0.0000 2.6643 2.8265\n",
|
1671 |
+
"month_jun 2.3108 0.0392 58.9984 0.0000 2.2340 2.3875\n",
|
1672 |
+
"month_mar 2.5770 0.0775 33.2690 0.0000 2.4252 2.7288\n",
|
1673 |
+
"month_may 1.1476 0.0282 40.7396 0.0000 1.0924 1.2028\n",
|
1674 |
+
"month_nov 2.3547 0.0422 55.7868 0.0000 2.2720 2.4374\n",
|
1675 |
+
"month_oct 2.9015 0.0745 38.9684 0.0000 2.7555 3.0474\n",
|
1676 |
+
"poutcome_failure -0.4338 0.0323 -13.4275 0.0000 -0.4971 -0.3705\n",
|
1677 |
+
"poutcome_success 1.1880 0.0615 19.3210 0.0000 1.0675 1.3085\n",
|
1678 |
+
"=====================================================================\n",
|
1679 |
+
"\n"
|
1680 |
+
]
|
1681 |
+
}
|
1682 |
+
],
|
1683 |
+
"source": [
|
1684 |
+
"cols = [\n",
|
1685 |
+
" \"euribor3m\",\n",
|
1686 |
+
" \"job_blue-collar\",\n",
|
1687 |
+
" \"job_housemaid\",\n",
|
1688 |
+
" \"marital_unknown\",\n",
|
1689 |
+
" \"education_illiterate\",\n",
|
1690 |
+
" \"month_apr\",\n",
|
1691 |
+
" \"month_aug\",\n",
|
1692 |
+
" \"month_dec\",\n",
|
1693 |
+
" \"month_jul\",\n",
|
1694 |
+
" \"month_jun\",\n",
|
1695 |
+
" \"month_mar\",\n",
|
1696 |
+
" \"month_may\",\n",
|
1697 |
+
" \"month_nov\",\n",
|
1698 |
+
" \"month_oct\",\n",
|
1699 |
+
" \"poutcome_failure\",\n",
|
1700 |
+
" \"poutcome_success\",\n",
|
1701 |
+
"]\n",
|
1702 |
+
"X = os_data_X[cols]\n",
|
1703 |
+
"y = os_data_y[\"y\"]\n",
|
1704 |
+
"\n",
|
1705 |
+
"logit_model = sm.Logit(y, X.astype(float))\n",
|
1706 |
+
"result = logit_model.fit()\n",
|
1707 |
"print(result.summary2())"
|
1708 |
]
|
1709 |
},
|
1710 |
+
{
|
1711 |
+
"cell_type": "code",
|
1712 |
+
"execution_count": 32,
|
1713 |
+
"metadata": {},
|
1714 |
+
"outputs": [
|
1715 |
+
{
|
1716 |
+
"data": {
|
1717 |
+
"text/html": [
|
1718 |
+
"<style>#sk-container-id-2 {\n",
|
1719 |
+
" /* Definition of color scheme common for light and dark mode */\n",
|
1720 |
+
" --sklearn-color-text: black;\n",
|
1721 |
+
" --sklearn-color-line: gray;\n",
|
1722 |
+
" /* Definition of color scheme for unfitted estimators */\n",
|
1723 |
+
" --sklearn-color-unfitted-level-0: #fff5e6;\n",
|
1724 |
+
" --sklearn-color-unfitted-level-1: #f6e4d2;\n",
|
1725 |
+
" --sklearn-color-unfitted-level-2: #ffe0b3;\n",
|
1726 |
+
" --sklearn-color-unfitted-level-3: chocolate;\n",
|
1727 |
+
" /* Definition of color scheme for fitted estimators */\n",
|
1728 |
+
" --sklearn-color-fitted-level-0: #f0f8ff;\n",
|
1729 |
+
" --sklearn-color-fitted-level-1: #d4ebff;\n",
|
1730 |
+
" --sklearn-color-fitted-level-2: #b3dbfd;\n",
|
1731 |
+
" --sklearn-color-fitted-level-3: cornflowerblue;\n",
|
1732 |
+
"\n",
|
1733 |
+
" /* Specific color for light theme */\n",
|
1734 |
+
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
|
1735 |
+
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
|
1736 |
+
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
|
1737 |
+
" --sklearn-color-icon: #696969;\n",
|
1738 |
+
"\n",
|
1739 |
+
" @media (prefers-color-scheme: dark) {\n",
|
1740 |
+
" /* Redefinition of color scheme for dark theme */\n",
|
1741 |
+
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
|
1742 |
+
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
|
1743 |
+
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
|
1744 |
+
" --sklearn-color-icon: #878787;\n",
|
1745 |
+
" }\n",
|
1746 |
+
"}\n",
|
1747 |
+
"\n",
|
1748 |
+
"#sk-container-id-2 {\n",
|
1749 |
+
" color: var(--sklearn-color-text);\n",
|
1750 |
+
"}\n",
|
1751 |
+
"\n",
|
1752 |
+
"#sk-container-id-2 pre {\n",
|
1753 |
+
" padding: 0;\n",
|
1754 |
+
"}\n",
|
1755 |
+
"\n",
|
1756 |
+
"#sk-container-id-2 input.sk-hidden--visually {\n",
|
1757 |
+
" border: 0;\n",
|
1758 |
+
" clip: rect(1px 1px 1px 1px);\n",
|
1759 |
+
" clip: rect(1px, 1px, 1px, 1px);\n",
|
1760 |
+
" height: 1px;\n",
|
1761 |
+
" margin: -1px;\n",
|
1762 |
+
" overflow: hidden;\n",
|
1763 |
+
" padding: 0;\n",
|
1764 |
+
" position: absolute;\n",
|
1765 |
+
" width: 1px;\n",
|
1766 |
+
"}\n",
|
1767 |
+
"\n",
|
1768 |
+
"#sk-container-id-2 div.sk-dashed-wrapped {\n",
|
1769 |
+
" border: 1px dashed var(--sklearn-color-line);\n",
|
1770 |
+
" margin: 0 0.4em 0.5em 0.4em;\n",
|
1771 |
+
" box-sizing: border-box;\n",
|
1772 |
+
" padding-bottom: 0.4em;\n",
|
1773 |
+
" background-color: var(--sklearn-color-background);\n",
|
1774 |
+
"}\n",
|
1775 |
+
"\n",
|
1776 |
+
"#sk-container-id-2 div.sk-container {\n",
|
1777 |
+
" /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
|
1778 |
+
" but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
|
1779 |
+
" so we also need the `!important` here to be able to override the\n",
|
1780 |
+
" default hidden behavior on the sphinx rendered scikit-learn.org.\n",
|
1781 |
+
" See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
|
1782 |
+
" display: inline-block !important;\n",
|
1783 |
+
" position: relative;\n",
|
1784 |
+
"}\n",
|
1785 |
+
"\n",
|
1786 |
+
"#sk-container-id-2 div.sk-text-repr-fallback {\n",
|
1787 |
+
" display: none;\n",
|
1788 |
+
"}\n",
|
1789 |
+
"\n",
|
1790 |
+
"div.sk-parallel-item,\n",
|
1791 |
+
"div.sk-serial,\n",
|
1792 |
+
"div.sk-item {\n",
|
1793 |
+
" /* draw centered vertical line to link estimators */\n",
|
1794 |
+
" background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
|
1795 |
+
" background-size: 2px 100%;\n",
|
1796 |
+
" background-repeat: no-repeat;\n",
|
1797 |
+
" background-position: center center;\n",
|
1798 |
+
"}\n",
|
1799 |
+
"\n",
|
1800 |
+
"/* Parallel-specific style estimator block */\n",
|
1801 |
+
"\n",
|
1802 |
+
"#sk-container-id-2 div.sk-parallel-item::after {\n",
|
1803 |
+
" content: \"\";\n",
|
1804 |
+
" width: 100%;\n",
|
1805 |
+
" border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
|
1806 |
+
" flex-grow: 1;\n",
|
1807 |
+
"}\n",
|
1808 |
+
"\n",
|
1809 |
+
"#sk-container-id-2 div.sk-parallel {\n",
|
1810 |
+
" display: flex;\n",
|
1811 |
+
" align-items: stretch;\n",
|
1812 |
+
" justify-content: center;\n",
|
1813 |
+
" background-color: var(--sklearn-color-background);\n",
|
1814 |
+
" position: relative;\n",
|
1815 |
+
"}\n",
|
1816 |
+
"\n",
|
1817 |
+
"#sk-container-id-2 div.sk-parallel-item {\n",
|
1818 |
+
" display: flex;\n",
|
1819 |
+
" flex-direction: column;\n",
|
1820 |
+
"}\n",
|
1821 |
+
"\n",
|
1822 |
+
"#sk-container-id-2 div.sk-parallel-item:first-child::after {\n",
|
1823 |
+
" align-self: flex-end;\n",
|
1824 |
+
" width: 50%;\n",
|
1825 |
+
"}\n",
|
1826 |
+
"\n",
|
1827 |
+
"#sk-container-id-2 div.sk-parallel-item:last-child::after {\n",
|
1828 |
+
" align-self: flex-start;\n",
|
1829 |
+
" width: 50%;\n",
|
1830 |
+
"}\n",
|
1831 |
+
"\n",
|
1832 |
+
"#sk-container-id-2 div.sk-parallel-item:only-child::after {\n",
|
1833 |
+
" width: 0;\n",
|
1834 |
+
"}\n",
|
1835 |
+
"\n",
|
1836 |
+
"/* Serial-specific style estimator block */\n",
|
1837 |
+
"\n",
|
1838 |
+
"#sk-container-id-2 div.sk-serial {\n",
|
1839 |
+
" display: flex;\n",
|
1840 |
+
" flex-direction: column;\n",
|
1841 |
+
" align-items: center;\n",
|
1842 |
+
" background-color: var(--sklearn-color-background);\n",
|
1843 |
+
" padding-right: 1em;\n",
|
1844 |
+
" padding-left: 1em;\n",
|
1845 |
+
"}\n",
|
1846 |
+
"\n",
|
1847 |
+
"\n",
|
1848 |
+
"/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
|
1849 |
+
"clickable and can be expanded/collapsed.\n",
|
1850 |
+
"- Pipeline and ColumnTransformer use this feature and define the default style\n",
|
1851 |
+
"- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
|
1852 |
+
"*/\n",
|
1853 |
+
"\n",
|
1854 |
+
"/* Pipeline and ColumnTransformer style (default) */\n",
|
1855 |
+
"\n",
|
1856 |
+
"#sk-container-id-2 div.sk-toggleable {\n",
|
1857 |
+
" /* Default theme specific background. It is overwritten whether we have a\n",
|
1858 |
+
" specific estimator or a Pipeline/ColumnTransformer */\n",
|
1859 |
+
" background-color: var(--sklearn-color-background);\n",
|
1860 |
+
"}\n",
|
1861 |
+
"\n",
|
1862 |
+
"/* Toggleable label */\n",
|
1863 |
+
"#sk-container-id-2 label.sk-toggleable__label {\n",
|
1864 |
+
" cursor: pointer;\n",
|
1865 |
+
" display: block;\n",
|
1866 |
+
" width: 100%;\n",
|
1867 |
+
" margin-bottom: 0;\n",
|
1868 |
+
" padding: 0.5em;\n",
|
1869 |
+
" box-sizing: border-box;\n",
|
1870 |
+
" text-align: center;\n",
|
1871 |
+
"}\n",
|
1872 |
+
"\n",
|
1873 |
+
"#sk-container-id-2 label.sk-toggleable__label-arrow:before {\n",
|
1874 |
+
" /* Arrow on the left of the label */\n",
|
1875 |
+
" content: \"▸\";\n",
|
1876 |
+
" float: left;\n",
|
1877 |
+
" margin-right: 0.25em;\n",
|
1878 |
+
" color: var(--sklearn-color-icon);\n",
|
1879 |
+
"}\n",
|
1880 |
+
"\n",
|
1881 |
+
"#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {\n",
|
1882 |
+
" color: var(--sklearn-color-text);\n",
|
1883 |
+
"}\n",
|
1884 |
+
"\n",
|
1885 |
+
"/* Toggleable content - dropdown */\n",
|
1886 |
+
"\n",
|
1887 |
+
"#sk-container-id-2 div.sk-toggleable__content {\n",
|
1888 |
+
" max-height: 0;\n",
|
1889 |
+
" max-width: 0;\n",
|
1890 |
+
" overflow: hidden;\n",
|
1891 |
+
" text-align: left;\n",
|
1892 |
+
" /* unfitted */\n",
|
1893 |
+
" background-color: var(--sklearn-color-unfitted-level-0);\n",
|
1894 |
+
"}\n",
|
1895 |
+
"\n",
|
1896 |
+
"#sk-container-id-2 div.sk-toggleable__content.fitted {\n",
|
1897 |
+
" /* fitted */\n",
|
1898 |
+
" background-color: var(--sklearn-color-fitted-level-0);\n",
|
1899 |
+
"}\n",
|
1900 |
+
"\n",
|
1901 |
+
"#sk-container-id-2 div.sk-toggleable__content pre {\n",
|
1902 |
+
" margin: 0.2em;\n",
|
1903 |
+
" border-radius: 0.25em;\n",
|
1904 |
+
" color: var(--sklearn-color-text);\n",
|
1905 |
+
" /* unfitted */\n",
|
1906 |
+
" background-color: var(--sklearn-color-unfitted-level-0);\n",
|
1907 |
+
"}\n",
|
1908 |
+
"\n",
|
1909 |
+
"#sk-container-id-2 div.sk-toggleable__content.fitted pre {\n",
|
1910 |
+
" /* unfitted */\n",
|
1911 |
+
" background-color: var(--sklearn-color-fitted-level-0);\n",
|
1912 |
+
"}\n",
|
1913 |
+
"\n",
|
1914 |
+
"#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
|
1915 |
+
" /* Expand drop-down */\n",
|
1916 |
+
" max-height: 200px;\n",
|
1917 |
+
" max-width: 100%;\n",
|
1918 |
+
" overflow: auto;\n",
|
1919 |
+
"}\n",
|
1920 |
+
"\n",
|
1921 |
+
"#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
|
1922 |
+
" content: \"▾\";\n",
|
1923 |
+
"}\n",
|
1924 |
+
"\n",
|
1925 |
+
"/* Pipeline/ColumnTransformer-specific style */\n",
|
1926 |
+
"\n",
|
1927 |
+
"#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
1928 |
+
" color: var(--sklearn-color-text);\n",
|
1929 |
+
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
1930 |
+
"}\n",
|
1931 |
+
"\n",
|
1932 |
+
"#sk-container-id-2 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
1933 |
+
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
1934 |
+
"}\n",
|
1935 |
+
"\n",
|
1936 |
+
"/* Estimator-specific style */\n",
|
1937 |
+
"\n",
|
1938 |
+
"/* Colorize estimator box */\n",
|
1939 |
+
"#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
1940 |
+
" /* unfitted */\n",
|
1941 |
+
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
1942 |
+
"}\n",
|
1943 |
+
"\n",
|
1944 |
+
"#sk-container-id-2 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
1945 |
+
" /* fitted */\n",
|
1946 |
+
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
1947 |
+
"}\n",
|
1948 |
+
"\n",
|
1949 |
+
"#sk-container-id-2 div.sk-label label.sk-toggleable__label,\n",
|
1950 |
+
"#sk-container-id-2 div.sk-label label {\n",
|
1951 |
+
" /* The background is the default theme color */\n",
|
1952 |
+
" color: var(--sklearn-color-text-on-default-background);\n",
|
1953 |
+
"}\n",
|
1954 |
+
"\n",
|
1955 |
+
"/* On hover, darken the color of the background */\n",
|
1956 |
+
"#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {\n",
|
1957 |
+
" color: var(--sklearn-color-text);\n",
|
1958 |
+
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
1959 |
+
"}\n",
|
1960 |
+
"\n",
|
1961 |
+
"/* Label box, darken color on hover, fitted */\n",
|
1962 |
+
"#sk-container-id-2 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
|
1963 |
+
" color: var(--sklearn-color-text);\n",
|
1964 |
+
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
1965 |
+
"}\n",
|
1966 |
+
"\n",
|
1967 |
+
"/* Estimator label */\n",
|
1968 |
+
"\n",
|
1969 |
+
"#sk-container-id-2 div.sk-label label {\n",
|
1970 |
+
" font-family: monospace;\n",
|
1971 |
+
" font-weight: bold;\n",
|
1972 |
+
" display: inline-block;\n",
|
1973 |
+
" line-height: 1.2em;\n",
|
1974 |
+
"}\n",
|
1975 |
+
"\n",
|
1976 |
+
"#sk-container-id-2 div.sk-label-container {\n",
|
1977 |
+
" text-align: center;\n",
|
1978 |
+
"}\n",
|
1979 |
+
"\n",
|
1980 |
+
"/* Estimator-specific */\n",
|
1981 |
+
"#sk-container-id-2 div.sk-estimator {\n",
|
1982 |
+
" font-family: monospace;\n",
|
1983 |
+
" border: 1px dotted var(--sklearn-color-border-box);\n",
|
1984 |
+
" border-radius: 0.25em;\n",
|
1985 |
+
" box-sizing: border-box;\n",
|
1986 |
+
" margin-bottom: 0.5em;\n",
|
1987 |
+
" /* unfitted */\n",
|
1988 |
+
" background-color: var(--sklearn-color-unfitted-level-0);\n",
|
1989 |
+
"}\n",
|
1990 |
+
"\n",
|
1991 |
+
"#sk-container-id-2 div.sk-estimator.fitted {\n",
|
1992 |
+
" /* fitted */\n",
|
1993 |
+
" background-color: var(--sklearn-color-fitted-level-0);\n",
|
1994 |
+
"}\n",
|
1995 |
+
"\n",
|
1996 |
+
"/* on hover */\n",
|
1997 |
+
"#sk-container-id-2 div.sk-estimator:hover {\n",
|
1998 |
+
" /* unfitted */\n",
|
1999 |
+
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
2000 |
+
"}\n",
|
2001 |
+
"\n",
|
2002 |
+
"#sk-container-id-2 div.sk-estimator.fitted:hover {\n",
|
2003 |
+
" /* fitted */\n",
|
2004 |
+
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
2005 |
+
"}\n",
|
2006 |
+
"\n",
|
2007 |
+
"/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
|
2008 |
+
"\n",
|
2009 |
+
"/* Common style for \"i\" and \"?\" */\n",
|
2010 |
+
"\n",
|
2011 |
+
".sk-estimator-doc-link,\n",
|
2012 |
+
"a:link.sk-estimator-doc-link,\n",
|
2013 |
+
"a:visited.sk-estimator-doc-link {\n",
|
2014 |
+
" float: right;\n",
|
2015 |
+
" font-size: smaller;\n",
|
2016 |
+
" line-height: 1em;\n",
|
2017 |
+
" font-family: monospace;\n",
|
2018 |
+
" background-color: var(--sklearn-color-background);\n",
|
2019 |
+
" border-radius: 1em;\n",
|
2020 |
+
" height: 1em;\n",
|
2021 |
+
" width: 1em;\n",
|
2022 |
+
" text-decoration: none !important;\n",
|
2023 |
+
" margin-left: 1ex;\n",
|
2024 |
+
" /* unfitted */\n",
|
2025 |
+
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
|
2026 |
+
" color: var(--sklearn-color-unfitted-level-1);\n",
|
2027 |
+
"}\n",
|
2028 |
+
"\n",
|
2029 |
+
".sk-estimator-doc-link.fitted,\n",
|
2030 |
+
"a:link.sk-estimator-doc-link.fitted,\n",
|
2031 |
+
"a:visited.sk-estimator-doc-link.fitted {\n",
|
2032 |
+
" /* fitted */\n",
|
2033 |
+
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
|
2034 |
+
" color: var(--sklearn-color-fitted-level-1);\n",
|
2035 |
+
"}\n",
|
2036 |
+
"\n",
|
2037 |
+
"/* On hover */\n",
|
2038 |
+
"div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
|
2039 |
+
".sk-estimator-doc-link:hover,\n",
|
2040 |
+
"div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
|
2041 |
+
".sk-estimator-doc-link:hover {\n",
|
2042 |
+
" /* unfitted */\n",
|
2043 |
+
" background-color: var(--sklearn-color-unfitted-level-3);\n",
|
2044 |
+
" color: var(--sklearn-color-background);\n",
|
2045 |
+
" text-decoration: none;\n",
|
2046 |
+
"}\n",
|
2047 |
+
"\n",
|
2048 |
+
"div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
|
2049 |
+
".sk-estimator-doc-link.fitted:hover,\n",
|
2050 |
+
"div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
|
2051 |
+
".sk-estimator-doc-link.fitted:hover {\n",
|
2052 |
+
" /* fitted */\n",
|
2053 |
+
" background-color: var(--sklearn-color-fitted-level-3);\n",
|
2054 |
+
" color: var(--sklearn-color-background);\n",
|
2055 |
+
" text-decoration: none;\n",
|
2056 |
+
"}\n",
|
2057 |
+
"\n",
|
2058 |
+
"/* Span, style for the box shown on hovering the info icon */\n",
|
2059 |
+
".sk-estimator-doc-link span {\n",
|
2060 |
+
" display: none;\n",
|
2061 |
+
" z-index: 9999;\n",
|
2062 |
+
" position: relative;\n",
|
2063 |
+
" font-weight: normal;\n",
|
2064 |
+
" right: .2ex;\n",
|
2065 |
+
" padding: .5ex;\n",
|
2066 |
+
" margin: .5ex;\n",
|
2067 |
+
" width: min-content;\n",
|
2068 |
+
" min-width: 20ex;\n",
|
2069 |
+
" max-width: 50ex;\n",
|
2070 |
+
" color: var(--sklearn-color-text);\n",
|
2071 |
+
" box-shadow: 2pt 2pt 4pt #999;\n",
|
2072 |
+
" /* unfitted */\n",
|
2073 |
+
" background: var(--sklearn-color-unfitted-level-0);\n",
|
2074 |
+
" border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
|
2075 |
+
"}\n",
|
2076 |
+
"\n",
|
2077 |
+
".sk-estimator-doc-link.fitted span {\n",
|
2078 |
+
" /* fitted */\n",
|
2079 |
+
" background: var(--sklearn-color-fitted-level-0);\n",
|
2080 |
+
" border: var(--sklearn-color-fitted-level-3);\n",
|
2081 |
+
"}\n",
|
2082 |
+
"\n",
|
2083 |
+
".sk-estimator-doc-link:hover span {\n",
|
2084 |
+
" display: block;\n",
|
2085 |
+
"}\n",
|
2086 |
+
"\n",
|
2087 |
+
"/* \"?\"-specific style due to the `<a>` HTML tag */\n",
|
2088 |
+
"\n",
|
2089 |
+
"#sk-container-id-2 a.estimator_doc_link {\n",
|
2090 |
+
" float: right;\n",
|
2091 |
+
" font-size: 1rem;\n",
|
2092 |
+
" line-height: 1em;\n",
|
2093 |
+
" font-family: monospace;\n",
|
2094 |
+
" background-color: var(--sklearn-color-background);\n",
|
2095 |
+
" border-radius: 1rem;\n",
|
2096 |
+
" height: 1rem;\n",
|
2097 |
+
" width: 1rem;\n",
|
2098 |
+
" text-decoration: none;\n",
|
2099 |
+
" /* unfitted */\n",
|
2100 |
+
" color: var(--sklearn-color-unfitted-level-1);\n",
|
2101 |
+
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
|
2102 |
+
"}\n",
|
2103 |
+
"\n",
|
2104 |
+
"#sk-container-id-2 a.estimator_doc_link.fitted {\n",
|
2105 |
+
" /* fitted */\n",
|
2106 |
+
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
|
2107 |
+
" color: var(--sklearn-color-fitted-level-1);\n",
|
2108 |
+
"}\n",
|
2109 |
+
"\n",
|
2110 |
+
"/* On hover */\n",
|
2111 |
+
"#sk-container-id-2 a.estimator_doc_link:hover {\n",
|
2112 |
+
" /* unfitted */\n",
|
2113 |
+
" background-color: var(--sklearn-color-unfitted-level-3);\n",
|
2114 |
+
" color: var(--sklearn-color-background);\n",
|
2115 |
+
" text-decoration: none;\n",
|
2116 |
+
"}\n",
|
2117 |
+
"\n",
|
2118 |
+
"#sk-container-id-2 a.estimator_doc_link.fitted:hover {\n",
|
2119 |
+
" /* fitted */\n",
|
2120 |
+
" background-color: var(--sklearn-color-fitted-level-3);\n",
|
2121 |
+
"}\n",
|
2122 |
+
"</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LogisticRegression()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" checked><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> LogisticRegression<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.linear_model.LogisticRegression.html\">?<span>Documentation for LogisticRegression</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>LogisticRegression()</pre></div> </div></div></div></div>"
|
2123 |
+
],
|
2124 |
+
"text/plain": [
|
2125 |
+
"LogisticRegression()"
|
2126 |
+
]
|
2127 |
+
},
|
2128 |
+
"execution_count": 32,
|
2129 |
+
"metadata": {},
|
2130 |
+
"output_type": "execute_result"
|
2131 |
+
}
|
2132 |
+
],
|
2133 |
+
"source": [
|
2134 |
+
"from sklearn.linear_model import LogisticRegression\n",
|
2135 |
+
"from sklearn import metrics\n",
|
2136 |
+
"\n",
|
2137 |
+
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)\n",
|
2138 |
+
"logreg = LogisticRegression()\n",
|
2139 |
+
"logreg.fit(X_train, y_train)"
|
2140 |
+
]
|
2141 |
+
},
|
2142 |
+
{
|
2143 |
+
"cell_type": "code",
|
2144 |
+
"execution_count": 34,
|
2145 |
+
"metadata": {},
|
2146 |
+
"outputs": [
|
2147 |
+
{
|
2148 |
+
"name": "stdout",
|
2149 |
+
"output_type": "stream",
|
2150 |
+
"text": [
|
2151 |
+
"Accuracy of logistic regression classifier on test set: 0.82\n"
|
2152 |
+
]
|
2153 |
+
}
|
2154 |
+
],
|
2155 |
+
"source": [
|
2156 |
+
"y_pred = logreg.predict(X_test)\n",
|
2157 |
+
"print(\n",
|
2158 |
+
" \"Accuracy of logistic regression classifier on test set: {:.2f}\".format(\n",
|
2159 |
+
" logreg.score(X_test, y_test)\n",
|
2160 |
+
" )\n",
|
2161 |
+
")"
|
2162 |
+
]
|
2163 |
+
},
|
2164 |
+
{
|
2165 |
+
"cell_type": "code",
|
2166 |
+
"execution_count": 35,
|
2167 |
+
"metadata": {},
|
2168 |
+
"outputs": [
|
2169 |
+
{
|
2170 |
+
"name": "stdout",
|
2171 |
+
"output_type": "stream",
|
2172 |
+
"text": [
|
2173 |
+
"[[6878 788]\n",
|
2174 |
+
" [2009 5666]]\n"
|
2175 |
+
]
|
2176 |
+
}
|
2177 |
+
],
|
2178 |
+
"source": [
|
2179 |
+
"from sklearn.metrics import confusion_matrix\n",
|
2180 |
+
"\n",
|
2181 |
+
"confusion_matrix = confusion_matrix(y_test, y_pred)\n",
|
2182 |
+
"print(confusion_matrix)"
|
2183 |
+
]
|
2184 |
+
},
|
2185 |
+
{
|
2186 |
+
"cell_type": "code",
|
2187 |
+
"execution_count": 36,
|
2188 |
+
"metadata": {},
|
2189 |
+
"outputs": [
|
2190 |
+
{
|
2191 |
+
"name": "stdout",
|
2192 |
+
"output_type": "stream",
|
2193 |
+
"text": [
|
2194 |
+
" precision recall f1-score support\n",
|
2195 |
+
"\n",
|
2196 |
+
" 0 0.77 0.90 0.83 7666\n",
|
2197 |
+
" 1 0.88 0.74 0.80 7675\n",
|
2198 |
+
"\n",
|
2199 |
+
" accuracy 0.82 15341\n",
|
2200 |
+
" macro avg 0.83 0.82 0.82 15341\n",
|
2201 |
+
"weighted avg 0.83 0.82 0.82 15341\n",
|
2202 |
+
"\n"
|
2203 |
+
]
|
2204 |
+
}
|
2205 |
+
],
|
2206 |
+
"source": [
|
2207 |
+
"from sklearn.metrics import classification_report\n",
|
2208 |
+
"\n",
|
2209 |
+
"print(classification_report(y_test, y_pred))"
|
2210 |
+
]
|
2211 |
+
},
|
2212 |
+
{
|
2213 |
+
"cell_type": "code",
|
2214 |
+
"execution_count": 37,
|
2215 |
+
"metadata": {},
|
2216 |
+
"outputs": [
|
2217 |
+
{
|
2218 |
+
"data": {
|
2219 |
+
"image/png": "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itVqVcaOHavcf//9SkpKinN/QkKC0rRpU+WNN95QFEVRduzYoYSFhSk7duxQFEVRFi1apDRu3FjJyMhQFEVRHA6H0qFDB2XKlCmKoijKb7/9poSFhSlfffVVrscdP3680rp1a8VmsymKoigdO3ZUHnjggdu+Jna7XWndurUycODAXNvPnTun1K9fX3nzzTcVRVGUTZs2KWFhYcqSJUucxzgcDuXRRx9VnnzyybuO69dff1X69u2b63VSFEXp3r17rtg6duyoTJo0yXk/J67o6GhFURRl0qRJSlhYmHLu3DnnMbt27VLCwsKUrVu3KoqiKBMmTFBat26tpKenO4/Zu3evEhYWluvaNxs5cqTSunVrJTMzM9d5HTt2VI4cOeIsx9mzZ+d6jdq3b68MHz5cURRFiYmJUfr376/s3r0717VnzJihNGjQwHm/X79+SqNGjRSLxeLcduTIEaVPnz7K+fPnc507ZMgQ5cEHH1QURVGSkpKUevXqKf/973/zXP/5559XFCX7/RUWFubcV5D3+q1iio6OVsLCwpRNmzYpiqIoAwcOVJ577rlc11m3bp2yZcsW5/2wsDBl0aJFzvs3xlOQvykhioI0nwlBdqfmTz75hE8++YSlS5cSFhZGjRo1WLBgAd26dXMet2PHDhRFoVOnTmRlZTl/OnXqhMVi4c8//+Ts2bNcu3aNLl265HqM559/ns2bN2MwGNixYwctWrTAbDY7r+Hp6UmzZs34/fff842xZ8+epKenO5vQ9u7dy6VLl5y1WH/88QcajYb27dvnie3KlSucPHnSea26deve9vU4e/YsV65coXv37rm2V6tWjSZNmrBr165c2x9//HHnbY1GQ5cuXTh48CCZmZl3FVebNm14//33MZlMnDp1iu+//563336b+Pj4Qjeb+Pv75+r4m1MbkpGRAWSXbbt27XBzc3Me06RJE6pUqXLb6/7555+0a9cOk8mU67wffvgh1/Np1qyZ87ZGo6FKlSokJycDULFiRd577z2aNm3KhQsX2L59O+vWrWPv3r15nmetWrUwGo3O+3Xr1mXDhg1UqVKFqKgofv75Z1atWsWZM2ec5+7fv5+srCy6du2a61qTJ09m5cqV+T6vgrzXbxXTzVq2bOlsil25ciWnTp2iX79+uWpgb6cgf1NCFAVpPhMC8PDw4J577nHeb9SoET179mTg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kIjBx5u6k18idOhgdCaT2mEJIYrAyy+/XOAv7d27d/Piiy+SkZEBQNeuXfn555/v6vEHDhzIb7/95vz59NNPefTRR3n77bdZtWrVP1/AxX3yyScMHDiw2B9nxowZPP/883h4eBT7Y5WEqVOn8ttvv7F48WLeffddzpw5Q2Rk5C2Pt9lsDB48GL1ez4cffsiCBQvYuXMnkydPdh7z2muv8cUXX/Dqq6+yZcsWHnjgAUaMGMHOnTsBeOCBB0hJSeGLL74o9udXGJIUuYCsG/7bMPr6UPflF2m8aD7+zZupGJUQoqh5eXnh6+tboGNvXq7HbDZToUKFu3p8d3d3KlSo4PwJDQ1lxIgRtGzZkq+//vquru0K/P39iz1R2blzJydPnqRnz57F+jglJTY2li1btjB58mSaNWtGw4YNmTdvHrt372bfvn35nnPq1CmioqIYOXIkoaGhNGvWjL59+/Lrr78CkJGRwZYtWxg7dizt27enevXqDBs2jBYtWrBp0ybndQYOHMiCBQuc0xy4AkmKVBa/azd/Dh3BletLdQB4hYdhLOAHpxCuSFEUMi1Zqv0U1/p/W7ZsoWfPnjRs2JBOnTqxdOnSXB/o58+fZ/DgwTRp0oS2bduyZs0aunTpwubNm4G8zWerVq3igQceoEGDBnTq1Im33noLRVHYuXMnAwYMAKBz5858+umneZrP0tLSmDFjBm3atKFJkyb069ePv/76646el8lkQq//u4tpSkoKr7zyCvfddx9NmzZlwIABHDp0KNc5X3zxBQ899BD33HMPTz75JO+99x7h4eHO/eHh4SxatIiOHTvSpk0boqKisFqtzJ49m7Zt29KkSROeeuopfvvtN+c5drud2bNn0759exo0aEC3bt3YuHGjc/+1a9eIjIykZcuWNGzYkN69e7Nr1y7n/pubz3766SeeeuopmjRpQps2bZg5cyaZmZm5Yvzkk0949tlnadiwIW3atGHJkiW3fa3WrFlDp06dcg0R37ZtG08++SSNGzfmnnvuoVevXs4EAaB///688sorPPnkkzRr1ozPP/8cgE2bNvHQQw/RsGFDHnroId59991czZh79uxhwIAB3HvvvTRo0ICHHnqIzz777JaxLV68OE8Tac7PrZpt//zzTwDuu+8+57aaNWtSsWJFdu/ene85fn5+aLVaPvroI6xWK/Hx8WzdupVG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LF++nGrVqgHZX5DTp0/n+++/5+LFi/z6668cPXqUJk2aYDQaOXToEK+88gr79+/nwoULbN68mfT0dOdrdqNBgwbx7bffsnTpUs6ePcuPP/7IjBkz6Nix4x0nRREREZhMJmczFmTX6hw/fpw9e/Zw4cIFNm3a5GwSy69ZCrLfD4MHD2bdunW8//77nD9/nu+++46pU6diNpsxGo0EBwcTExPDzz//zMWLF/n222+ZOnXqba97JypWrMgjjzzC5MmT2blzJwcPHmTs2LG0aNHC2TxrtVq5cuWK83H79u3LuXPneOWVVzh9+jT79+8nMjKSiIgI2rdvT1JSEpMmTaJ+/fq8/PLLJCUlceXKFa5cuZLrnwbIborNGbXmCspO/baLSTl+ghPzFpIZE0N6dDQNXpsmiZAQLu6LL77IM5lclSpV+OGHHxg4cCBGo5F3332X119/neDgYAYPHuzsbGw0Glm5ciXTp0/nqaeewsfHh6FDh3L48OF8R/48+eSTJCYmsnTpUi5fvoyPjw8PPvgg48ePB7JrbNq3b8/o0aMZPXp0nian119/nVmzZjFq1CisViuNGjVi1apVufq7FERAQAAvvfQSkyZN4r333uPZZ59l9erVzJ49m9GjR5ORkUFoaChLliyhVatWALRr147p06ezfPly5s6dS4MGDejTp88/Jkbz589n/vz5TJkyhaSkJKpVq8Z///tfHn/8cSC7z5DNZuO1117jypUrVKhQgT59+jBkyBDn+TNnzuT//u//SElJoVatWsyZM4dmzfLO6fbggw8yb9483n77bZYuXYq/vz/du3e/7aSE/8Td3Z1WrVqxe/duHn74YQAiIyO5evUqQ4cOBaB27dq8/vrrTJgwgUOHDt0yARs4cCAmk4l169bxxhtvEBgYyFNPPeWMb8CAAZw5c4aJEyditVqpUaMGY8eOZdGiRRw6dCjPcPe7MWPGDF5//XVns227du1yjRLbt28fAwYM4L333qNly5aEh4ezbt065s2bx9NPP42bmxtt2rRhwoQJGAwGfvnlF5KTkzlw4ECeOFu0aMG6ddndSGw2G/v27WP69OlF9lzulkYprgk9SolDhw4RG59O5ZAa1AvNv3qxMBS7neiPNxH94cfgcGCqEEidMZH41K9fBNGWbenp6Rw9epS6devmGV4rSl5ByiMzM5OzZ89Ss2bNW/ZZ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",
|
2220 |
+
"text/plain": [
|
2221 |
+
"<Figure size 640x480 with 1 Axes>"
|
2222 |
+
]
|
2223 |
+
},
|
2224 |
+
"metadata": {},
|
2225 |
+
"output_type": "display_data"
|
2226 |
+
}
|
2227 |
+
],
|
2228 |
+
"source": [
|
2229 |
+
"from sklearn.metrics import roc_auc_score\n",
|
2230 |
+
"from sklearn.metrics import roc_curve\n",
|
2231 |
+
"\n",
|
2232 |
+
"logit_roc_auc = roc_auc_score(y_test, logreg.predict(X_test))\n",
|
2233 |
+
"fpr, tpr, thresholds = roc_curve(y_test, logreg.predict_proba(X_test)[:, 1])\n",
|
2234 |
+
"plt.figure()\n",
|
2235 |
+
"plt.plot(fpr, tpr, label=\"Logistic Regression (area = %0.2f)\" % logit_roc_auc)\n",
|
2236 |
+
"plt.plot([0, 1], [0, 1], \"r--\")\n",
|
2237 |
+
"plt.xlim([0.0, 1.0])\n",
|
2238 |
+
"plt.ylim([0.0, 1.05])\n",
|
2239 |
+
"plt.xlabel(\"False Positive Rate\")\n",
|
2240 |
+
"plt.ylabel(\"True Positive Rate\")\n",
|
2241 |
+
"plt.title(\"Receiver operating characteristic\")\n",
|
2242 |
+
"plt.legend(loc=\"lower right\")\n",
|
2243 |
+
"plt.savefig(\"Log_ROC\")\n",
|
2244 |
+
"plt.show()"
|
2245 |
+
]
|
2246 |
+
},
|
2247 |
{
|
2248 |
"cell_type": "code",
|
2249 |
"execution_count": null,
|