{"id":500,"date":"2025-05-02T23:30:19","date_gmt":"2025-05-02T15:30:19","guid":{"rendered":"https:\/\/www.vcoco.top\/?p=500"},"modified":"2025-05-19T14:56:27","modified_gmt":"2025-05-19T06:56:27","slug":"%e5%86%8d%e6%88%98%e6%9c%ba%e5%99%a8%e5%ad%a6%e4%b9%a0-%e6%89%8b%e6%92%95%e7%ae%97%e6%b3%95%ef%bc%88%e6%89%be%e5%b7%a5%e4%bd%9c%e7%af%87%ef%bc%89","status":"publish","type":"post","link":"https:\/\/www.vcoco.top\/index.php\/2025\/05\/02\/%e5%86%8d%e6%88%98%e6%9c%ba%e5%99%a8%e5%ad%a6%e4%b9%a0-%e6%89%8b%e6%92%95%e7%ae%97%e6%b3%95%ef%bc%88%e6%89%be%e5%b7%a5%e4%bd%9c%e7%af%87%ef%bc%89\/","title":{"rendered":"\u518d\u6218\u673a\u5668\u5b66\u4e60\u2014\u2014\u624b\u6495\u7b97\u6cd5\uff08\u627e\u5de5\u4f5c\u7bc7\uff09"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">K-Means<\/h3>\n\n\n\n<p>\u6a21\u677f\u9898\uff1a<a href=\"https:\/\/www.deep-ml.com\/problems\/17\" target=\"_blank\" rel=\"noreferrer noopener\">K-Means Clustering<\/a><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def k_means_clustering(points: list&#91;tuple&#91;float, float]], k: int, initial_centroids: list&#91;tuple&#91;float, float]], max_iterations: int) -&gt; list&#91;tuple&#91;float, float]]:\n    dist = np.zeros(len(points), dtype=np.int32) #points\u5f52\u5c5e\u7684\u4e2d\u5fc3\u70b9\u7d22\u5f15\n    final_centroids=initial_centroids\n    points=np.array(points)\n    initial_centroids=np.array(initial_centroids)\n\n    \n    for _ in range(max_iterations):\n        for i in range(len(points)):\n            d=np.zeros(k) #\u5230\u6bcf\u4e2a\u4e2d\u5fc3\u70b9\u7684\u8ddd\u79bb\n            for j in range(k):\n                d&#91;j]=( ((points&#91;i]-final_centroids&#91;j]) ** 2).sum() )\n            dist&#91;i]=d.argmin()\n        for kk in range(k):\n            final_centroids&#91;kk]= points&#91;np.where(dist==kk)].mean(axis=0)\n\n\n    return final_centroids<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u7ebf\u6027\u56de\u5f52<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">\u6b63\u5219\u6cd5\u6c42 $\\theta$<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>def linear_regression_normal_equation(X: list&#91;list&#91;float]], y: list&#91;float]) -&gt; list&#91;float]:\n\n&nbsp; &nbsp; X=np.array(X)\n\n&nbsp; &nbsp; y=np.array(y)\n\n&nbsp; &nbsp; theta=np.linalg.solve(X.T @ X, X.T @ y)\n\n&nbsp; &nbsp; return theta<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">\u68af\u5ea6\u4e0b\u964d\u6cd5\u6c42 $\\theta$<\/h4>\n\n\n\n<p>\u76ee\u6807\u51fd\u6570\uff1a$h_\\theta(x) = a_1 * x_1 + a_2 * x_2 + &#8230; + b$<\/p>\n\n\n\n<p>\u4ee3\u4ef7\u51fd $J(\\theta)$ \u5982\u4e0b:<\/p>\n\n\n\n<p>m: \u6837\u672c\u6570<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.vcoco.top\/wp-content\/uploads\/2025\/05\/image-2-937x1024.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"937\" height=\"1024\" data-original=\"https:\/\/www.vcoco.top\/wp-content\/uploads\/2025\/05\/image-2-937x1024.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-503\" style=\"aspect-ratio:0.9150390625;width:418px;height:auto\"  sizes=\"auto, (max-width: 937px) 100vw, 937px\" \/><\/div><\/figure>\n\n\n\n<p>\u5316\u6210\u77e9\u9635\u7684\u5f62\u5f0f\u5c31\u662f\u5982\u4e0b\uff1a<\/p>\n\n\n\n<p>$$y_{pred}=X \\times \\theta, error=y_{pred}-y, $$<\/p>\n\n\n\n<p>$$ gradient=(X.T \\times error) \/m$$<\/p>\n\n\n\n<p>\u6574\u4f53\u4ee3\u7801\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import numpy as np\ndef linear_regression_gradient_descent(X: np.ndarray, y: np.ndarray, alpha: float, iterations: int) -&gt; np.ndarray:\n    # Your code here, make sure to round\n    m, n = X.shape\n    theta = np.zeros((n, 1))\n    #print(y)\n    y=y.reshape(-1, 1)\n\n    for _ in range(iterations):\n        y_pred=X @ theta\n        #print(y_pred)\n        error=y_pred-y\n        #print('error', error)\n        gradient = (X.T @ error)\/m\n        #print(gradient)\n        theta -= alpha * gradient \n\n    return theta\n\nprint(linear_regression_gradient_descent(np.array(&#91;&#91;1, 1], &#91;1, 2], &#91;1, 3]]), np.array(&#91;1, 2, 3]), 0.01, 1000))<\/code><\/pre>\n\n\n\n<p><strong>\u5e38\u6570\u9879\u5904\u7406<\/strong>\uff08\u672c\u8d28\u4e0a\u53ef\u4ee5\u878d\u5408\u8fdb\u77e9\u9635\u4e2d\uff0c$b(x_b)$ \u76f8\u5f53\u4e8e $sample_b * x_b$\uff0c\u53ea\u4e0d\u8fc7\u8fd9\u4e2a $sample_b$ \u4e00\u76f4\u90fd\u662f1\uff0c\u7b49\u4ef7\u4e8e\u5e38\u6570\uff09<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.vcoco.top\/wp-content\/uploads\/2025\/05\/image-4-1024x622.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"622\" data-original=\"https:\/\/www.vcoco.top\/wp-content\/uploads\/2025\/05\/image-4-1024x622.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-511\" style=\"aspect-ratio:1.6463022508038585;width:425px;height:auto\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">\u7279\u5f81\u7f29\u653e<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6807\u51c6\u5316\u548c\u5f52\u4e00\u5316<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>def feature_scaling(data: np.ndarray) -> (np.ndarray, np.ndarray):\n    mean=data.mean(axis=0)\n    std=data.std(axis=0)\n    print(mean, std)\n    standardized_data = (data - mean) \/ std\n    \n    minv=data.min(axis=0) \n    maxv=data.max(axis=0)\n    normalized_data = (data - minv) \/ (maxv-minv)\n\n    return standardized_data, normalized_data\n\ndata = np.array(&#91;&#91;1, 2], &#91;3, 4], &#91;5, 6]])\nfeature_scaling(data)<\/code><\/pre>\n\n\n\n<p>###<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u7ebf\u6027\u4ee3\u6570<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">\u7279\u5f81\u503c<\/h4>\n\n\n\n<p><strong>\u5b9a\u4e491<\/strong>\uff1a\u8bbe $A$ \u662f $n$ \u9636\u77e9\u9635\uff0c\u5982\u679c\u6570 $\\lambda$ \u548c $n$ \u7ef4\u975e\u96f6 $\\alpha$ \u4f7f\u5173\u7cfb\u5f0f $A\\alpha = \\lambda \\alpha$\u6210\u7acb\uff0c\u5219\u8fd9\u6837\u7684\u6570\u79f0\u4e3a\u65b9\u9635 $A$ \u7684\u7279\u5f81\u503c\uff0c\u975e\u96f6\u5411\u91cf $\\alpha$ \u6210\u4e3a $A$\u5bf9\u5e94\u7279\u5f81\u503c $\\lambda$ \u7684\u7279\u5f81\u5411\u91cf\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u7279\u5f81\u503c $\\alpha \\ne 0$\uff0c\u7279\u5f81\u503c\u95ee\u9898\u662f\u5bf9\u65b9\u9635\u800c\u8a00\u7684\u3002<\/li>\n\n\n\n<li>$n$ \u9636\u65b9\u9635 $A$ \u7684\u7279\u5f81\u503c\uff0c\u5c31\u662f\u4f7f\u9f50\u6b21\u7ebf\u6027\u65b9\u7a0b\u7ec4 $(\\lambda I -A)x=0$ \u6709\u975e\u96f6\u89e3\u7684 $\\lambda$ \u503c\uff0c\u5373\u6ee1\u8db3\u65b9\u7a0b $\\left| \\lambda I &#8211; A \\right| =0$ \u7684 $\\lambda$ \u90fd\u662f\u77e9\u9635 $A$ \u7684\u7279\u5f81\u503c\u3002<\/li>\n<\/ol>\n\n\n\n<p><strong>\u5b9a\u4e492<\/strong>\uff1a $A$ \u662f $n$ \u9636\u77e9\u9635\uff0c$\\lambda I -A$ \u4e3a $A$ \u7684\u7279\u5f81\u77e9\u9635\uff0c\u5176\u884c\u5217\u5f0f\u4e3a $\\left| \\lambda I &#8211; A \\right|$ \u7684 $n$ \u6b21\u591a\u9879\u5f0f\uff0c\u79f0\u4e3a $A$ \u7684\u7279\u5f81\u591a\u9879\u5f0f\uff0c$\\left| \\lambda I &#8211; A \\right| =0$ \u79f0\u4e3a $A$ \u7684\u7279\u5f81\u65b9\u7a0b\u3002<\/p>\n\n\n\n<p><strong>\u4e8c\u9636\u65b9\u9635\u7279\u5f81\u503c\u6c42\u89e3\u4f8b\u5b50<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import numpy as np\nimport math\n\ndef calculate_eigenvalues(matrix) -&gt; list&#91;float]:\n    a, b, c, d=matrix&#91;0]&#91;0], matrix&#91;0]&#91;1], matrix&#91;1]&#91;0], matrix&#91;1]&#91;1]\n\n    theta = (a + d) ** 2 - 4 * (a*d-b*c)\n    x1=((a + d) - theta ** 0.5)\/2 \n    x2=((a + d) + theta ** 0.5)\/2\n\n    return &#91;max(x1, x2), min(x1, x2)]\n\n\nmatrix = &#91;&#91;2, 1], &#91;1, 2]]\n\ncalculate_eigenvalues(matrix)<\/code><\/pre>\n\n\n\n<p><strong>numpy\u6c42\u89e3<\/strong>\uff1a<code>eigenvalues, eigenvectors = np.linalg.eig(matrix)<\/code><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u9006\u9635\u6c42\u6cd5<\/h4>\n\n\n\n<p>\u4f34\u968f\u77e9\u9635\u6cd5\u548c\u9ad8\u65af\u6d88\u5143\u6cd5\u3002\u6709\u70b9\u9ebb\u70e6\uff0c\u4e4b\u540e\u6709\u9700\u8981\u518d\u8865\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u534f\u65b9\u5dee\u77e9\u9635<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5bf9\u89d2\u7ebf\u5143\u7d20&nbsp;$\\Sigma_{ii}$&nbsp;\u662f\u53d8\u91cf&nbsp;$X_i$\u200b&nbsp;\u7684\u200b<strong>\u200b\u65b9\u5dee\u200b<\/strong>\u200b\u3002<\/li>\n\n\n\n<li>\u975e\u5bf9\u89d2\u7ebf\u5143\u7d20$\\Sigma_{ij}$\u200b&nbsp;\u662f\u53d8\u91cf&nbsp;$X_i$ \u548c $X_j$\u200b\u7684\u200b<strong>\u200b\u534f\u65b9\u5dee\u200b<\/strong>\u200b\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u6c42\u6cd5\uff1a$$\\Sigma=\\frac{1}{n-1}(X-\\bar{X})^{T}(X-\\bar{X})$$<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>$\\bar{X}$&nbsp;\u662f\u6bcf\u4e2a\u53d8\u91cf\u7684\u5747\u503c\u5411\u91cf ($1\\times m$)\u3002<\/li>\n\n\n\n<li>$X- \\bar{X}$ \u8868\u793a\u6570\u636e\u4e2d\u5fc3\u5316\uff08\u6bcf\u4e2a\u53d8\u91cf\u51cf\u53bb\u5747\u503c\uff09\u3002<\/li>\n<\/ul>\n\n\n\n<p>Code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import numpy as np\r\n\r\n# \u5047\u8bbe X \u662f\uff08\u7279\u5f81\u6570\uff0c\u89c2\u6d4b\u503c\uff09\uff0c\u6b64\u65f6\u9700\u8981Transpose\r\n\r\ndef calculate_covariance_matrix(vectors: list&#91;list&#91;float]]) -> list&#91;list&#91;float]]:\r\n\tX=np.array(vectors).T\r\n\tX_b=X.mean(axis=0)\r\n\r\n\tres = (X-X_b).T @ (X-X_b) \/(X.shape&#91;0]-1)\r\n\r\n\treturn res\r\n\r\nvec=&#91;&#91;1, 2, 3],\r\n\t&#91;4, 5, 6]]\r\n\r\n\r\ncalculate_covariance_matrix(vec)<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">SVD\uff08\u5947\u5f02\u503c\u5206\u89e3\uff09<\/h4>\n\n\n\n<p>numpy\u8ba1\u7b97\uff1a<code>U, S, Vh = np.linalg.svd(A, full_matrices=True)<\/code><\/p>\n\n\n\n<p>\u624b\u6495\u540e\u8865<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>K-Means \u6a21\u677f\u9898\uff1aK-Means Clustering \u7ebf\u6027\u56de\u5f52 \u6b63\u5219\u6cd5\u6c42 $\\theta$ \u68af\u5ea6\u4e0b\u964d\u6cd5 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[82],"tags":[],"class_list":["post-500","post","type-post","status-publish","format-standard","hentry","category-machine-learning"],"_links":{"self":[{"href":"https:\/\/www.vcoco.top\/index.php\/wp-json\/wp\/v2\/posts\/500","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.vcoco.top\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.vcoco.top\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.vcoco.top\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vcoco.top\/index.php\/wp-json\/wp\/v2\/comments?post=500"}],"version-history":[{"count":17,"href":"https:\/\/www.vcoco.top\/index.php\/wp-json\/wp\/v2\/posts\/500\/revisions"}],"predecessor-version":[{"id":566,"href":"https:\/\/www.vcoco.top\/index.php\/wp-json\/wp\/v2\/posts\/500\/revisions\/566"}],"wp:attachment":[{"href":"https:\/\/www.vcoco.top\/index.php\/wp-json\/wp\/v2\/media?parent=500"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vcoco.top\/index.php\/wp-json\/wp\/v2\/categories?post=500"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vcoco.top\/index.php\/wp-json\/wp\/v2\/tags?post=500"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}