diff --git a/_toc.yml b/_toc.yml index 7e666a0..90f4b7f 100644 --- a/_toc.yml +++ b/_toc.yml @@ -11,3 +11,4 @@ parts: - file: docs/回归/最小二乘法 - file: docs/回归/正则化线性回归 - file: docs/回归/贝叶斯回归 + - file: docs/回归/逻辑回归 diff --git "a/docs/\345\233\236\345\275\222/\351\200\273\350\276\221\345\233\236\345\275\222.ipynb" "b/docs/\345\233\236\345\275\222/\351\200\273\350\276\221\345\233\236\345\275\222.ipynb" index 4c4c8cf..8ca6cbe 100644 --- "a/docs/\345\233\236\345\275\222/\351\200\273\350\276\221\345\233\236\345\275\222.ipynb" +++ "b/docs/\345\233\236\345\275\222/\351\200\273\350\276\221\345\233\236\345\275\222.ipynb" @@ -5,87 +5,178 @@ "id": "bab0ad6e", "metadata": {}, "source": [ - "## logistic \n", + "# 逻辑回归 \n", "\n", - "逻辑回归(Logistic Regression)是一种广泛应用于分类问题的统计学习方法。它基于线性回归模型,通过一个非线性的逻辑函数(称为“sigmoid函数”或“逻辑函数”)将预测结果映射到概率值,从而对样本进行分类。\n", + "逻辑回归(Logistic Regression),虽然名字里有 “回归” 二字,但实际上是解决分类问题的一类线性模型。又被称作 logit 回归,maximum-entropy classification(MaxEnt,最大熵分类),或 log-linear classifier(对数线性分类器)。\n", "\n", - "在逻辑回归中,我们假设输入特征X与输出标签 $Y$ 之间存在一种概率关系,并希望根据特征来预测属于某个类别的概率。逻辑回归可以处理二分类问题,也可以通过扩展为多分类问题。\n", + "逻辑回归它基于线性回归模型,通过一个非线性的逻辑函数(称为“sigmoid函数”或“逻辑函数”)将预测结果映射到概率值,从而对样本进行分类。数学模型如下:\n", "\n", - "具体而言,逻辑回归的数学模型如下:\n", + "$hθ(x) = g(θ^T x)$ ,其中 $g(z) = \\frac{1}{1 + e^{-z}} $ 是逻辑函数。\n", "\n", - "* 假设函数(Hypothesis Function): \n", + "## sigmoid函数\n", + "函数表达式为:\n", "\n", - "$hθ(x) = g(θ^T x)$ \n", + "$\n", + "f(x) = \\frac{1}{1 + e^{-x}}\n", + "$\n", "\n", - "其中 \n", + "我们用代码将这个函数绘制出来:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "d3b6e683", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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HhqNRty6dQseHh6mdn9//3I1AkBhYaFNaiJydNxzQyQjKpUKs2fPBlByEG9F/P39cf369XLt6enpNq/J398faWlp5dpTU1MBAAEBAWaXq127NhQKhdmabFVnaVC594DgyvZ63U+dOnWQmpoKo9H4QLWVKg0qFb2HSqUStWvXtslrEckFww2RkzL3xw4ATp48CeDvPSPmdOvWDXl5efj555/LtK9du9Z2Bd7Rs2dPbNu2zRRmSn3++efw8PCo8LRnT09PdOzYERs3biyzZyQvLw8//PCDTWpr2LAhAODYsWNl2r///nur1xkXF4eioqL7XoxQrVZbtCclIiIC9erVw9dffw0hhKk9Pz8fGzZsMJ1BRUR/47QUkZPq06cP6tevj4EDB6J58+YwGo34/fff8f7778PLywv/+te/Klx27NixWLRoEZ555hn83//9H5o0aYKff/4ZW7ZsAVD+VPIHMXv2bPz444/o0aMHXn/9dfj5+eGrr77CTz/9hAULFsDX17fCZd9880307dsXvXv3xowZM2AwGDB//nx4enri5s2bD1xbUFAQevXqhXnz5qF27doICwvDb7/9ho0bN1q9zqeeegqrVq3CpEmTcPr0afTo0QNGoxEHDx5EixYtMHLkSABAq1atsGPHDvzwww8IDg6Gt7c3IiIiyq1PqVRiwYIFePrppzFgwAA8//zz0Gq1ePfdd5GdnW06JZ+I/sY9N0RO6t///jdq166NRYsWYdCgQYiLi8OSJUvQq1cvHDp0CK1atapwWU9PT2zbtg3du3fHyy+/jGHDhiElJcV0OnKtWrVsVmdERAT27duHiIgIvPDCCxgyZAj++usvrFq1Ci+99FKly/bu3RubN29Gbm4uRowYgfj4eAwbNsxmB+sCwBdffIGePXvilVdewRNPPIFr165hzZo1Vq/P1dUVCQkJmDVrFjZt2oTBgwdjzJgx2LNnD8LCwkz9/vOf/6Bp06YYOXIkOnTogOeff77CdY4aNQqbN29GVlYWRowYgWeffRY+Pj7Yvn07unTpYnWtRHKlEHfv5ySiGu3tt9/Gv//9b6SkpKB+/fpSl0NEZBVOSxHVUB988AGAknss6XQ6bNu2DUuWLMEzzzzDYENETo3hhqiG8vDwwKJFi3Dp0iVotVo0aNAAr7zyCv79739LXRoR0QPhtBQRERHJCg8oJiIiIllh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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "def sigmoid(x):\n", + " return 1 / (1 + np.exp(-x))\n", + "\n", + "# 生成一系列x值\n", + "x = np.linspace(-10, 10, 100)\n", "\n", - "$g(z) = \\frac{1}{1 + e^{-z}} $ \n", + "# 计算对应的sigmoid值\n", + "y = sigmoid(x)\n", "\n", - "是逻辑函数。\n", + "# 绘制sigmoid函数曲线\n", + "plt.plot(x, y)\n", + "plt.xlabel('x')\n", + "plt.ylabel('sigmoid(x)')\n", + "plt.title('Sigmoid Function')\n", + "plt.grid(True)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "b37b7f5a", + "metadata": {}, + "source": [ + "这个函数图像看着就很对称,也很优雅。记为$f(x) = \\frac{1}{1 + e^{-x}}$\n", + "\n", + "对这个函数求导为:\n", "\n", - "* 损失函数(Loss Function):\n", + "$f’(x) = \\frac{d}{dx} \\left(\\frac{1}{1 + e^{-x}}\\right)$\n", "\n", - "对于二分类问题,使用对数损失函数(Log Loss):\n", + "进一步可以得到(推导略)\n", "\n", - "$ J(\\theta) = -\\frac{1}{m} \\sum_{i=1}^{m} [y^{(i)} \\log(h_\\theta(x^{(i)})) + (1-y^{(i)}) \\log(1 - h_\\theta(x^{(i)}))] $\n", + "$f’(x) = 2f(x)(1 - f(x))$\n", "\n", - "其中 $m$ 是样本数量,$y$是实际标签。\n", + "换句话说,sigmoid函数的导数值,仅仅依靠该函数值本身的四则运算就可以计算得到,计算可谓是非常简便。" + ] + }, + { + "cell_type": "markdown", + "id": "ae7d69d8", + "metadata": {}, + "source": [ "\n", - "* 参数估计:\n", + "## 损失函数(Loss Function):\n", "\n", - "使用梯度下降等优化算法最小化损失函数 $J(θ)$,得到参数θ的估计值。\n", + "参考[1]\n", "\n", - "* 预测:\n", + "我们知道一个样本最终的计算值在 $(0,1)$ 之间浮动,可以被视作概率值。并且由于sigmoid函数的单调性,我们可以认为,概率值越接近1,说明样本越接近正样本,评价质量越好\n", "\n", - "根据学习到的参数 $θ$,对新样本进行预测,即计算 $hθ(x)$ 的概率值,并根据阈值进行分类。" + "因此,我们可以构造一个似然函数,它衡量了计算得分值和真实样本标签之间的差距,当样本只有一个的时候:\n", + "\n", + "$L(w) = (p(x))^y (1-p(x))^{(1-y)}$\n", + "\n", + "当样本有N个的时候\n", + "\n", + "$L(w) = \\prod_{i=0}^{n} (p(x_i))^y_i (1-p(x_i))^{(1-y_i)}$\n", + "\n", + "再考虑到该函数的连乘,也未对样本的数量做归一化,应当转换成\n", + "\n", + "$J(w) = -\\frac{1}{N} \\ln L(w)$\n", + "\n", + "加上L2正则化项为:\n", + "\n", + "$\n", + "J(w) = -\\frac{1}{N} \\ln L(w) + \\frac{\\lambda}{2N}\\sum_{j=1}^{m} w_j^2\n", + "$\n", + "\n", + "其中,$J(w)$ 是目标函数,$w$ 是模型的参数向量,$N$ 是训练样本数量,$w_j$ 是第 $j$ 个特征的权重,$λ$ 是正则化参数,$m$ 是参数个数。\n" + ] + }, + { + "cell_type": "markdown", + "id": "01b483ad", + "metadata": {}, + "source": [ + "下面演示一个逻辑回归分类的示例:" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 10, "id": "c93290d6", "metadata": {}, "outputs": [ { - "ename": "ValueError", - "evalue": "y should be a 1d array, got an array of shape (100, 5) instead.", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m/Users/xue/work/code/github/introduction-to-machine-learning/docs/回归/逻辑回归.ipynb Cell 2\u001b[0m line \u001b[0;36m1\n\u001b[1;32m 11\u001b[0m logistic_reg \u001b[39m=\u001b[39m LogisticRegression()\n\u001b[1;32m 13\u001b[0m \u001b[39m# 拟合模型\u001b[39;00m\n\u001b[0;32m---> 14\u001b[0m logistic_reg\u001b[39m.\u001b[39;49mfit(X, y)\n\u001b[1;32m 16\u001b[0m \u001b[39m# 输出参数估计结果\u001b[39;00m\n\u001b[1;32m 17\u001b[0m \u001b[39mprint\u001b[39m(\u001b[39m\"\u001b[39m\u001b[39m参数估计结果:\u001b[39m\u001b[39m\"\u001b[39m)\n", - "File \u001b[0;32m~/tool/anaconda3/envs/data-explore/lib/python3.11/site-packages/sklearn/base.py:1152\u001b[0m, in \u001b[0;36m_fit_context..decorator..wrapper\u001b[0;34m(estimator, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1145\u001b[0m estimator\u001b[39m.\u001b[39m_validate_params()\n\u001b[1;32m 1147\u001b[0m \u001b[39mwith\u001b[39;00m config_context(\n\u001b[1;32m 1148\u001b[0m skip_parameter_validation\u001b[39m=\u001b[39m(\n\u001b[1;32m 1149\u001b[0m prefer_skip_nested_validation \u001b[39mor\u001b[39;00m global_skip_validation\n\u001b[1;32m 1150\u001b[0m )\n\u001b[1;32m 1151\u001b[0m ):\n\u001b[0;32m-> 1152\u001b[0m \u001b[39mreturn\u001b[39;00m fit_method(estimator, \u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n", - "File \u001b[0;32m~/tool/anaconda3/envs/data-explore/lib/python3.11/site-packages/sklearn/linear_model/_logistic.py:1208\u001b[0m, in \u001b[0;36mLogisticRegression.fit\u001b[0;34m(self, X, y, sample_weight)\u001b[0m\n\u001b[1;32m 1205\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m 1206\u001b[0m _dtype \u001b[39m=\u001b[39m [np\u001b[39m.\u001b[39mfloat64, np\u001b[39m.\u001b[39mfloat32]\n\u001b[0;32m-> 1208\u001b[0m X, y \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_validate_data(\n\u001b[1;32m 1209\u001b[0m X,\n\u001b[1;32m 1210\u001b[0m y,\n\u001b[1;32m 1211\u001b[0m accept_sparse\u001b[39m=\u001b[39;49m\u001b[39m\"\u001b[39;49m\u001b[39mcsr\u001b[39;49m\u001b[39m\"\u001b[39;49m,\n\u001b[1;32m 1212\u001b[0m dtype\u001b[39m=\u001b[39;49m_dtype,\n\u001b[1;32m 1213\u001b[0m order\u001b[39m=\u001b[39;49m\u001b[39m\"\u001b[39;49m\u001b[39mC\u001b[39;49m\u001b[39m\"\u001b[39;49m,\n\u001b[1;32m 1214\u001b[0m accept_large_sparse\u001b[39m=\u001b[39;49msolver \u001b[39mnot\u001b[39;49;00m \u001b[39min\u001b[39;49;00m [\u001b[39m\"\u001b[39;49m\u001b[39mliblinear\u001b[39;49m\u001b[39m\"\u001b[39;49m, \u001b[39m\"\u001b[39;49m\u001b[39msag\u001b[39;49m\u001b[39m\"\u001b[39;49m, \u001b[39m\"\u001b[39;49m\u001b[39msaga\u001b[39;49m\u001b[39m\"\u001b[39;49m],\n\u001b[1;32m 1215\u001b[0m )\n\u001b[1;32m 1216\u001b[0m check_classification_targets(y)\n\u001b[1;32m 1217\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mclasses_ \u001b[39m=\u001b[39m np\u001b[39m.\u001b[39munique(y)\n", - "File \u001b[0;32m~/tool/anaconda3/envs/data-explore/lib/python3.11/site-packages/sklearn/base.py:622\u001b[0m, in \u001b[0;36mBaseEstimator._validate_data\u001b[0;34m(self, X, y, reset, validate_separately, cast_to_ndarray, **check_params)\u001b[0m\n\u001b[1;32m 620\u001b[0m y \u001b[39m=\u001b[39m check_array(y, input_name\u001b[39m=\u001b[39m\u001b[39m\"\u001b[39m\u001b[39my\u001b[39m\u001b[39m\"\u001b[39m, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mcheck_y_params)\n\u001b[1;32m 621\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[0;32m--> 622\u001b[0m X, y \u001b[39m=\u001b[39m check_X_y(X, y, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mcheck_params)\n\u001b[1;32m 623\u001b[0m out \u001b[39m=\u001b[39m X, y\n\u001b[1;32m 625\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m no_val_X \u001b[39mand\u001b[39;00m check_params\u001b[39m.\u001b[39mget(\u001b[39m\"\u001b[39m\u001b[39mensure_2d\u001b[39m\u001b[39m\"\u001b[39m, \u001b[39mTrue\u001b[39;00m):\n", - "File \u001b[0;32m~/tool/anaconda3/envs/data-explore/lib/python3.11/site-packages/sklearn/utils/validation.py:1162\u001b[0m, in \u001b[0;36mcheck_X_y\u001b[0;34m(X, y, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, multi_output, ensure_min_samples, ensure_min_features, y_numeric, estimator)\u001b[0m\n\u001b[1;32m 1142\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mValueError\u001b[39;00m(\n\u001b[1;32m 1143\u001b[0m \u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m{\u001b[39;00mestimator_name\u001b[39m}\u001b[39;00m\u001b[39m requires y to be passed, but the target y is None\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m 1144\u001b[0m )\n\u001b[1;32m 1146\u001b[0m X \u001b[39m=\u001b[39m check_array(\n\u001b[1;32m 1147\u001b[0m X,\n\u001b[1;32m 1148\u001b[0m accept_sparse\u001b[39m=\u001b[39maccept_sparse,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 1159\u001b[0m input_name\u001b[39m=\u001b[39m\u001b[39m\"\u001b[39m\u001b[39mX\u001b[39m\u001b[39m\"\u001b[39m,\n\u001b[1;32m 1160\u001b[0m )\n\u001b[0;32m-> 1162\u001b[0m y \u001b[39m=\u001b[39m _check_y(y, multi_output\u001b[39m=\u001b[39;49mmulti_output, y_numeric\u001b[39m=\u001b[39;49my_numeric, estimator\u001b[39m=\u001b[39;49mestimator)\n\u001b[1;32m 1164\u001b[0m check_consistent_length(X, y)\n\u001b[1;32m 1166\u001b[0m \u001b[39mreturn\u001b[39;00m X, y\n", - "File \u001b[0;32m~/tool/anaconda3/envs/data-explore/lib/python3.11/site-packages/sklearn/utils/validation.py:1183\u001b[0m, in \u001b[0;36m_check_y\u001b[0;34m(y, multi_output, y_numeric, estimator)\u001b[0m\n\u001b[1;32m 1181\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m 1182\u001b[0m estimator_name \u001b[39m=\u001b[39m _check_estimator_name(estimator)\n\u001b[0;32m-> 1183\u001b[0m y \u001b[39m=\u001b[39m column_or_1d(y, warn\u001b[39m=\u001b[39;49m\u001b[39mTrue\u001b[39;49;00m)\n\u001b[1;32m 1184\u001b[0m _assert_all_finite(y, input_name\u001b[39m=\u001b[39m\u001b[39m\"\u001b[39m\u001b[39my\u001b[39m\u001b[39m\"\u001b[39m, estimator_name\u001b[39m=\u001b[39mestimator_name)\n\u001b[1;32m 1185\u001b[0m _ensure_no_complex_data(y)\n", - "File \u001b[0;32m~/tool/anaconda3/envs/data-explore/lib/python3.11/site-packages/sklearn/utils/validation.py:1244\u001b[0m, in \u001b[0;36mcolumn_or_1d\u001b[0;34m(y, dtype, warn)\u001b[0m\n\u001b[1;32m 1233\u001b[0m warnings\u001b[39m.\u001b[39mwarn(\n\u001b[1;32m 1234\u001b[0m (\n\u001b[1;32m 1235\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mA column-vector y was passed when a 1d array was\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 1240\u001b[0m stacklevel\u001b[39m=\u001b[39m\u001b[39m2\u001b[39m,\n\u001b[1;32m 1241\u001b[0m )\n\u001b[1;32m 1242\u001b[0m \u001b[39mreturn\u001b[39;00m _asarray_with_order(xp\u001b[39m.\u001b[39mreshape(y, (\u001b[39m-\u001b[39m\u001b[39m1\u001b[39m,)), order\u001b[39m=\u001b[39m\u001b[39m\"\u001b[39m\u001b[39mC\u001b[39m\u001b[39m\"\u001b[39m, xp\u001b[39m=\u001b[39mxp)\n\u001b[0;32m-> 1244\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mValueError\u001b[39;00m(\n\u001b[1;32m 1245\u001b[0m \u001b[39m\"\u001b[39m\u001b[39my should be a 1d array, got an array of shape \u001b[39m\u001b[39m{}\u001b[39;00m\u001b[39m instead.\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m.\u001b[39mformat(shape)\n\u001b[1;32m 1246\u001b[0m )\n", - "\u001b[0;31mValueError\u001b[0m: y should be a 1d array, got an array of shape (100, 5) instead." - ] + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjUAAAHFCAYAAAAKbwgcAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAACqMUlEQVR4nOzdd3xT1fvA8c9NmqR77z3ZlFH2kKWgIgrKcOHCvcG9fo6viltcuHCjCCqoOABBpoCUvWfp3numWef3R22hNNUW2qZpz/v16utl773JfRJs8/Q85zxHEUIIJEmSJEmS7JzK1gFIkiRJkiS1BJnUSJIkSZLUIcikRpIkSZKkDkEmNZIkSZIkdQgyqZEkSZIkqUOQSY0kSZIkSR2CTGokSZIkSeoQZFIjSZIkSVKHIJMaSZIkSZI6BJnUSFI78/nnn6MoCtu3b2/T+44ePZrRo0c36zEHDx7kmWeeITk5ucG5G264gcjIyBaJ7ZlnnkFRlLovjUZDeHg4t9xyC9nZ2S1yD3vQku+pJHVEDrYOQJKk9mH+/PnNfszBgwd59tlnGT16dIMP26eeeor77ruvhaKrsWLFCjw8PCgvL2fVqlW8/vrrbN68md27d6PRaFr0Xu1Ra7ynktSRyKRGkiQAevTo0aLPFxMT06LPB5CQkICvry8A559/Pvn5+Xz22Wds2rSJMWPGtPj9GiOEQK/X4+Tk1Gb3hNZ5TyWpI5HlJ0myU5s2bWLcuHG4ubnh7OzMsGHD+PXXX61eN3ToUBwdHQkJCeGpp55iwYIFKIpSr2xkrfz0/vvv06dPH1xdXXFzc6Nbt248/vjjQE2ZbNq0aQCMGTOmrjT0+eefA9ZLJRaLhXfeeYe+ffvi5OSEp6cnQ4YM4eeffz6r92DAgAEA5OTk1Du+evVqxo0bh7u7O87OzgwfPpw1a9Y0ePxPP/1EfHw8Op2O6Oho3nrrrbpS1+kUReHuu+/mgw8+oHv37uh0Or744gsAjh07xtVXX42/vz86nY7u3bvz3nvvNXjdzz//PF27dq173fHx8bz11lt11+Tl5XHrrbcSFhaGTqfDz8+P4cOHs3r16rprrL2ner2exx57jKioKLRaLSEhIdx1110UFxfXuy4yMpJLLrmEFStW0L9/f5ycnOjWrRuffvpp095sSbIDcqRGkuzQ+vXrueCCC4iPj+eTTz5Bp9Mxf/58Jk2axKJFi5gxYwYAe/fu5YILLqBLly588cUXODs788EHH7Bw4cL/vMe3337LnXfeyT333MNrr72GSqXi+PHjHDx4EICJEyfy4osv8vjjj/Pee+/Rv39/4N9HE2644QYWLlzIrFmzeO6559BqtezcudPqnJymOHnyJABdunSpO7Zw4UKuu+46LrvsMr744gs0Gg0ffvghEyZMYOXKlYwbNw6oKWVdfvnlnHfeeSxevBiTycRrr73WIEGq9eOPP7Jx40b+7//+j8DAQPz9/Tl48CDDhg0jPDyc119/ncDAQFauXMm9995Lfn4+Tz/9NACvvPIKzzzzDE8++STnnXceRqORw4cP10s8Zs6cyc6dO3nhhRfo0qULxcXF7Ny5k4KCgkZfvxCCyZMns2bNGh577DFGjhzJ3r17efrpp9myZQtbtmxBp9PVXb9nzx4eeOABHn30UQICAliwYAGzZs0iNjaW884776z+DSSpXRGSJLUrn332mQBEYmJio9cMGTJE+Pv7i7KysrpjJpNJ9OrVS4SGhgqLxSKEEGLatGnCxcVF5OXl1V1nNptFjx49BCBOnjxZd3zUqFFi1KhRdd/ffffdwtPT819j/e677wQg1q5d2+Dc9ddfLyIiIuq+37BhgwDEE0888a/Pac3TTz8tAJGdnS2MRqMoKioSS5YsES4uLuKqq66qu66iokJ4e3uLSZMm1Xu82WwWffr0EYMGDao7NnDgQBEWFiaqq6vrjpWVlQkfHx9x5q9GQHh4eIjCwsJ6xydMmCBCQ0NFSUlJveN33323cHR0rLv+kksuEX379v3X1+jq6iruv//+f73mzPd0xYoVAhCvvPJKvesWL14sAPHRRx/VHYuIiBCOjo4iJSWl7lhVVZXw9vYWt91227/eV5LshSw/SZKdqaio4O+//2bq1Km4urrWHVer1cycOZP09HSOHDkC1IzojB07tm4eCoBKpWL69On/eZ9BgwZRXFzMVVddxU8//UR+fv45xf37778DcNddd531cwQGBqLRaPDy8mL69OkkJCTUlYEANm/eTGFhIddffz0mk6nuy2KxcOGFF5KYmEhFRQUVFRVs376dyZMno9Vq6x7v6urKpEmTrN577NixeHl51X2v1+tZs2YNU6ZMwdnZud79Lr74YvR6PVu3bgVq3ss9e/Zw5513snLlSkpLSxs8/6BB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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ - "from sklearn.linear_model import LogisticRegression\n", "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from sklearn.linear_model import LogisticRegression\n", "\n", - "# 生成样本数据\n", + "# 创建一些随机数据用于训练\n", "np.random.seed(0)\n", - "n_samples, n_features = 100, 10\n", - "X = np.random.randn(n_samples, n_features)\n", - "y = np.random.randn(n_samples) # 生成5个相关联的目标变量\n", - "\n", - "# 创建逻辑回归模型\n", - "logistic_reg = LogisticRegression()\n", - "\n", - "# 拟合模型\n", - "logistic_reg.fit(X, y)\n", - "\n", - "# 输出参数估计结果\n", - "print(\"参数估计结果:\")\n", - "print(logistic_reg.coef_)\n", + "X1 = np.random.randn(50, 2) + [2, 2]\n", + "X2 = np.random.randn(50, 2) + [-2, -2]\n", + "X = np.concatenate((X1, X2))\n", + "y = np.concatenate((np.ones(50), np.zeros(50)))\n", + "\n", + "# 训练逻辑回归模型\n", + "model = LogisticRegression()\n", + "model.fit(X, y)\n", + "\n", + "# 可视化分类结果\n", + "x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1\n", + "y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1\n", + "xx, yy = np.meshgrid(np.linspace(x_min, x_max, 100), np.linspace(y_min, y_max, 100))\n", + "Z = model.predict(np.c_[xx.ravel(), yy.ravel()])\n", + "Z = Z.reshape(xx.shape)\n", + "\n", + "plt.contourf(xx, yy, Z, alpha=0.8)\n", + "plt.scatter(X[:, 0], X[:, 1], c=y, edgecolors='k')\n", + "plt.xlabel('Feature 1')\n", + "plt.ylabel('Feature 2')\n", + "plt.title('Logistic Regression')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "0b9c848d", + "metadata": {}, + "source": [ + "## 参考\n", "\n", - "# 进行预测\n", - "y_pred = logistic_reg.predict(X)" + "[1] 逻辑回归 https://zhuanlan.zhihu.com/p/580207932?utm_id=0" ] } ],