{"id":1814,"date":"2025-01-21T07:57:00","date_gmt":"2025-01-20T23:57:00","guid":{"rendered":"https:\/\/blog.laoyulaoyu.top\/?p=1814"},"modified":"2025-01-19T17:25:59","modified_gmt":"2025-01-19T09:25:59","slug":"%e3%80%82%e3%80%82%e3%80%82%e7%a7%91%e6%8a%80%e8%82%a1%e9%a2%84%e6%b5%8b%e6%96%b0%e5%88%a9%e5%99%a8%ef%bc%9anlp%e6%83%85%e7%bb%aa%e5%88%86%e6%9e%90%e4%b8%8e%e6%9c%ba%e5%99%a8%e5%ad%a6%e4%b9%a0-2","status":"publish","type":"post","link":"https:\/\/www.laoyulaoyu.com\/index.php\/2025\/01\/21\/%e3%80%82%e3%80%82%e3%80%82%e7%a7%91%e6%8a%80%e8%82%a1%e9%a2%84%e6%b5%8b%e6%96%b0%e5%88%a9%e5%99%a8%ef%bc%9anlp%e6%83%85%e7%bb%aa%e5%88%86%e6%9e%90%e4%b8%8e%e6%9c%ba%e5%99%a8%e5%ad%a6%e4%b9%a0-2\/","title":{"rendered":"\u79d1\u6280\u80a1\u9884\u6d4b\u65b0\u5229\u5668\uff1aNLP\u60c5\u7eea\u5206\u6790\u4e0e\u673a\u5668\u5b66\u4e60\u7684\u5b8c\u7f8e\u878d\u5408\uff08\u4e09\uff09"},"content":{"rendered":"\n<p>\u4f5c\u8005\uff1a<a href=\"https:\/\/www.laoyulaoyu.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">\u8001\u4f59\u635e\u9c7c<\/a><\/p>\n\n\n\n<p><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-cyan-bluish-gray-color\">\u539f\u521b\u4e0d\u6613\uff0c\u8f6c\u8f7d\u8bf7\u6807\u660e\u51fa\u5904\u53ca\u539f\u4f5c\u8005\u3002<\/mark><\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/122502.png\" alt=\"\" class=\"wp-image-3559\"\/><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<pre class=\"wp-block-verse\"><strong>\u5199\u5728\u524d\u9762\u7684\u8bdd\uff1a<\/strong>\u4eca\u5929\u6211\u5c06\u5b8c\u6210<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">NLP\u60c5\u611f\u5206\u6790\u4e0e\u673a\u5668\u5b66\u4e60\u878d\u5408\u5e94\u7528\u4e8e\u79d1\u6280\u80a1\u6295\u8d44<\/mark><\/mark>\u8fd9\u4e2a\u7cfb\u5217\uff0c\u672c\u6587\u7684\u4e3b\u8981\u5185\u5bb9\u662f\u4f7f\u7528GRU\u8fdb\u884c\u80a1\u7968\u4ef7\u683c\u9884\u6d4b\uff0c\u4ee5\u53ca\u4f7f\u7528 MLBC \u8fdb\u884c\u5e02\u573a\u60c5\u7eea\u5206\u6790\uff0c\u8fd9\u5c06\u8fdb\u4e00\u6b65\u63d0\u5347\u9884\u6d4b\u7684\u51c6\u786e\u6027\u548c\u53ca\u65f6\u6027\u3002<\/pre>\n<\/blockquote>\n\n\n\n<p id=\"ee3d\">\u9605\u8bfb\u672c\u7ae0\u8282\u7684\u4e00\u4e9b\u524d\u63d0\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5b8c\u6210\u672c\u7cfb\u5217\u524d\u4e24\u7ae0\u8282\u7684\u5b66\u4e60\uff1b<\/li>\n\n\n\n<li>\u57fa\u672c\u638c\u63e1\u4e86\u5468\u6807\u91cf\u3001\u77e2\u91cf\u60c5\u7eea\u8bc4\u5206\u7684\u65b9\u6cd5\uff1b<\/li>\n\n\n\n<li>\u719f\u6089\u4e86<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-black-color\">\u901a\u8fc7\u6293\u53d6\u6700\u65b0\u7684\u8c37\u6b4c\u65b0\u95fb\u548c\u4f7f\u7528Yahoo Finance API\u83b7\u53d6\u7684\u8d22\u52a1\u6570\u636e<\/mark>\uff1b<\/li>\n\n\n\n<li>\u80fd\u5bf911 \u79cd\u79d1\u6280\u80a1\u7684\u6bcf\u65e5\u5e73\u5747\u77e2\u91cf\u60c5\u7eea\u5f97\u5206\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u524d\u4e24\u4e2a\u7ae0\u8282\u7684\u94fe\u63a5\u5982\u4e0b\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/blog.laoyulaoyu.top\/index.php\/2025\/01\/18\/%e7%a7%91%e6%8a%80%e8%82%a1%e9%a2%84%e6%b5%8b%e6%96%b0%e5%88%a9%e5%99%a8%ef%bc%9anlp%e6%83%85%e7%bb%aa%e5%88%86%e6%9e%90%e4%b8%8e%e6%9c%ba%e5%99%a8%e5%ad%a6%e4%b9%a0%e7%9a%84%e5%ae%8c%e7%be%8e\/\">\u79d1\u6280\u80a1\u9884\u6d4b\u65b0\u5229\u5668\uff1aNLP\u60c5\u7eea\u5206\u6790\u4e0e\u673a\u5668\u5b66\u4e60\u7684\u5b8c\u7f8e\u878d\u5408\uff08\u4e00\uff09<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/blog.laoyulaoyu.top\/index.php\/2025\/01\/19\/%e3%80%82%e3%80%82%e3%80%82%e7%a7%91%e6%8a%80%e8%82%a1%e9%a2%84%e6%b5%8b%e6%96%b0%e5%88%a9%e5%99%a8%ef%bc%9anlp%e6%83%85%e7%bb%aa%e5%88%86%e6%9e%90%e4%b8%8e%e6%9c%ba%e5%99%a8%e5%ad%a6%e4%b9%a0\/\">\u79d1\u6280\u80a1\u9884\u6d4b\u65b0\u5229\u5668\uff1aNLP\u60c5\u7eea\u5206\u6790\u4e0e\u673a\u5668\u5b66\u4e60\u7684\u5b8c\u7f8e\u878d\u5408\uff08\u4e8c\uff09<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u4e00\u3001GRU \u80a1\u7968\u4ef7\u683c\u9884\u6d4b<\/strong><\/h2>\n\n\n\n<p>\u672c\u7ae0\u8282\u6211\u4eec\u5c06\u901a\u8fc7\u5c06 NLP \u60c5\u611f\u5206\u6790\u4e0e ML \u4ef7\u683c\u9884\u6d4b\u76f8\u7ed3\u5408\uff0c\u83b7\u5f97\u5bf9\u79d1\u6280\u5e02\u573a\u52a8\u6001\u7684\u5b9d\u8d35\u89c1\u89e3\uff0c\u4ece\u800c\u5bf9\u4f20\u7edf GRU \u5206\u6790\u65b9\u6cd5\u8fdb\u884c\u8865\u5145\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>1.1 \u4ec0\u4e48\u662f GRU\uff1f<\/strong><\/h3>\n\n\n\n<p>GRU\uff08\u95e8\u63a7\u5faa\u73af\u5355\u5143\uff09\u662f\u4e00\u79cd\u6df1\u5ea6\u5b66\u4e60\u6a21\u578b\uff0c\u7279\u522b\u9002\u5408\u5904\u7406\u65f6\u95f4\u5e8f\u5217\u6570\u636e\uff0c\u5982\u80a1\u7968\u4ef7\u683c\u3002\u901a\u8fc7\u5206\u6790\u5386\u53f2\u6570\u636e\uff0cGRU\u80fd\u591f\u6355\u6349\u4ef7\u683c\u53d8\u5316\u7684\u6a21\u5f0f\uff0c\u4ece\u800c\u4e3a\u672a\u6765\u7684\u4ef7\u683c\u8d70\u52bf\u63d0\u4f9b\u9884\u6d4b\u3002\u5176\u57fa\u672c\u539f\u7406\u5982\u4e0b\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"540\" height=\"219\" src=\"https:\/\/blog.laoyulaoyu.top\/wp-content\/uploads\/2024\/12\/image.png\" alt=\"\" class=\"wp-image-1816\" srcset=\"https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image.png 540w, https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-300x122.png 300w\" sizes=\"(max-width: 540px) 100vw, 540px\" \/><\/figure>\n\n\n\n<p>GRU\u662f\u4e00\u79cd\u6539\u8fdb\u7684\u5faa\u73af\u795e\u7ecf\u7f51\u7edc\uff08RNN\uff09\uff0c\u5176\u8bbe\u8ba1\u65e8\u5728\u89e3\u51b3\u4f20\u7edfRNN\u5728\u957f\u5e8f\u5217\u6570\u636e\u5904\u7406\u4e2d\u7684\u68af\u5ea6\u6d88\u5931\u95ee\u9898\u3002GRU\u901a\u8fc7\u5f15\u5165\u95e8\u63a7\u673a\u5236\uff0c\u80fd\u591f\u66f4\u6709\u6548\u5730\u9009\u62e9\u548c\u66f4\u65b0\u4fe1\u606f\uff0c\u4ece\u800c\u63d0\u9ad8\u6a21\u578b\u7684\u5b66\u4e60\u80fd\u529b\u3002GRU\u5305\u542b\u4e24\u4e2a\u4e3b\u8981\u7684\u95e8\uff1a\u91cd\u7f6e\u95e8\u548c\u66f4\u65b0\u95e8\uff0c\u8fd9\u4f7f\u5f97\u6a21\u578b\u80fd\u591f\u7075\u6d3b\u5730\u51b3\u5b9a\u4fdd\u7559\u591a\u5c11\u8fc7\u53bb\u7684\u4fe1\u606f\u4ee5\u53ca\u5f15\u5165\u591a\u5c11\u65b0\u7684\u4fe1\u606f\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"938\" height=\"470\" src=\"https:\/\/blog.laoyulaoyu.top\/wp-content\/uploads\/2024\/12\/image-1.png\" alt=\"\" class=\"wp-image-1817\" srcset=\"https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-1.png 938w, https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-1-300x150.png 300w, https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-1-768x385.png 768w\" sizes=\"(max-width: 938px) 100vw, 938px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>1.2 \u5982\u4f55\u5b9e\u73b0GRU\u80a1\u7968\u4ef7\u683c\u9884\u6d4b<\/strong><\/h3>\n\n\n\n<p>\u5176\u5b9e\u73b0\u80a1\u7968\u4ef7\u683c\u9884\u6d4b\u7684\u6d41\u7a0b\u7531\u4ee5\u4e0b\u4e94\u6b65\u6784\u6210\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"708\" height=\"408\" src=\"https:\/\/blog.laoyulaoyu.top\/wp-content\/uploads\/2024\/12\/image-5.png\" alt=\"\" class=\"wp-image-1821\" srcset=\"https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-5.png 708w, https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-5-300x173.png 300w\" sizes=\"(max-width: 708px) 100vw, 708px\" \/><\/figure>\n\n\n\n<ul id=\"bh-HOV3vxPx4_jPgS1CfuRp8\" class=\"wp-block-list\">\n<li><strong>\u6570\u636e\u6536\u96c6<\/strong>\uff1a\u9996\u5148\uff0c\u9700\u8981\u6536\u96c6\u5386\u53f2\u80a1\u7968\u4ef7\u683c\u6570\u636e\uff0c\u901a\u5e38\u5305\u62ec\u5f00\u76d8\u4ef7\u3001\u6536\u76d8\u4ef7\u3001\u6700\u9ad8\u4ef7\u3001\u6700\u4f4e\u4ef7\u548c\u6210\u4ea4\u91cf\u7b49\u4fe1\u606f\u3002<\/li>\n\n\n\n<li><strong>\u6570\u636e\u9884\u5904\u7406<\/strong>\uff1a\u5bf9\u6570\u636e\u8fdb\u884c\u6e05\u6d17\u548c\u6807\u51c6\u5316\uff0c\u4ee5\u4fbf\u4e8e\u6a21\u578b\u7684\u8bad\u7ec3\u3002<\/li>\n\n\n\n<li><strong>\u6784\u5efa\u6a21\u578b<\/strong>\uff1a\u4f7f\u7528\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\uff08\u5982TensorFlow\u6216PyTorch\uff09\u6784\u5efaGRU\u6a21\u578b\uff0c\u8bbe\u7f6e\u9002\u5f53\u7684\u8d85\u53c2\u6570\u3002<\/li>\n\n\n\n<li><strong>\u8bad\u7ec3\u6a21\u578b<\/strong>\uff1a\u5c06\u5904\u7406\u540e\u7684\u6570\u636e\u8f93\u5165\u6a21\u578b\u8fdb\u884c\u8bad\u7ec3\uff0c\u4f7f\u7528\u5386\u53f2\u6570\u636e\u6765\u4f18\u5316\u6a21\u578b\u7684\u53c2\u6570\u3002<\/li>\n\n\n\n<li><strong>\u9884\u6d4b\u4e0e\u8bc4\u4f30<\/strong>\uff1a\u4f7f\u7528\u8bad\u7ec3\u597d\u7684\u6a21\u578b\u8fdb\u884c\u80a1\u7968\u4ef7\u683c\u9884\u6d4b\uff0c\u5e76\u901a\u8fc7\u6307\u6807\uff08\u5982\u5747\u65b9\u8bef\u5dee\uff09\u8bc4\u4f30\u6a21\u578b\u7684\u6027\u80fd\u3002<\/li>\n<\/ul>\n\n\n\n<p>GRU\u5728\u80a1\u7968\u4ef7\u683c\u9884\u6d4b\u4e2d\u5c55\u73b0\u51fa\u4e86\u826f\u597d\u7684\u6027\u80fd\uff0c\u80fd\u591f\u6709\u6548\u6355\u6349\u4ef7\u683c\u53d8\u5316\u7684\u65f6\u5e8f\u7279\u5f81\u3002\u901a\u8fc7\u5408\u7406\u7684\u6570\u636e\u5904\u7406\u548c\u6a21\u578b\u6784\u5efa\uff0cGRU\u53ef\u4ee5\u4e3a\u6295\u8d44\u8005\u63d0\u4f9b\u6709\u4ef7\u503c\u7684\u9884\u6d4b\u4fe1\u606f\uff0c\u5e2e\u52a9\u5176\u505a\u51fa\u66f4\u660e\u667a\u7684\u6295\u8d44\u51b3\u7b56\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>1.3 \u5177\u4f53\u529f\u80fd\u5b9e\u73b0<\/strong><\/h3>\n\n\n\n<p>\u6211\u4eec\u8fd8\u662f\u4ee5 AMZN \u80a1\u7968\u4e3a\u4f8b\uff0c\u9996\u5148\u8fd8\u662f\u5bfc\u5165\u5fc5\u8981\u7684 Python \u5e93\u5e76\u8bfb\u53d6\u80a1\u7968\u6570\u636e\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from pyexpat import model\nfrom tabnanny import verbose\nimport pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n#from pandas_datareader import data as pdr\nimport yfinance as yf\nfrom sklearn.preprocessing import MinMaxScaler\nfrom keras.models import Sequential\nfrom keras.layers import Dense, GRU, Dropout\nfrom datetime import datetime, timedelta\n\n\n\ndf = yf.download(\"AMZN\", start=\"2020-01-03\", end=datetime.now())<\/code><\/pre>\n\n\n\n<p>\u63a5\u4e0b\u6765\u662f\u4e3a GRU \u9884\u6d4b\u51c6\u5907\u7f29\u653e\u7684\u8bad\u7ec3\u96c6\/\u6d4b\u8bd5\u96c6\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Create a new dataframe with only the 'Close' column\ndata = df.filter(&#91;'Close'])\n# Convert the dataframe to a numpy array\ndataset = data.values\n# Get the number of rows to train the model on\ntraining_data_len = int(np.ceil(len(dataset) * .95))\n\ntrain_data = dataset&#91;0:int(training_data_len), :]\ntest_data = dataset&#91;training_data_len - 60:, :]\n\n# Scale the data\nscaler = MinMaxScaler(feature_range=(0, 1))\ntrain_data_sc=scaler.fit_transform(train_data)\ntest_data_sc=scaler.fit_transform(test_data)\n\n# Split the data into x_train and y_train data sets\nx_train = &#91;]\ny_train = &#91;]\n\nfor i in range(60, len(train_data_sc)):\n    x_train.append(train_data_sc&#91;i-60:i, 0])\n    y_train.append(train_data_sc&#91;i, 0])\n\n# Convert the x_train and y_train to numpy arrays \nx_train, y_train = np.array(x_train), np.array(y_train)\n\n# Reshape input data to 3D for GRU &#91;samples, time steps, features]\nx_train = np.reshape(x_train, (x_train.shape&#91;0], x_train.shape&#91;1], 1))<\/code><\/pre>\n\n\n\n<p>\u5229\u7528\u9644\u52a0\u5c42\u548c\u5254\u9664\u6784\u5efa GRU \u6a21\u578b\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Build the GRU model with additional layers and dropout\nmodel = Sequential()\n\nmodel.add(GRU(units=128, return_sequences=True, input_shape=(x_train.shape&#91;1],1), activation='tanh'))\nmodel.add(Dropout(0.2))\n\n# Second GRU layer\nmodel.add(GRU(units=64, return_sequences=True))\nmodel.add(Dropout(0.2))\n\n# Third GRU layer\nmodel.add(GRU(64,return_sequences=False))\nmodel.add(Dropout(0.2))\n\n# The output layer\nmodel.add(Dense(units=1))\n\n# Compiling the model\nmodel.compile(optimizer='adam',loss='mean_squared_error')\n\n# Fitting to the training set\nhistory =model.fit(x_train,y_train,epochs=50,batch_size=16)\n\nEpoch 1\/50\n71\/71 \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 6s 36ms\/step - loss: 0.0480\nEpoch 2\/50\n71\/71 \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 3s 37ms\/step - loss: 0.0052\nEpoch 3\/50\n71\/71 \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 3s 39ms\/step - loss: 0.0055\nEpoch 4\/50\n71\/71 \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 3s 40ms\/step - loss: 0.0048\nEpoch 5\/50\n71\/71 \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 3s 37ms\/step - loss: 0.0043\nEpoch 6\/50\n71\/71 \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 3s 38ms\/step - loss: 0.0035\nEpoch 7\/50\n71\/71 \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 3s 38ms\/step - loss: 0.0038\nEpoch 8\/50\n71\/71 \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 3s 43ms\/step - loss: 0.0047\nEpoch 9\/50\n71\/71 \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 3s 37ms\/step - loss: 0.0029\n...........................................\n\n\n\nprint(history.history.keys())\n\ndict_keys(&#91;'loss'])<\/code><\/pre>\n\n\n\n<p>\u6253\u5370 GRU \u6a21\u5f0f\u6458\u8981<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>model.summary()<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"348\" src=\"https:\/\/blog.laoyulaoyu.top\/wp-content\/uploads\/2024\/12\/image-6.png\" alt=\"\" class=\"wp-image-1822\" srcset=\"https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-6.png 602w, https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-6-300x173.png 300w\" sizes=\"(max-width: 602px) 100vw, 602px\" \/><\/figure>\n\n\n\n<p>\u7ed8\u5236 GRU \u635f\u5931\u4e0e\u65f6\u95f4\u7684\u5173\u7cfb\u56fe<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>plt.plot(history.history&#91;'loss'], label='train')\n\nplt.grid()\nplt.legend()\nplt.xlabel('Epochs')\nplt.ylabel('Loss')\nplt.show()<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"455\" height=\"322\" src=\"https:\/\/blog.laoyulaoyu.top\/wp-content\/uploads\/2024\/12\/image-7.png\" alt=\"\" class=\"wp-image-1823\" srcset=\"https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-7.png 455w, https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-7-300x212.png 300w\" sizes=\"(max-width: 455px) 100vw, 455px\" \/><\/figure>\n\n\n\n<p>\u5bf9\u6d4b\u8bd5\u6570\u636e\u8fdb\u884c GRU \u9884\u6d4b<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Create the testing data set\ntest_data = scaler.fit_transform(dataset&#91;training_data_len - 60:, :])\nx_test = &#91;]\ny_test = scaler.fit_transform(dataset&#91;training_data_len:, :])\n\nfor i in range(60, len(test_data)):\n    x_test.append(test_data&#91;i-60:i, 0])\n\n# Convert the data to a numpy array\nx_test = np.array(x_test)\n\n# Reshape the data\nx_test = np.reshape(x_test, (x_test.shape&#91;0], x_test.shape&#91;1], 1))\n\n# Get the model's predicted price values \npredictions = model.predict(x_test)<\/code><\/pre>\n\n\n\n<p>\u9a8c\u8bc1\u6d4b\u8bd5\u9884\u6d4b<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Get the root mean squared error (RMSE)\nrmse = np.sqrt(np.mean(((predictions - y_test) ** 2)))\nprint('RMSE: ', rmse)\n\nRMSE:  0.18898223429208838\n\n# X-Plot Predictions vs Test Data\n\nplt.scatter(y_test,predictions)\nplt.xlabel('Test Data')\nplt.ylabel('Predictions')\nplt.grid()<\/code><\/pre>\n\n\n\n<p>\u5f97\u5230X-Plot \u9884\u6d4b\u503c\u4e0e\u6d4b\u8bd5\u6570\u636e\u5bf9\u6bd4\u56fe<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"433\" height=\"329\" src=\"https:\/\/blog.laoyulaoyu.top\/wp-content\/uploads\/2024\/12\/image-8.png\" alt=\"\" class=\"wp-image-1824\" srcset=\"https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-8.png 433w, https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-8-300x228.png 300w\" sizes=\"(max-width: 433px) 100vw, 433px\" \/><\/figure>\n\n\n\n<p>\u5f52\u4e00\u5316 AMZN \u4ef7\u683c\u6bd4\u8f83 &#8211; \u9884\u6d4b\u4e0e\u6d4b\u8bd5\u6570\u636e<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>plt.plot(y_test,label='Test Data')\nplt.plot(predictions,label='Predictions')\nplt.title('Normalized AMZN Price')\nplt.xlabel('Day No')\nplt.legend()\nplt.grid()<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"422\" height=\"341\" src=\"https:\/\/blog.laoyulaoyu.top\/wp-content\/uploads\/2024\/12\/image-9.png\" alt=\"\" class=\"wp-image-1825\" srcset=\"https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-9.png 422w, https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-9-300x242.png 300w\" sizes=\"(max-width: 422px) 100vw, 422px\" \/><\/figure>\n\n\n\n<p>\u68c0\u67e5 MAE \u548c R2 \u5206\u6570<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">from sklearn.metrics import mean_absolute_error\nmean_absolute_error(y_test, predictions)\n\n0.1624050197414233\n\nfrom sklearn.metrics import r2_score\nr2_score(y_test, predictions)\n\n0.5741042876012528<\/pre>\n\n\n\n<p>\u5c06\u76f8\u540c\u7684 GRU \u5de5\u4f5c\u6d41\u7a0b\u5e94\u7528\u4e8e NVDA \u80a1\u4ef7\uff0c\u4e5f\u80fd\u5f97\u5230\u7c7b\u4f3c\u7684\u7ed3\u679c<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>print('RMSE: ', rmse)\n\nRMSE:  0.20304139023404796<\/code><\/pre>\n\n\n\n<p>\u5f97\u5230NVDA \u80a1\u7968\u7684 X-Plot \u9884\u6d4b\u4e0e\u6d4b\u8bd5\u6570\u636e\u5bf9\u6bd4\u56fe<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"433\" height=\"325\" src=\"https:\/\/blog.laoyulaoyu.top\/wp-content\/uploads\/2024\/12\/image-10.png\" alt=\"\" class=\"wp-image-1826\" srcset=\"https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-10.png 433w, https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-10-300x225.png 300w\" sizes=\"(max-width: 433px) 100vw, 433px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"413\" height=\"307\" src=\"https:\/\/blog.laoyulaoyu.top\/wp-content\/uploads\/2024\/12\/image-11.png\" alt=\"\" class=\"wp-image-1827\" srcset=\"https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-11.png 413w, https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-11-300x223.png 300w\" sizes=\"(max-width: 413px) 100vw, 413px\" \/><\/figure>\n\n\n\n<p>\u4e0a\u56fe\u4e3a\u5f52\u4e00\u5316 NVDA \u4ef7\u683c &#8211; \u9884\u6d4b\u4e0e\u6d4b\u8bd5\u6570\u636e\u5bf9\u6bd4\u56fe<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u4e8c\u3001\u4f7f\u7528 MLBC \u8fdb\u884c\u5e02\u573a\u60c5\u7eea\u5206\u6790\u4e0e\u9884\u6d4b<\/strong><\/h2>\n\n\n\n<p>\u6700\u8fd1\u7684\u7814\u7a76\u8868\u660e\uff0c<strong>MLBC<\/strong>\uff08&nbsp;ML binary classification\uff09\u548c NLP \u53ef\u89c6\u5316[12]\u5728\u5206\u6790\u6587\u672c\u60c5\u7eea\u65b9\u9762\u5177\u6709\u5de8\u5927\u6f5c\u529b\u3002<\/p>\n\n\n\n<p>\u672c\u8282\u7684\u76ee\u6807\u662f\u89e3\u51b3\u4e00\u4e2a\u4e8c\u5143\u5206\u7c7b\u95ee\u9898\uff0c\u5c06\u9053\u743c\u65af\u5de5\u4e1a\u5e73\u5747\u6307\u6570\uff08DJIA\uff09\u80a1\u7968\u76f8\u5173\u60c5\u7eea\u6570\u636e\uff08\u65b0\u95fb\u6807\u9898\uff09\u5206\u4e3a\u6b63\u9762\u548c\u8d1f\u9762\u3002\u8fd9\u91cc\uff0c\u76ee\u6807 &#8220;\u6807\u7b7e &#8220;\u4ee3\u8868\u4ee5\u4e0b\u4e8c\u5143\u5c5e\u6027\uff1a0 &#8211; \u80a1\u4ef7\u4e0b\u8dcc\u6216\u4fdd\u6301\u4e0d\u53d8\uff0c1 &#8211; \u80a1\u4ef7\u4e0a\u6da8\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>\u6b65\u9aa4 1\uff1a\u5bfc\u5165\u57fa\u672c\u5e93\u5e76\u8bfb\u53d6\u8f93\u5165\u6570\u636e\u96c6<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># Importing essential libraries\nimport numpy as np\nimport pandas as pd\n\n# Importing essential libraries for visualization\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n%matplotlib inline\n\n# Importing essential libraries for performing Natural Language Processing on given dataset\nimport nltk\nnltk.download('stopwords')\nfrom nltk.corpus import stopwords\nfrom nltk.stem import PorterStemmer\n\n# Loading the dataset\ndf = pd.read_csv('stock_senti_analysis.csv', encoding = 'ISO-8859-1')\n\ndf.info()\n\n&lt;class 'pandas.core.frame.DataFrame'&gt;\nIndex: 4098 entries, 0 to 4100\nData columns (total 27 columns):\n #   Column  Non-Null Count  Dtype \n---  ------  --------------  ----- \n 0   Date    4098 non-null   object\n 1   Label   4098 non-null   int64 \n 2   Top1    4098 non-null   object\n 3   Top2    4098 non-null   object\n 4   Top3    4098 non-null   object\n 5   Top4    4098 non-null   object\n 6   Top5    4098 non-null   object\n 7   Top6    4098 non-null   object\n 8   Top7    4098 non-null   object\n 9   Top8    4098 non-null   object\n 10  Top9    4098 non-null   object\n 11  Top10   4098 non-null   object\n 12  Top11   4098 non-null   object\n 13  Top12   4098 non-null   object\n 14  Top13   4098 non-null   object\n 15  Top14   4098 non-null   object\n 16  Top15   4098 non-null   object\n 17  Top16   4098 non-null   object\n 18  Top17   4098 non-null   object\n 19  Top18   4098 non-null   object\n 20  Top19   4098 non-null   object\n 21  Top20   4098 non-null   object\n 22  Top21   4098 non-null   object\n 23  Top22   4098 non-null   object\n 24  Top23   4098 non-null   object\n 25  Top24   4098 non-null   object\n 26  Top25   4098 non-null   object\ndtypes: int64(1), object(26)\nmemory usage: 896.4+ KB\n\ndf_copy = df.copy()\ndf_copy.reset_index(inplace=True)<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>\u6b65\u9aa4 2\uff1aNLP ML \u4e8c\u8fdb\u5236\u5206\u7c7b\u7684\u6570\u636e\u9884\u5904\u7406<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># Splitting the dataset into train an test set\ntrain = df_copy&#91;df_copy&#91;'Date'] &lt; '20150101']\ntest = df_copy&#91;df_copy&#91;'Date'] &gt; '20141231']\nprint('Train size: {}, Test size: {}'.format(train.shape, test.shape))\n\nTrain size: (3972, 28), Test size: (378, 28)\n\n# Removing punctuation and special character from the text\ntrain.replace(to_replace='&#91;^a-zA-Z]', value=' ', regex=True, inplace=True)\ntest.replace(to_replace='&#91;^a-zA-Z]', value=' ', regex=True, inplace=True)\n\n# Renaming columns\nnew_columns = &#91;str(i) for i in range(0,25)]\ntrain.columns = new_columns\ntest.columns = new_columns\n\n# Converting the entire text to lower case\nfor i in new_columns:\n  train&#91;i] = train&#91;i].str.lower()\n  test&#91;i] = test&#91;i].str.lower()\n\n# Joining all the columns\ntrain_headlines = &#91;]\ntest_headlines = &#91;]\n\nfor row in range(0, train.shape&#91;0]):\n  train_headlines.append(' '.join(str(x) for x in train.iloc&#91;row, 0:25]))\n\nfor row in range(0, test.shape&#91;0]):\n  test_headlines.append(' '.join(str(x) for x in test.iloc&#91;row, 0:25]))\n\n# Creating corpus of train dataset\nps = PorterStemmer()\ntrain_corpus = &#91;]\n\nfor i in range(0, len(train_headlines)):\n  \n  # Tokenizing the news-title by words\n  words = train_headlines&#91;i].split()\n\n  # Removing the stopwords\n  words = &#91;word for word in words if word not in set(stopwords.words('english'))]\n\n  # Stemming the words\n  words = &#91;ps.stem(word) for word in words]\n\n  # Joining the stemmed words\n  headline = ' '.join(words)\n\n  # Building a corpus of news-title\n  train_corpus.append(headline)\n\n# Creating corpus of test dataset\ntest_corpus = &#91;]\n\nfor i in range(0, len(test_headlines)):\n  \n  # Tokenizing the news-title by words\n  words = test_headlines&#91;i].split()\n\n  # Removing the stopwords\n  words = &#91;word for word in words if word not in set(stopwords.words('english'))]\n\n  # Stemming the words\n  words = &#91;ps.stem(word) for word in words]\n\n  # Joining the stemmed words\n  headline = ' '.join(words)\n\n  # Building a corpus of news-title\n  test_corpus.append(headline)\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>\u6b65\u9aa4 3a\uff1a\u4e3a\u8d1f\u9762\u60c5\u7eea\u521b\u5efa\u8bcd\u4e91<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">down_words = []\nfor i in list(y_train[y_train==0].index):\n  down_words.append(train_corpus[i])\n\nup_words = []\nfor i in list(y_train[y_train==1].index):\n  up_words.append(train_corpus[i])\n\n# Creating wordcloud for down_words\nfrom wordcloud import WordCloud\nwordcloud1 = WordCloud(background_color='white', width=3000, height=2500).generate(down_words[1])\nplt.figure(figsize=(8,8))\nplt.imshow(wordcloud1)\nplt.axis('off')\nplt.title(\"Words which indicate a fall in DJIA \")\nplt.show()<\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"422\" src=\"https:\/\/blog.laoyulaoyu.top\/wp-content\/uploads\/2024\/12\/image-12.png\" alt=\"\" class=\"wp-image-1828\" srcset=\"https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-12.png 500w, https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-12-300x253.png 300w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/figure>\n\n\n\n<p>\u4e0a\u56fe\u4e3a\u8868\u660e\u9053\u743c\u65af\u5de5\u4e1a\u5e73\u5747\u6307\u6570\u4e0b\u8dcc\u7684\u8bcd\u4e91\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>\u6b65\u9aa4 3b\uff1a\u4e3a\u6b63\u9762\u60c5\u7eea\u521b\u5efa\u8bcd\u4e91<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># Creating wordcloud for up_words\nwordcloud2 = WordCloud(background_color='white', width=3000, height=2500).generate(up_words&#91;5])\nplt.figure(figsize=(8,8))\nplt.imshow(wordcloud2)\nplt.axis('off')\nplt.title(\"Words which indicate a rise in DJIA \")\nplt.show()<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"428\" src=\"https:\/\/blog.laoyulaoyu.top\/wp-content\/uploads\/2024\/12\/image-13.png\" alt=\"\" class=\"wp-image-1829\" srcset=\"https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-13.png 500w, https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-13-300x257.png 300w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/figure>\n\n\n\n<p>\u4e0a\u56fe\u4e3a\u8868\u660e\u9053\u743c\u65af\u5de5\u4e1a\u5e73\u5747\u6307\u6570\u4e0a\u5347\u7684\u8bcd\u4e91\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>\u6b65\u9aa4 4\uff1a\u521b\u5efa\u8bcd\u888b\uff08BOW\uff09\u6a21\u578b<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># Creating the Bag of Words model\nfrom sklearn.feature_extraction.text import CountVectorizer\ncv = CountVectorizer(max_features=10000, ngram_range=(2,2))\nX_train = cv.fit_transform(train_corpus).toarray()\nX_test = cv.transform(test_corpus).toarray()<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>\u6b65\u9aa4 5\uff1a\u8bad\u7ec3\u548c\u9a8c\u8bc1\u903b\u8f91\u56de\u5f52 (LR)<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">from sklearn.linear_model import LogisticRegression\nlr_classifier = LogisticRegression()\nlr_classifier.fit(X_train, y_train)\n\nlr_y_pred = lr_classifier.predict(X_test)\n\n# Accuracy, Precision and Recall\nfrom sklearn.metrics import accuracy_score, precision_score, recall_score\nscore1 = accuracy_score(y_test, lr_y_pred)\nscore2 = precision_score(y_test, lr_y_pred)\nscore3 = recall_score(y_test, lr_y_pred)\nprint(\"---- Scores ----\")\nprint(\"Accuracy score is: {}%\".format(round(score1*100,2)))\nprint(\"Precision score is: {}\".format(round(score2,2)))\nprint(\"Recall score is: {}\".format(round(score3,2)))\n\n---- Scores ----\nAccuracy score is: 85.98%\nPrecision score is: 0.87\nRecall score is: 0.85\n\n# Making the Confusion Matrix\nfrom sklearn.metrics import confusion_matrix\nlr_cm = confusion_matrix(y_test, lr_y_pred)\n\nlr_cm\n\narray([[162,  24],\n       [ 29, 163]], dtype=int64)\n\n# Plotting the confusion matrix\nplt.figure(figsize=(10,7))\nsns.heatmap(data=lr_cm, annot=True, cmap=\"Blues\", xticklabels=['Down', 'Up'], yticklabels=['Down', 'Up'])\nplt.xlabel('Predicted values')\nplt.ylabel('Actual values')\nplt.title('Confusion Matrix for Logistic Regression Algorithm')\nplt.show()<\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"596\" height=\"477\" src=\"https:\/\/blog.laoyulaoyu.top\/wp-content\/uploads\/2024\/12\/image-14.png\" alt=\"\" class=\"wp-image-1830\" srcset=\"https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-14.png 596w, https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-14-300x240.png 300w\" sizes=\"(max-width: 596px) 100vw, 596px\" \/><\/figure>\n\n\n\n<p>\u4e0a\u56fe\u4e3a\u903b\u8f91\u56de\u5f52\u7b97\u6cd5\u7684\u6df7\u6dc6\u77e9\u9635\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>\u6b65\u9aa4 6\uff1a\u8bad\u7ec3\u548c\u9a8c\u8bc1\u968f\u673a\u68ee\u6797 (RF) \u5206\u7c7b\u5668<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>from sklearn.ensemble import RandomForestClassifier\nrf_classifier = RandomForestClassifier(n_estimators=100, criterion='entropy')\nrf_classifier.fit(X_train, y_train)\n\nrf_y_pred = rf_classifier.predict(X_test)\n\n# Accuracy, Precision and Recall\nscore1 = accuracy_score(y_test, rf_y_pred)\nscore2 = precision_score(y_test, rf_y_pred)\nscore3 = recall_score(y_test, rf_y_pred)\nprint(\"---- Scores ----\")\nprint(\"Accuracy score is: {}%\".format(round(score1*100,2)))\nprint(\"Precision score is: {}\".format(round(score2,2)))\nprint(\"Recall score is: {}\".format(round(score3,2)))\n\n---- Scores ----\nAccuracy score is: 84.92%\nPrecision score is: 0.83\nRecall score is: 0.88<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>\u6b65\u9aa4 7\uff1a\u8bad\u7ec3\u548c\u9a8c\u8bc1\u591a\u9879\u5f0f NB (MNB) \u5206\u7c7b\u5668<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>from sklearn.naive_bayes import MultinomialNB\nnb_classifier = MultinomialNB()\nnb_classifier.fit(X_train, y_train)\n\n# Predicting the Test set results\nnb_y_pred = nb_classifier.predict(X_test)\n\n# Accuracy, Precision and Recall\nscore1 = accuracy_score(y_test, nb_y_pred)\nscore2 = precision_score(y_test, nb_y_pred)\nscore3 = recall_score(y_test, nb_y_pred)\nprint(\"---- Scores ----\")\nprint(\"Accuracy score is: {}%\".format(round(score1*100,2)))\nprint(\"Precision score is: {}\".format(round(score2,2)))\nprint(\"Recall score is: {}\".format(round(score3,2)))\n\n---- Scores ----\nAccuracy score is: 83.86%\nPrecision score is: 0.85\nRecall score is: 0.83\n\n# Making the Confusion Matrix\nnb_cm = confusion_matrix(y_test, nb_y_pred)\n\nnb_cm\n\narray(&#91;&#91;158,  28],\n       &#91; 33, 159]], dtype=int64)\n\n# Plotting the confusion matrix\nplt.figure(figsize=(10,7))\nsns.heatmap(data=nb_cm, annot=True, cmap=\"Blues\", xticklabels=&#91;'Down', 'Up'], yticklabels=&#91;'Down', 'Up'])\nplt.xlabel('Predicted values')\nplt.ylabel('Actual values')\nplt.title('Confusion Matrix for Multinomial Naive Bayes Algorithm')\nplt.show()<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"583\" height=\"469\" src=\"https:\/\/blog.laoyulaoyu.top\/wp-content\/uploads\/2024\/12\/image-15.png\" alt=\"\" class=\"wp-image-1831\" srcset=\"https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-15.png 583w, https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-15-300x241.png 300w\" sizes=\"(max-width: 583px) 100vw, 583px\" \/><\/figure>\n\n\n\n<p>\u4e0a\u56fe\u4e3a\u591a\u9879\u5f0f Naive Bayes \u7b97\u6cd5\u7684\u6df7\u6dc6\u77e9\u9635\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>\u6b65\u9aa4 8\uff1a\u8c03\u7528 SciKit-Plot ML QC \u8bca\u65ad\u548c Yellowbrick \u53ef\u89c6\u5316\uff08RF\u793a\u4f8b\uff09<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>!pip install scikit-plot\n!pip install yellowbrick\n\nimport scikitplot as skplt\n\nimport sklearn\n\nfrom sklearn.ensemble import RandomForestClassifier, RandomForestRegressor, GradientBoostingClassifier, ExtraTreesClassifier\nfrom sklearn.linear_model import LinearRegression, LogisticRegression\n\nimport warnings\nwarnings.filterwarnings(\"ignore\")\n\nprint(\"Scikit Plot Version : \", skplt.__version__)\nprint(\"Scikit Learn Version : \", sklearn.__version__)\nprint(\"Python Version : \", sys.version)\n\n%matplotlib inline\n\nScikit Plot Version :  0.3.7\nScikit Learn Version :  1.4.2\nPython Version :  3.12.3 | packaged by conda-forge | (main, Apr 15 2024, 18:20:11) &#91;MSC v.1938 64 bit (AMD64)]<\/code><\/pre>\n\n\n\n<p>\u7ed8\u5236 RF ROC \u66f2\u7ebf<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Y_test_probs = rf_classifier.predict_proba(X_test)\n\nskplt.metrics.plot_roc_curve(y_test, Y_test_probs,\n                       title=\"RF ROC Curve\", figsize=(12,6));\nplt.show()<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"764\" height=\"413\" src=\"https:\/\/blog.laoyulaoyu.top\/wp-content\/uploads\/2024\/12\/image-16.png\" alt=\"\" class=\"wp-image-1832\" srcset=\"https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-16.png 764w, https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-16-300x162.png 300w\" sizes=\"(max-width: 764px) 100vw, 764px\" \/><\/figure>\n\n\n\n<p>\u7ed8\u5236 RF \u7cbe\u5ea6-\u53ec\u56de\u66f2\u7ebf<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>skplt.metrics.plot_precision_recall_curve(y_test, Y_test_probs,\n                       title=\"RF Precision-Recall Curve\", figsize=(12,6));\nplt.show()<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"770\" height=\"409\" src=\"https:\/\/blog.laoyulaoyu.top\/wp-content\/uploads\/2024\/12\/image-17.png\" alt=\"\" class=\"wp-image-1833\" srcset=\"https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-17.png 770w, https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-17-300x159.png 300w, https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-17-768x408.png 768w\" sizes=\"(max-width: 770px) 100vw, 770px\" \/><\/figure>\n\n\n\n<p>\u7ed8\u5236 RF \u5206\u7c7b\u62a5\u544a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from yellowbrick.classifier import ClassificationReport\n\n\ntarget_names=&#91;'0','1']\n\nviz = ClassificationReport(RandomForestClassifier(),\n                           classes=target_names,\n                           support=True,\n                           fig=plt.figure(figsize=(12,8)))\n\nviz.fit(X_train, y_train)\n\nviz.score(X_test, y_test)\n\nviz.show();<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"570\" src=\"https:\/\/blog.laoyulaoyu.top\/wp-content\/uploads\/2024\/12\/image-19.png\" alt=\"\" class=\"wp-image-1835\" srcset=\"https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-19.png 800w, https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-19-300x214.png 300w, https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-19-768x547.png 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/figure>\n\n\n\n<p>\u7ed8\u5236 RF \u7c7b\u522b\u9884\u6d4b\u8bef\u5dee\u56fe<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from yellowbrick.classifier import ClassPredictionError\n\nviz = ClassPredictionError(RandomForestClassifier(),\n                           classes=target_names,\n                           fig=plt.figure(figsize=(9,6)))\n\nviz.fit(X_train, y_train)\n\nviz.score(X_test, y_test)\n\nviz.show();<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"597\" height=\"435\" src=\"https:\/\/blog.laoyulaoyu.top\/wp-content\/uploads\/2024\/12\/image-20.png\" alt=\"\" class=\"wp-image-1836\" srcset=\"https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-20.png 597w, https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-20-300x219.png 300w\" sizes=\"(max-width: 597px) 100vw, 597px\" \/><\/figure>\n\n\n\n<p>\u521b\u5efa RF KS \u7edf\u8ba1\u56fe<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Y_probas = rf_classifier.predict_proba(X_test)\n\nskplt.metrics.plot_ks_statistic(y_test, Y_probas, figsize=(10,6));\nplt.show()<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image\" id=\"df0e\"><img decoding=\"async\" src=\"https:\/\/cdn-images-1.readmedium.com\/v2\/resize:fit:800\/1*pe__FJzRvhySrBIiHHEy9g.jpeg\" alt=\"\"\/><\/figure>\n\n\n\n<p>Kolmogorov-Smirnov (KS) \u56fe\u662f\u7edf\u8ba1\u5206\u6790\u4e2d\u5e7f\u6cdb\u4f7f\u7528\u7684\u4e00\u79cd\u975e\u53c2\u6570\u68c0\u9a8c\uff0c\u7528\u4e8e\u6bd4\u8f83\u4e24\u79cd\u5206\u5e03\u3002<\/p>\n\n\n\n<p>\u7ed8\u5236 RF \u7d2f\u79ef\u589e\u76ca\u66f2\u7ebf<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">skplt.metrics.plot_cumulative_gain(y_test, Y_probas, figsize=(10,6));\nplt.show()<\/pre>\n\n\n\n<figure class=\"wp-block-image\" id=\"e026\"><img decoding=\"async\" src=\"https:\/\/cdn-images-1.readmedium.com\/v2\/resize:fit:800\/1*CK3HHsNMMW-O2siw_AqgrA.jpeg\" alt=\"\"\/><\/figure>\n\n\n\n<p>\u7ed8\u5236 RF \u63d0\u5347\u66f2\u7ebf<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>skplt.metrics.plot_lift_curve(y_test, Y_probas, figsize=(10,6));\nplt.show()<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image\" id=\"8d5a\"><img decoding=\"async\" src=\"https:\/\/cdn-images-1.readmedium.com\/v2\/resize:fit:800\/1*1xpzkeB6U3BHVgZZ4tIqmg.jpeg\" alt=\"\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>\u6b65\u9aa4 9\uff1a\u521b\u5efa\u548c\u6bd4\u8f83 SciKit-Plot \u6821\u51c6\u66f2\u7ebf<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>lr_probas = LogisticRegression().fit(X_train, y_train).predict_proba(X_test)\nrf_probas = RandomForestClassifier().fit(X_train, y_train).predict_proba(X_test)\ngb_probas = GradientBoostingClassifier().fit(X_train, y_train).predict_proba(X_test)\net_scores = ExtraTreesClassifier().fit(X_train, y_train).predict_proba(X_test)\n\nprobas_list = &#91;lr_probas, rf_probas, gb_probas, et_scores]\nclf_names = &#91;'Logistic Regression', 'Random Forest', 'Gradient Boosting', 'Extra Trees Classifier']\n\nskplt.metrics.plot_calibration_curve(y_test,\n                                     probas_list,\n                                     clf_names, n_bins=15,\n                                     figsize=(12,6)\n                                     );\nplt.show()<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"765\" height=\"414\" src=\"https:\/\/blog.laoyulaoyu.top\/wp-content\/uploads\/2024\/12\/image-21.png\" alt=\"\" class=\"wp-image-1837\" srcset=\"https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-21.png 765w, https:\/\/www.laoyulaoyu.com\/wp-content\/uploads\/2024\/12\/image-21-300x162.png 300w\" sizes=\"(max-width: 765px) 100vw, 765px\" \/><\/figure>\n\n\n\n<p>\u4e0a\u56fe\u4e3aSciKit-Plot \u6821\u51c6\u66f2\u7ebf\u56fe\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"10fd\"><strong>\u5173\u952e\u53ef\u89c6\u5316\u8bf4\u660e<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>plt \u6563\u70b9\u56fe\uff1a\u6bcf\u5468\u590d\u5408\u5f97\u5206\u4e0e\u6b63\u5f97\u5206\uff08\u7b26\u53f7\u5927\u5c0f\uff09\u548c\u8d1f\u5f97\u5206\uff08\u7b26\u53f7\u989c\u8272\uff09\u7684\u6bd4\u8f83\u3002<\/li>\n\n\n\n<li>NLP \u5411\u91cf\u60c5\u7eea\u5f97\u5206\u4e0e\u6295\u8d44\u7ec4\u5408\u4e2d\u80a1\u7968\u603b\u4ef7\u503c\uff08\u7f8e\u5143\uff09\u7684\u67f1\u72b6\u56fe\u3002<\/li>\n\n\n\n<li>Plotly \u4e2d\u7684\u4e92\u52a8\u5f0f\u80a1\u7968\u60c5\u7eea\u6811\u72b6\u56fe\u3002<\/li>\n\n\n\n<li>\u5f52\u4e00\u5316\u80a1\u7968\u4ef7\u683c &#8211; ML \u9884\u6d4b\u4e0e\u6d4b\u8bd5\u6570\u636e\u5bf9\u6bd4\u3002<\/li>\n\n\n\n<li>\u5236\u4f5c\u6b63\u9762\/\u8d1f\u9762\u5355\u8bcd\u7684\u8bcd\u4e91\u3002<\/li>\n\n\n\n<li>\u4e8c\u5143\u5206\u7c7b\u5668\u7684\u6df7\u6dc6\u77e9\u9635\u3001\u5206\u7c7b\u62a5\u544a\u3001ROC\u3001\u7cbe\u5ea6-\u53ec\u56de\u3001KS \u7edf\u8ba1\u91cf\u3001\u7d2f\u79ef\u589e\u76ca\u3001\u63d0\u5347\u3001\u6821\u51c6\u66f2\u7ebf\u548c\u7c7b\u522b\u9884\u6d4b\u8bef\u5dee\u67f1\u72b6\u56fe\u3002<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"8259\"><strong>ML\/DL \u9a8c\u8bc1\u7ed3\u679c<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u7528\u4e8e\uff08\u5f52\u4e00\u5316\uff09\u80a1\u4ef7\u9884\u6d4b\u7684 GRU \u6a21\u578b\uff1aRMSE (AMZN) ~ 0.19, RMSE (NVDA) ~ 0.2<br>NLP \u548c\u6709\u76d1\u7763\u7684 ML \u4e8c\u8fdb\u5236\u5206\u7c7b\uff1a<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>LR\n----------------------\nAccuracy score is: 85.98%\nPrecision score is: 0.87\nRecall score is: 0.85\n\nRF\n----------------------\nAccuracy score is: 84.92%\nPrecision score is: 0.83\nRecall score is: 0.88\n\nMNB\n----------------------\nAccuracy score is: 83.86%\nPrecision score is: 0.85\nRecall score is: 0.83<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6df1\u5165\u4e86\u89e3 SciKit-Plot ML QC \u8bca\u65ad\u548c Yellowbrick \u53ef\u89c6\u5316\uff08RF\u793a\u4f8b\uff09\uff1a<\/li>\n\n\n\n<li>2 \u4e2a\u7b49\u7ea7\u7684 ROC \u548c\u7cbe\u786e\u5ea6 &#8211; \u53ec\u56de\u533a\u57df\uff1a0.95\uff1b<\/li>\n\n\n\n<li>KS \u7edf\u8ba1\u56fe\uff1a0.520 \u65f6\u4e3a 0.725\u3002<\/li>\n\n\n\n<li>\u5206\u7c7b\u62a5\u544a\uff1aF1 \u5206\u6570 ~ 0.8\u3002<\/li>\n\n\n\n<li>\u9884\u6d4b\u7c7b\u522b\u6570\u7684\u7c7b\u522b\u9884\u6d4b\u8bef\u5dee ~ 25\u3002<\/li>\n\n\n\n<li>\u4e24\u4e2a\u7d2f\u79ef\u589e\u76ca\u548c\u63d0\u5347\u66f2\u7ebf\u4e0e\u57fa\u51c6\u7ebf\u76f8\u5dee\u5f88\u5927\u3002<\/li>\n\n\n\n<li>\u5f53\u5e73\u5747\u9884\u6d4b\u503c\u8d85\u8fc7 90% \u65f6\uff0cLR\u3001RF\u3001GB \u548c ET \u5206\u7c7b\u5668\u7684\u6821\u51c6\u66f2\u7ebf\u4e5f\u5448\u73b0\u51fa\u7c7b\u4f3c\u7684\u8d8b\u52bf\u3002<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"2443\"><strong>\u4e09\u3001\u89c2\u70b9\u603b\u7ed3<\/strong><\/h2>\n\n\n\n<p>\u672c\u6587\u4ecb\u7ecd\u4e86\u4e00\u4e2a\u5b8c\u5168\u53ef\u7528\u7684 NLP ML \u5e73\u53f0\uff0c\u7528\u4e8e\u9884\u6d4b\uff08\u79d1\u6280\uff09\u80a1\u7968\u6570\u636e\uff0c\u5e76\u901a\u8fc7\u5206\u6790\u8d22\u7ecf\u65b0\u95fb\u5934\u6761\u6765\u8ba1\u7b97\u6807\u91cf\u6216\u77e2\u91cf\u60c5\u611f\u5206\u6570\u3002NLP\u60c5\u611f\u5206\u6790\u4f5c\u4e3a\u5173\u952e\u521b\u65b0\u70b9\uff0c\u8fd0\u7528\u5355\u8bcd\u5d4c\u5165\u4e0e\u77e2\u91cf\u5316\u6280\u672f\uff0c\u80fd\u591f\u4ece\u7ecf\u8fc7\u89e3\u6790\u548c\u6807\u6ce8\u7684\u5b9e\u65f6\u6587\u672c\u6570\u636e\u4e2d\u63d0\u53d6\u60c5\u611f\u4fe1\u606f\u3002\u6b64\u5916\uff0c\u6211\u4eec\u6240\u91c7\u7528\u7684\u6df7\u5408\u65b9\u6cd5\u7efc\u5408\u4e86\u6709\u76d1\u7763\u7684\u673a\u5668\u5b66\u4e60\/\u6df1\u5ea6\u5b66\u4e60\u7b97\u6cd5\u3001\u81ea\u7136\u8bed\u8a00\u5904\u7406\u4ee5\u53ca\u91d1\u878d\u5206\u6790\u6280\u672f\uff0c\u5145\u5206\u5c55\u793a\u4e86\u5176\u5728\u8f85\u52a9\u6295\u8d44\u8005\u8fdb\u884c\u51b3\u7b56\u65b9\u9762\u7684\u5de8\u5927\u6f5c\u529b\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5b9e\u65bd NLP \u5206\u6790 (VADER)\uff0c\u4ece\u6bcf\u5468\u6807\u91cf\/\u77e2\u91cf\u60c5\u611f\u5f97\u5206\u7684\u89d2\u5ea6\u7814\u7a76\u79d1\u6280\u80a1\u5934\u6761\u65b0\u95fb\u3002<\/li>\n\n\n\n<li>\u89c2\u5bdf\u5230 AMZN \u6bcf\u5468\u4ef7\u683c\u53d8\u5316\u4e0e\u6765\u81eafinviz.com\u7684\u60c5\u7eea\u8bc4\u5206\u4e4b\u95f4\u5b58\u5728\u9002\u5ea6\u76f8\u5173\u6027\u3002<\/li>\n\n\n\n<li>\u4ece\u6293\u53d6\u7684\u8fd1\u671f\u8c37\u6b4c\u65b0\u95fb\u4e2d\u63d0\u53d6\u7684 AMZN \u77e2\u91cf\u60c5\u611f\u8bc4\u5206\u3002<\/li>\n\n\n\n<li>\u6bd4\u8f83\u4e86 11 \u79cd\u79d1\u6280\u80a1\u7684\u6bcf\u65e5\u5e73\u5747\u77e2\u91cf\u60c5\u7eea\u5f97\u5206\u3002\u8fd9\u4e00\u9644\u52a0\u4fe1\u606f\u6709\u52a9\u4e8e\u66f4\u51c6\u786e\u5730\u9884\u6d4b\u5e02\u573a\u8d8b\u52bf\u3002<\/li>\n\n\n\n<li>\u5229\u7528 NLP \u60c5\u7eea\u5206\u6790\u505a\u51fa\u660e\u667a\u7684\u6295\u8d44\u51b3\u7b56\u3002\u6211\u4eec\u53ef\u4ee5\u5c06\u6295\u8d44\u7ec4\u5408\u4e2d\u7684\u80a1\u7968\u603b\u4ef7\u503c\u4e0e 4 \u4e2a\u5e73\u5747\u60c5\u7eea\u5f97\u5206\u8fdb\u884c\u6bd4\u8f83\u3002\u4f46\u5173\u952e\u662f\u4f7f\u7528 Plotly \u521b\u5efa\u4ea4\u4e92\u5f0f\u80a1\u7968\u60c5\u7eea\u6811\u72b6\u56fe\u3002<\/li>\n\n\n\n<li>\u5b9e\u65bd\u4e86\u4e00\u4e2a\u7b80\u5355\u7684\u6df1\u5ea6\u5b66\u4e60\uff08GRU\uff09\u6a21\u578b\uff0c\u7528\u4e8e\u9884\u6d4b\u80a1\u7968\u4ef7\u683c\u3002\u8fd9\u6837\uff0c\u6211\u4eec\u5c31\u80fd\u83b7\u5f97\u5bf9\u79d1\u6280\u5e02\u573a\u52a8\u6001\u7684\u5b9d\u8d35\u89c1\u89e3\uff0c\u4e0e NLP \u60c5\u7eea\u5206\u6790\u76f8\u8f85\u76f8\u6210\u3002<\/li>\n\n\n\n<li>\u5229\u7528\u76d1\u7763 ML \u89e3\u51b3\u4e8c\u5143\u5206\u7c7b\u95ee\u9898\uff0c\u5c06\u9053\u743c\u65af\u5de5\u4e1a\u5e73\u5747\u6307\u6570\uff08DJIA\uff09\u80a1\u7968\u76f8\u5173\u60c5\u7eea\u6570\u636e\uff08\u65b0\u95fb\u6807\u9898\uff09\u5206\u4e3a\u6b63\u9762\u548c\u8d1f\u9762\u3002<\/li>\n<\/ul>\n\n\n\n<p><em>\u611f\u8c22\u60a8\u9605\u8bfb\u5230\u6700\u540e\uff0c\u5e0c\u671b\u672c\u6587\u80fd\u7ed9\u60a8\u5e26\u6765\u65b0\u7684\u6536\u83b7\u3002\u7801\u5b57\u4e0d\u6613\uff0c\u8bf7\u5e2e\u6211\u70b9\u8d5e\u3001\u5206\u4eab\u3002\u795d\u60a8\u6295\u8d44\u987a\u5229\uff01\u5982\u679c\u5bf9\u6587\u4e2d\u7684\u5185\u5bb9\u6709\u4efb\u4f55\u7591\u95ee\uff0c\u8bf7\u7ed9\u6211\u7559\u8a00\uff0c\u5fc5\u590d\u3002<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"has-text-align-center\" id=\"a1c6\">\u672c\u6587\u5185\u5bb9\u4ec5\u9650\u6280\u672f\u63a2\u8ba8\u548c\u5b66\u4e60\uff0c\u4e0d\u6784\u6210\u4efb\u4f55\u6295\u8d44\u5efa\u8bae<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4f5c\u8005\uff1a\u8001\u4f59\u635e\u9c7c \u539f\u521b\u4e0d\u6613\uff0c\u8f6c\u8f7d\u8bf7\u6807\u660e\u51fa\u5904\u53ca\u539f\u4f5c\u8005\u3002&#8230;<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/www.laoyulaoyu.com\/index.php\/2025\/01\/21\/%e3%80%82%e3%80%82%e3%80%82%e7%a7%91%e6%8a%80%e8%82%a1%e9%a2%84%e6%b5%8b%e6%96%b0%e5%88%a9%e5%99%a8%ef%bc%9anlp%e6%83%85%e7%bb%aa%e5%88%86%e6%9e%90%e4%b8%8e%e6%9c%ba%e5%99%a8%e5%ad%a6%e4%b9%a0-2\/\">Continue reading<span class=\"screen-reader-text\">\u79d1\u6280\u80a1\u9884\u6d4b\u65b0\u5229\u5668\uff1aNLP\u60c5\u7eea\u5206\u6790\u4e0e\u673a\u5668\u5b66\u4e60\u7684\u5b8c\u7f8e\u878d\u5408\uff08\u4e09\uff09<\/span><\/a><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[5,6],"class_list":["post-1814","post","type-post","status-publish","format-standard","hentry","category-aiinvest","tag-ai","tag-6","entry"],"_links":{"self":[{"href":"https:\/\/www.laoyulaoyu.com\/index.php\/wp-json\/wp\/v2\/posts\/1814","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.laoyulaoyu.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.laoyulaoyu.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.laoyulaoyu.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.laoyulaoyu.com\/index.php\/wp-json\/wp\/v2\/comments?post=1814"}],"version-history":[{"count":5,"href":"https:\/\/www.laoyulaoyu.com\/index.php\/wp-json\/wp\/v2\/posts\/1814\/revisions"}],"predecessor-version":[{"id":1917,"href":"https:\/\/www.laoyulaoyu.com\/index.php\/wp-json\/wp\/v2\/posts\/1814\/revisions\/1917"}],"wp:attachment":[{"href":"https:\/\/www.laoyulaoyu.com\/index.php\/wp-json\/wp\/v2\/media?parent=1814"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.laoyulaoyu.com\/index.php\/wp-json\/wp\/v2\/categories?post=1814"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.laoyulaoyu.com\/index.php\/wp-json\/wp\/v2\/tags?post=1814"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}