iT邦幫忙

2024 iThome 鐵人賽

DAY 30
1
Python

從0開始學習Python-為未來學習AI奠定基礎系列 第 30

從0開始學習Python---KNN 演算法(二)人工智慧破冰之旅

  • 分享至 

  • xImage
  •  

KNN 演算法(二):選舉造勢場合銷售烤香腸

這次來分析選舉造勢場合銷售烤香腸的數據,我們可以用 KNN 演算法來預測新活動當天烤香腸的銷售量。主要是根據過去的數據,預測新活動的銷售表現。

這個小專題也和昨天的小專題一樣,把機器學習演算法應用到商業預測中。我們可以根據不同活動的特徵(參與人數、天氣、時間),預測類似活動的銷售表現。


程式碼總覽

https://ithelp.ithome.com.tw/upload/images/20240930/2016899474bHoG1rZs.png


解題分析

  1. 資料準備:烤香腸銷售數據

    https://ithelp.ithome.com.tw/upload/images/20240930/20168994YStqmQzbOO.png

  • data:使用字典存儲過去活動的數據,包含四個欄位:
    • 'people':參與人數。
    • 'weather':天氣狀況(1:晴天, 0:下雨)。
    • 'time':舉辦時間(1:晚上, 0:早上)。
    • 'sales':烤香腸的銷售量。
  • df:將數據轉換成 Pandas 的 DataFrame,方便後續操作。
  1. KNN 演算法預測函數 knn_sales

    https://ithelp.ithome.com.tw/upload/images/20240930/20168994rIKKG0UzNa.png

  • new_event: 傳入的新活動參數(參與人數、天氣、時間)。
  • k=3: KNN 的 k 值設為 3,表示會選擇距離最近的三個活動。
  • distances = []: 初始化一個空列表,用來儲存新活動與過去每個活動的距離及銷售量。
  1. 計算新活動和每個過去活動的距離

    https://ithelp.ithome.com.tw/upload/images/20240930/20168994f84KfzTuPT.png

  • for i in range(len(df)):遍歷每一行數據(每個過去的活動)。
  • event:將每個活動的參與人數、天氣、時間轉換成 NumPy 陣列。
  • [26行]:使用歐幾里得距離公式計算新活動與每個過去活動之間的距離。
  • [27行]:將計算出的距離和對應的銷售量一起存入 distances 列表。
  1. 找出最近的 k 個鄰居

    https://ithelp.ithome.com.tw/upload/images/20240930/201689946PRRkEiT3F.png

  • [30行]:按照距離進行升序排序,最近的活動排在最前面。
  • [31行]:選擇距離最近的 k 個鄰居,並存入 neighbors 列表。
  1. 預測銷售量

    https://ithelp.ithome.com.tw/upload/images/20240930/20168994dsJtTPDpzu.png

  • [34行]:計算 k 個鄰居的銷售量平均值,也就是新活動的預測銷售量。
  • [35行]:返回預測的銷售量。
  1. 定義新活動並進行預測

    https://ithelp.ithome.com.tw/upload/images/20240930/20168994euVRpOFrKd.png

  • [38行]:定義一個新活動,參與人數為 180 人,天氣為晴天(1),時間為晚上(1)。
  • [41行]:使用 KNN 演算法預測這個新活動的烤香腸銷售量。
  • [42行]:輸出預測結果,保留小數點後兩位。

輸出結果

https://ithelp.ithome.com.tw/upload/images/20240930/20168994SgjrPMgJZ6.png


結語

今天是我參賽的第 30 天啦~~真的真的很開心自己有堅持下去,也謝謝觀看我文章的讀者們!我知道我的文章都很漏漏ㄉㄥˊ,不過這是我記錄學習足跡的一種方式。也是因為這樣,我能夠好好整理思緒、把我學到的東西全都打出來,雖然打長文很累但學的蠻充實的>"<

現在 Python 對我來說,已經不會讓我感到害怕了。在這 30 天的學習過程中,真的學到了很多之前在做 AI 模型訓練時有看到的函數,還有做一些類似機器訓練的小專題,讓我覺得真的有奠定一定的基礎了。其實我是帶著感激的心情來寫每一篇文章的,儘管成果不盡完美,但能參加這樣的比賽來促進我學習,真的非常非常幸運😋

最後,再次感謝自己這 30 天的努力、感謝讀者們、感謝鐵人賽。

[從0開始學習Python-為未來學習AI奠定基礎]系列文章,

Vivian Weng93 下台一鞠躬><


上一篇
從0開始學習Python---KNN 演算法 (一)人工智慧破冰之旅
系列文
從0開始學習Python-為未來學習AI奠定基礎30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言