iT邦幫忙

2023 iThome 鐵人賽

DAY 15
0

訓練與測試集合

訓練集就像是在一門課學習東西;測試集就像是學完這堂課的內容後所出的考試

from sklearn.model_selection import train_test_split
X = range(10)  # 特徵向量 X 包含整數 0 到 9,共 10 個數據點
y = [0, 0, 1, 1, 0, 0, 1, 1, 0, 0]  # 目標標籤 y 包含對應的二元分類標籤

# 分成訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# X_train: 訓練集的特徵向量
# X_test: 測試集的特徵向量
# y_train: 訓練集的目標標籤
# y_test: 測試集的目標標籤

# test_size=0.2: 表示將數據分成測試集時,測試集的比例為總數據的 20%,而訓練集的比例為 80%。

# random_state=42: 設定隨機種子,確保分割的結果是可重複的。指定相同的 random_state 將獲得相同的分割結果。

print("訓練集 X:", X_train)  # 顯示訓練集的特徵向量
print("測試集 X:", X_test)    # 顯示測試集的特徵向量
print("訓練集 y:", y_train)  # 顯示訓練集的目標標籤
print("測試集 y:", y_test)    # 顯示測試集的目標標籤

分類資料類別型特徵(Categorical Feature)

  • 序號編碼(Ordinal/Label Encoding)
  • 獨熱編碼(One-hot Encoding)

管理遺漏特徵

  • 資料集巨大、遺漏特徵多 => 整行移除
  • 找出一個監督策略為每一種特徵訓練模型後預測 => 建立子模型預測這些特徵
  • 最佳 => 採取自動策略,根據其他已知值加入它們

資料縮放與標準化

縮放 Scaling

可以將數據的範圍調整到一個特定的區間,以確保不同特徵的值處於相似的範圍內,這對某些機器學習算法(如SVM和KNN)非常重要

  • 變換data的範圍(range)
  • 根據點與點之間的距離
  • SVM、KNN
  • 將1變換成任何數值
import numpy as np
from sklearn.preprocessing import MinMaxScaler

data = np.array([[1.0, 2.0, 3.0],
                 [4.0, 5.0, 6.0],
                 [7.0, 8.0, 9.0]])

# 創建MinMaxScaler對象,將數據縮放到特定範圍(例如[0, 1])
scaler = MinMaxScaler()

# 適配數據並進行縮放
scaled_data = scaler.fit_transform(data)

print("原始數據:\n", data)
print("縮放後的數據:\n", scaled_data)

標準化 Normalization

將數據轉換為標準正態分佈,以便某些統計方法和機器學習算法的應用

  • 變換資料形狀的分布(shape of the distrubution)
  • 讓資料被描述為常態分布(normal distribution)
  • Box-Cox Transformation
import numpy as np
from sklearn.preprocessing import StandardScaler

data = np.array([1.0, 2.0, 3.0, 4.0, 5.0])

# 創建StandardScaler對象,進行標準化
scaler = StandardScaler()

# 適配數據並進行標準化
normalized_data = scaler.fit_transform(data.reshape(-1, 1))

print("原始數據:\n", data)
print("標準化後的數據:\n", normalized_data)

主成分分析PCA

PCA 通常用於減少高維數據的維度,以保留最重要的特徵。

from sklearn.decomposition import PCA
import numpy as np

# 創建示例數據集
data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 創建PCA模型,指定要保留的主成分數量
pca = PCA(n_components=2)

# 適配數據並進行降維
transformed_data = pca.fit_transform(data)

print(transformed_data)
'''
[[-5.19615242e+00  3.62353582e-16]
[ 0.00000000e+00  0.00000000e+00]
[ 5.19615242e+00  3.62353582e-16]]
'''

上一篇
[DAY14] 機器學習基本架構(二): 特徵工程Part1
下一篇
[DAY16] 機器學習-迴歸分析(一)
系列文
關於我從基礎程設轉職到人工智慧入門30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言