[ML101] Machine Learning 從0開始

Even Pan
Sep 9, 2024

--

今天來講講一個模型的誕生,

  1. [本篇]資料採集
  2. 資料處理與特徵工程
  3. 模型訓練與模型評估
  4. 上線 (內容太充實了下堂課再來講講吧- 有興趣的可以先回去翻翻streamlit,猜猜看可以怎麼用)

資料採集

哪裡可以找到好資料,推薦先玩玩sklearn的toy-dataset,再來是kaggle,因為也有大神寫好的code book可以參考,這裡是我最初的吸經驗的練功坊呢

推薦三個起步的資料集,依照難度排序

研究鳶尾花的Iris: load_iris — scikit-learn 1.5.1 documentation

研究生與死的鐵達尼: Titanic — Machine Learning from Disaster | Kaggle

研究房價的 Boston house price: Data Science Workflow TOP 2% (with Tuning) (kaggle.com)

接下來就來看一下如何實際的載入iris 與titanic資料集

首先我們創一個新資料夾建好venv 並且activate好它

pip install virtualenv
python3 -m virtualenv .venv
source .venv/bin/activate

看到自己user name 前面看一個跟屁蟲(.venv)就是成功啟動環境了

接著就來安裝sklearn吧

pip install scikit-learn

接著安裝一下jupyter-notebook這是很方便data science的工具

pip install notebook

接著創造一個測試檔案確認可以連上我們.venv這個python kernel

順手安裝一下數據科學三板斧 numpy 會再安裝pandas時一併安裝

pip install pandas matplotlib

全部都安裝,ipynb也配置好kernel的情況 就可以如下圖正常的load資料啦

確定可以load資料後我們就可以用下圖的方式來將資料存到我們接下來可以使用的變數中,首先資料的欄位名稱我們可以存成columns, X因為有不只一個維度我們通常會用大寫表示這種多維度數據提醒自己,y 因為是single output單維的數據,我們就放個小寫的。 變數命名真是滿滿的細節阿~~(自己講XD)

from sklearn.datasets import load_iris

data = load_iris()
columns = data['feature_names']
X = data['data']
y = data['target']
print(data['DESCR'])

接下來帶大家下載一下kaggle資料集

首先我們需要辦個帳號,完成登入後我們訪問這個地址Titanic — Machine Learning from Disaster | Kaggle

下載下來的資料會是一個裝了三個csv檔案的zip

解壓縮後可以看到三個csv檔案

放到對應的資料夾後,接下來也非常容易就可以載入

import pandas as pd

df =pd.read_csv('data/train.csv')
df.head()

這時也許你會說,奇怪怎麼看起來這個df 全部的資料都在一起,好像沒辦法分X y?

這問題非常好,那我們就順手來看這資料怎麼處理吧

首先觀察一下train and test這兩個資料有甚麼不同吧

你可以發現,survived這個欄位不見了。回頭看kaggle描述:

發現這就是我們需要預測的欄位,test.csv沒有給答案是因為他是最終希望我們預測上傳來衡量我們模型表現的資料集,這個test.csv就是官方保留來讓我最終測試模型能力的最後測試集

那我們目前需要用train.csv來拆分資料了

首先我們可以通過info來看各個欄位的資料型態,模型可以立即拿來用的是數值型資料,其餘的我們都要通過某些方法特徵工程

結束後我們通過列印出shape,確保這些資料的數量有對齊(代表我們剛剛的操作沒有走歪)

以上就是資料集載入的介紹,下面我們來說說剛剛提到的特徵工程

--

--

Even Pan
Even Pan

Written by Even Pan

Technical blogger who like to held hands-on ml workshops. Fast-paced learner and highly interested in the latest technologies.

No responses yet