diff --git a/test.ipynb b/test.ipynb index 05203129ea345e62aee24d321883a7c2c7e2093b..3c0d853b712fdffada0d4ece75867169b2681115 100644 --- a/test.ipynb +++ b/test.ipynb @@ -14,10 +14,56 @@ } ], "source": [ - "import datetime\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", "\n", - "today = datetime.date.today()\n", - "print(\"今天的日期是: \", today)\n" + "\n", + "def sigmoid(z):\n", + " return 1 / (1 + np.exp(-z))\n", + "\n", + "def costFunction(theta, X, y):\n", + " m = len(y)\n", + " J = 0\n", + " grad = np.zeros(theta.shape)\n", + " \n", + " h = sigmoid(np.dot(X, theta))\n", + " J = (-1/m) * np.sum(y*np.log(h) + (1-y)*np.log(1-h))\n", + " grad = (1/m) * np.dot(X.T, (h-y))\n", + " \n", + " return J, grad\n", + "\n", + "def gradientDescent(X, y, theta, alpha, num_iters):\n", + " m = len(y)\n", + " J_history = np.zeros(num_iters)\n", + " \n", + " for i in range(num_iters):\n", + " J_history[i], grad = costFunction(theta, X, y)\n", + " theta = theta - alpha*grad\n", + " \n", + " return theta, J_history\n", + "\n", + "# 生成样本数据\n", + "np.random.seed(0)\n", + "X = np.random.randn(100, 2)\n", + "ones = np.ones((100, 1))\n", + "X = np.hstack((ones, X))\n", + "y = np.random.randint(0, 2, size=(100,1))\n", + "\n", + "# 初始化theta\n", + "initial_theta = np.zeros((X.shape[1], 1))\n", + "\n", + "# 梯度下降\n", + "alpha = 0.1\n", + "num_iters = 1000\n", + "theta, J_history = gradientDescent(X, y, initial_theta, alpha, num_iters)\n", + "\n", + "# 绘制决策边界\n", + "x1 = np.arange(-3, 3, 0.1)\n", + "x2 = -(theta[0]+theta[1]*x1)/theta[2]\n", + "plt.plot(x1, x2, label='Decision Boundary')\n", + "plt.scatter(X[:, 1], X[:, 2], c=y.flatten())\n", + "plt.legend()\n", + "plt.show()\n" ] }, { @@ -114,7 +160,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.5" + "version": "3.9.5 (default, Nov 23 2021, 15:27:38) \n[GCC 9.3.0]" }, "orig_nbformat": 4, "vscode": {