{"id":48,"date":"2024-02-23T06:47:34","date_gmt":"2024-02-22T22:47:34","guid":{"rendered":"http:\/\/www.uboger.com\/?p=48"},"modified":"2024-04-11T02:40:22","modified_gmt":"2024-04-10T18:40:22","slug":"%e5%a6%82%e4%bd%95%e7%94%a8%e4%bb%a3%e7%a0%81%e9%a2%84%e6%b5%8b%e8%82%a1%e7%a5%a8%e8%b5%b0%e5%8a%bf","status":"publish","type":"post","link":"https:\/\/www.uboger.com\/?p=48","title":{"rendered":"\u5982\u4f55\u7528\u4ee3\u7801\u9884\u6d4b\u80a1\u7968\u8d70\u52bf"},"content":{"rendered":"\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" data-id=\"51\" src=\"http:\/\/www.uboger.com\/wp-content\/uploads\/2024\/02\/\u6355\u83b7-1024x563.png\" alt=\"\" class=\"wp-image-51\" \/><\/figure>\n<\/figure>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u6a21\u62df\u751f\u6210\u80a1\u7968\u4ef7\u683c\u6570\u636e<\/strong>\uff1a<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4f7f\u7528simulate_stock_prices\u51fd\u6570\u6a21\u62df\u751f\u6210\u4e86\u4e00\u6bb5\u80a1\u7968\u4ef7\u683c\u7684\u5386\u53f2\u6570\u636e\u3002<\/li>\n\n\n\n<li>\u53c2\u6570\u5305\u62ecnum_days\uff08\u6a21\u62df\u5929\u6570\uff09\u3001initial_price\uff08\u521d\u59cb\u80a1\u4ef7\uff09\u548cvolatility\uff08\u6ce2\u52a8\u7387\uff09\u3002<\/li>\n\n\n\n<li>\u5728\u6a21\u62df\u8fc7\u7a0b\u4e2d\uff0c\u6bcf\u5929\u7684\u80a1\u7968\u4ef7\u683c\u6839\u636e\u524d\u4e00\u5929\u7684\u4ef7\u683c\u52a0\u4e0a\u4e00\u4e2a\u4ece\u6b63\u6001\u5206\u5e03\u4e2d\u62bd\u6837\u5f97\u5230\u7684\u6ce2\u52a8\u91cf\u5f97\u5230\u3002<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u8bbe\u7f6e\u53c2\u6570<\/strong>\uff1a<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u8bbe\u7f6e\u4e86num_days\uff08\u6a21\u62df\u5929\u6570\uff09\u3001initial_price\uff08\u521d\u59cb\u80a1\u4ef7\uff09\u548cvolatility\uff08\u6ce2\u52a8\u7387\uff09\u7b49\u53c2\u6570\u3002<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u62df\u5408\u9ad8\u65af\u8fc7\u7a0b\u6a21\u578b<\/strong>\uff1a<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4f7f\u7528GaussianProcessRegressor\u7c7b\u6765\u62df\u5408\u80a1\u7968\u4ef7\u683c\u6570\u636e\u3002<\/li>\n\n\n\n<li>\u9009\u62e9\u4e86\u5408\u9002\u7684\u9ad8\u65af\u8fc7\u7a0b\u5185\u6838\uff0c\u8fd9\u91cc\u4f7f\u7528\u5e38\u91cf\u6838\uff08ConstantKernel\uff09\u4e58\u4ee5\u5f84\u5411\u57fa\u51fd\u6570\u6838\uff08RBF\uff09\u3002<\/li>\n\n\n\n<li>\u8bbe\u7f6e\u4e86n_restarts_optimizer\u53c2\u6570\uff0c\u8868\u793a\u5728\u62df\u5408\u6a21\u578b\u65f6\u91cd\u65b0\u542f\u52a8\u4f18\u5316\u7b97\u6cd5\u7684\u6b21\u6570\u3002<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u7ed8\u5236\u9884\u6d4b\u7ed3\u679c<\/strong>\uff1a<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5728\u6574\u4e2a\u6a21\u62df\u65f6\u95f4\u8303\u56f4\u5185\u751f\u6210\u4e86\u9884\u6d4b\u503c\uff0c\u5e76\u8ba1\u7b97\u4e86\u6bcf\u4e2a\u9884\u6d4b\u503c\u7684\u7f6e\u4fe1\u533a\u95f4\u3002<\/li>\n\n\n\n<li>\u4f7f\u7528plot\u51fd\u6570\u7ed8\u5236\u4e86\u5b9e\u9645\u80a1\u7968\u4ef7\u683c\u548c\u9884\u6d4b\u80a1\u7968\u4ef7\u683c\u7684\u66f2\u7ebf\u3002<\/li>\n\n\n\n<li>\u4f7f\u7528fill_between\u51fd\u6570\u586b\u5145\u4e86\u9884\u6d4b\u80a1\u7968\u4ef7\u683c\u66f2\u7ebf\u5468\u56f4\u7684\u7f6e\u4fe1\u533a\u95f4\u3002<\/li>\n\n\n\n<li>\u6dfb\u52a0\u4e86\u6807\u7b7e\u3001\u6807\u9898\u548c\u56fe\u4f8b\u7b49\u56fe\u5f62\u5143\u7d20\uff0c\u4f7f\u56fe\u8868\u66f4\u5177\u53ef\u8bfb\u6027\u3002<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u7a0b\u5e8f\u4ee3\u7801\uff1a<\/strong><\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>import numpy as np\nimport matplotlib.pyplot as plt\nfrom sklearn.gaussian_process import GaussianProcessRegressor\nfrom sklearn.gaussian_process.kernels import RBF, ConstantKernel as C\n\n# \u6a21\u62df\u751f\u6210\u80a1\u7968\u4ef7\u683c\u6570\u636e\ndef simulate_stock_prices(num_days, initial_price, volatility):\n    price = initial_price\n    prices = &#091;price]\n    for _ in range(num_days):\n        price_change = np.random.normal(0, volatility)\n        price += price_change\n        prices.append(price)\n    return np.array(prices)\n\n# \u53c2\u6570\u8bbe\u7f6e\nnum_days = 100\ninitial_price = 100  # \u521d\u59cb\u80a1\u4ef7\nvolatility = 1.0     # \u6ce2\u52a8\u7387\n\n# \u6a21\u62df\u751f\u6210\u80a1\u7968\u4ef7\u683c\u6570\u636e\ndays = np.arange(num_days + 1)\nstock_prices = simulate_stock_prices(num_days, initial_price, volatility)\n\n# \u9ad8\u65af\u8fc7\u7a0b\u56de\u5f52\u6a21\u578b\nkernel = C(1.0, (1e-3, 1e3)) * RBF(1.0, (1e-2, 1e2))\ngp = GaussianProcessRegressor(kernel=kernel, n_restarts_optimizer=10)\n\n# \u62df\u5408\u9ad8\u65af\u8fc7\u7a0b\u6a21\u578b\ngp.fit(days.reshape(-1, 1), stock_prices)\n\n# \u5728\u6574\u4e2a\u8303\u56f4\u5185\u751f\u6210\u9884\u6d4b\u503c\nX_pred = np.linspace(0, num_days, 1000).reshape(-1, 1)\ny_pred, sigma = gp.predict(X_pred, return_std=True)\n\n# \u8bbe\u7f6e\u4e2d\u6587\u5b57\u4f53\nplt.rcParams&#091;'font.sans-serif'] = &#091;'SimHei']\nplt.rcParams&#091;'axes.unicode_minus'] = False\n\n# \u7ed8\u5236\u9884\u6d4b\u7ed3\u679c\nplt.figure(figsize=(10, 6))\nplt.plot(days, stock_prices, 'r-', label='\u5b9e\u9645\u4ef7\u683c')\nplt.plot(X_pred, y_pred, 'b-', label='\u9884\u6d4b\u4ef7\u683c')\nplt.fill_between(X_pred.flatten(), y_pred - 1.96 * sigma, y_pred + 1.96 * sigma,\n                 alpha=0.2, color='blue')\nplt.xlabel('\u65e5\u671f')\nplt.ylabel('\u80a1\u7968\u4ef7\u683c')\nplt.title('\u80a1\u7968\u4ef7\u683c\u7684\u9ad8\u65af\u8fc7\u7a0b\u56de\u5f52\u9884\u6d4b')\nplt.legend()\nplt.show()\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">\u5728\u8fd9\u4e2a\u793a\u4f8b\u4e2d\uff0c\u6211\u4eec\u6a21\u62df\u4e86\u80a1\u7968\u4ef7\u683c\u6570\u636e\uff0c\u7136\u540e\u4f7f\u7528\u9ad8\u65af\u8fc7\u7a0b\u56de\u5f52\u6a21\u578b\u6765\u62df\u5408\u8fd9\u4e9b\u6570\u636e\u3002\u6700\u540e\uff0c\u6211\u4eec\u4f7f\u7528\u62df\u5408\u6a21\u578b\u751f\u6210\u4e86\u5bf9\u672a\u6765\u80a1\u7968\u4ef7\u683c\u7684\u9884\u6d4b\uff0c\u5e76\u5c06\u9884\u6d4b\u7ed3\u679c\u4e0e\u5b9e\u9645\u4ef7\u683c\u7ed8\u5236\u5728\u56fe\u8868\u4e0a\uff0c\u4ee5\u53ef\u89c6\u5316\u6a21\u62df\u80a1\u7968\u8d70\u52bf\u3002<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u7a0b\u5e8f\u4ee3\u7801\uff1a \u5728\u8fd9\u4e2a\u793a\u4f8b\u4e2d\uff0c\u6211\u4eec\u6a21&#46;&#46;&#46;<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[8],"tags":[],"class_list":["post-48","post","type-post","status-publish","format-standard","hentry","category-app"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.uboger.com\/index.php?rest_route=\/wp\/v2\/posts\/48","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.uboger.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.uboger.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.uboger.com\/index.php?rest_route=\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.uboger.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=48"}],"version-history":[{"count":3,"href":"https:\/\/www.uboger.com\/index.php?rest_route=\/wp\/v2\/posts\/48\/revisions"}],"predecessor-version":[{"id":53,"href":"https:\/\/www.uboger.com\/index.php?rest_route=\/wp\/v2\/posts\/48\/revisions\/53"}],"wp:attachment":[{"href":"https:\/\/www.uboger.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=48"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.uboger.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=48"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.uboger.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=48"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}