<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          用Python預(yù)測2020年雙十一交易額

          共 2702字,需瀏覽 6分鐘

           ·

          2020-11-12 21:28

          你好,我是林驥。

          去年雙十一的時候,我曾利用算法預(yù)測過阿里巴巴 2019 年雙十一交易額,并做了復(fù)盤總結(jié)(本文結(jié)尾處有當時預(yù)測和復(fù)盤的文章鏈接)。

          今年的雙十一,規(guī)則發(fā)生了很大的變化,從 10 月 21 日就開始預(yù)售,11 月 1 日到 3 日啟動第一波銷售。面對越來越復(fù)雜的規(guī)則,許多消費者都感覺「智商不夠用了」,而那些沒時間研究規(guī)則的人,將付出更高的價格,形成一種「價格歧視」,這就是經(jīng)典的商業(yè)策略。

          另外,市場環(huán)境也發(fā)生了很大的變化,疫情對雙十一的影響到底有多大?是正向的影響還是負向的影響?各種不確定性的因素交織在一起,無疑會大大增加預(yù)測的難度。

          本文將不去探究這些細節(jié),而是基于一種機器學(xué)習(xí)的算法,對 2020 年雙十一交易額進行預(yù)測。重點在于學(xué)習(xí)和運用 Python,去解決實際的問題,并舉一反三,在實戰(zhàn)中鍛煉數(shù)據(jù)分析的思維和應(yīng)用的能力。

          1. 安裝和導(dǎo)入模塊

          首先,我們確認安裝好了 Python 中的 scikit-learn 模塊:

          pip?install?sklearn

          要測試模塊是否正確安裝,可以在 Jupyter Lab 中運行以下代碼:

          import?sklearn?as?sk

          #?查看版本
          sk.__version__

          如果該模塊正確安裝,就會輸出版本號。

          2. 構(gòu)造和定義數(shù)據(jù)

          其次,我們構(gòu)造 2009 - 2019 每年的交易額數(shù)據(jù)框,并定義相應(yīng)的變量,為下一步調(diào)用算法做好準備。

          import?numpy?as?np
          import?pandas?as?pd

          #?生成數(shù)據(jù)
          year?=?np.array(range(2009,?2020))
          data?=?[0.52,9.36,52,191,350,571,912,1207,1682,2135,2684]
          df?=?pd.DataFrame({'年份':?year,?'交易額':?data})

          #?x?年份
          x?=?np.array(df.iloc[:,?0]).reshape(-1,?1)

          #?y?交易額
          y?=?np.array(df.iloc[:,?1])

          #?z?預(yù)測的年份
          z?=?[[2020]]

          3. 調(diào)用算法和預(yù)測

          然后,我們調(diào)用 sklearn 中的多項式回歸算法,其中 degree=2 代表利用「二次多項式」進行擬合。

          from?sklearn.pipeline?import?Pipeline
          from?sklearn.preprocessing?import?PolynomialFeatures
          from?sklearn.preprocessing?import?StandardScaler
          from?sklearn.linear_model?import?LinearRegression

          #?用管道的方式調(diào)用多項式回歸算法
          poly_reg?=?Pipeline([
          ????('ploy',?PolynomialFeatures(degree=2)),
          ????('std_scaler',?StandardScaler()),
          ????('lin_reg',?LinearRegression())
          ])
          poly_reg.fit(x,?y)

          #?調(diào)用算法進行預(yù)測
          predict?=?poly_reg.predict(z)

          #?輸出預(yù)測結(jié)果
          print('預(yù)測2020年雙十一交易額為?%.0f?億元'?%?predict[0])
          print('算法評分為?%.6f'?%?poly_reg.score(x,?y))

          輸出結(jié)果為:

          預(yù)測2020年雙十一交易額為 3280 億元?

          算法評分為 0.999632

          4. 預(yù)測數(shù)據(jù)可視化

          下面用 matplotlib 畫一張圖,以便更加直觀地展現(xiàn)預(yù)測的結(jié)果:

          import?matplotlib.pyplot?as?plt

          #?設(shè)置圖像大小
          fig,?ax?=?plt.subplots(figsize=(9,?6))

          #?設(shè)置正常顯示中文標簽
          plt.rcParams['font.sans-serif']?=?['SimHei']

          #?繪制散點圖
          ax.scatter(x,?y,?color='#00589F',?s=100)
          ax.scatter(z,?predict,?color='#F68F00',?marker='*',?s=260)

          #?設(shè)置標簽字體大小
          ax.tick_params(labelsize=16)

          #?隱藏邊框
          ax.spines['top'].set_visible(False)
          ax.spines['right'].set_visible(False)
          ax.spines['bottom'].set_color('#999999')
          ax.spines['left'].set_color('#999999')

          #?繪制預(yù)測線
          x2?=?np.concatenate([x,?z])
          y2?=?poly_reg.predict(x2)
          ax.plot(x2,?y2,?'--',?c='#999999')
          ax.set_title('\n預(yù)測2020年雙十一交易額為%.0f億元\n'%predict[0],?fontsize=26,?loc='left')

          plt.show()


          5. 最后的話

          以上是基于歷史數(shù)據(jù)進行預(yù)測的結(jié)果,其中包含 11 月 1 日到 3 日,以及 11 月 11 日,合計四天的總交易額,沒有考慮市場環(huán)境的變化。

          吳軍在《浪潮之巔》中說:

          幾乎所有好的投資人,都不再對資本市場做預(yù)測,而是不斷根據(jù)市場變化做出反應(yīng)并進行調(diào)整。巴菲特如此,索羅斯也是如此。

          我們必須承認各種不確定性,并且利用數(shù)據(jù)和信息去消除它們。對于變化,我們不能過多相信過去經(jīng)驗得到的正統(tǒng)的預(yù)測結(jié)果,而是要主動地運用控制論的原理,動態(tài)地調(diào)整我們的工作狀態(tài)和目標。

          雖然數(shù)據(jù)是動態(tài)變化的,但背后的算法是基本不變的,分析思維也是基本不變的。

          所以,重新審視我們的目標,應(yīng)該不是未卜先知,而是運用科學(xué)的方法和思維,在擁抱變化的同時,借助數(shù)據(jù)和信息,盡量消除不確定性,動態(tài)調(diào)整應(yīng)對的策略。

          往期推薦

          如何用人工智能預(yù)測雙 11 的交易額?

          如何評價算法的好壞?


          長按下方的二維碼,關(guān)注林驥的公眾號,更多干貨早知道。

          歡迎加入我的免費知識星球,我每天都會在星球內(nèi)分享讀書筆記和思考感悟,點擊左下角的閱讀原文即可加入。

          瀏覽 57
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  色插综合| 日本在线精品视频 | 久久艹精品 | 影音先锋亚洲无码 | 自拍啪啪视频 |