
- 機器學習基礎
- ML - 首頁
- ML - 簡介
- ML - 入門
- ML - 基本概念
- ML - 生態系統
- ML - Python 庫
- ML - 應用
- ML - 生命週期
- ML - 必備技能
- ML - 實現
- ML - 挑戰與常見問題
- ML - 限制
- ML - 真實案例
- ML - 資料結構
- ML - 數學基礎
- ML - 人工智慧
- ML - 神經網路
- ML - 深度學習
- ML - 獲取資料集
- ML - 分類資料
- ML - 資料載入
- ML - 資料理解
- ML - 資料準備
- ML - 模型
- ML - 監督學習
- ML - 無監督學習
- ML - 半監督學習
- ML - 強化學習
- ML - 監督學習 vs. 無監督學習
- 機器學習資料視覺化
- ML - 資料視覺化
- ML - 直方圖
- ML - 密度圖
- ML - 箱線圖
- ML - 相關矩陣圖
- ML - 散點矩陣圖
- 機器學習統計學
- ML - 統計學
- ML - 均值、中位數、眾數
- ML - 標準差
- ML - 百分位數
- ML - 資料分佈
- ML - 偏度和峰度
- ML - 偏差和方差
- ML - 假設
- 機器學習中的迴歸分析
- ML - 迴歸分析
- ML - 線性迴歸
- ML - 簡單線性迴歸
- ML - 多元線性迴歸
- ML - 多項式迴歸
- 機器學習中的分類演算法
- ML - 分類演算法
- ML - 邏輯迴歸
- ML - K近鄰演算法 (KNN)
- ML - 樸素貝葉斯演算法
- ML - 決策樹演算法
- ML - 支援向量機
- ML - 隨機森林
- ML - 混淆矩陣
- ML - 隨機梯度下降
- 機器學習中的聚類演算法
- ML - 聚類演算法
- ML - 基於質心的聚類
- ML - K均值聚類
- ML - K中心點聚類
- ML - 均值漂移聚類
- ML - 層次聚類
- ML - 基於密度的聚類
- ML - DBSCAN 聚類
- ML - OPTICS 聚類
- ML - HDBSCAN 聚類
- ML - BIRCH 聚類
- ML - 親和傳播
- ML - 基於分佈的聚類
- ML - 凝聚層次聚類
- 機器學習中的降維
- ML - 降維
- ML - 特徵選擇
- ML - 特徵提取
- ML - 向後消除法
- ML - 向前特徵構造
- ML - 高相關性過濾器
- ML - 低方差過濾器
- ML - 缺失值比率
- ML - 主成分分析
- 強化學習
- ML - 強化學習演算法
- ML - 利用與探索
- ML - Q學習
- ML - REINFORCE 演算法
- ML - SARSA 強化學習
- ML - 演員-評論家方法
- 深度強化學習
- ML - 深度強化學習
- 量子機器學習
- ML - 量子機器學習
- ML - 使用 Python 的量子機器學習
- 機器學習雜項
- ML - 效能指標
- ML - 自動工作流程
- ML - 提升模型效能
- ML - 梯度提升
- ML - 自舉匯聚 (Bagging)
- ML - 交叉驗證
- ML - AUC-ROC 曲線
- ML - 網格搜尋
- ML - 資料縮放
- ML - 訓練和測試
- ML - 關聯規則
- ML - Apriori 演算法
- ML - 高斯判別分析
- ML - 成本函式
- ML - 貝葉斯定理
- ML - 精度和召回率
- ML - 對抗性
- ML - 堆疊
- ML - 輪次
- ML - 感知器
- ML - 正則化
- ML - 過擬合
- ML - P值
- ML - 熵
- ML - MLOps
- ML - 資料洩露
- ML - 機器學習的盈利模式
- ML - 資料型別
- 機器學習 - 資源
- ML - 快速指南
- ML - 速查表
- ML - 面試問題
- ML - 有用資源
- ML - 討論
機器學習 - P值
在機器學習中,我們使用 P 值來檢驗零假設,即兩個變數之間沒有顯著關係。例如,如果我們有一個房價資料集,並且想要確定房屋大小與其價格之間是否存在顯著關係,我們可以使用 P 值來檢驗這個假設。
為了理解機器學習中 P 值的概念,我們首先需要理解零假設和備擇假設的概念。零假設是假設兩個變數之間沒有顯著關係,而備擇假設則與零假設相反,它指出兩個變數之間存在顯著關係。
一旦我們定義了零假設和備擇假設,我們就可以使用 P 值來檢驗假設的顯著性。P 值是在零假設為真的前提下,獲得觀測結果或更極端結果的機率。
如果 P 值小於顯著性水平(通常設定為 0.05),那麼我們拒絕零假設並接受備擇假設。這意味著兩個變數之間存在顯著關係。另一方面,如果 P 值大於顯著性水平,那麼我們不拒絕零假設,並得出結論認為兩個變數之間沒有顯著關係。
Python 中 P 值的實現
Python 提供了幾個用於統計分析和假設檢驗的庫。最流行的統計分析庫之一是 scipy 庫。scipy 庫提供了一個名為 ttest_ind() 的函式,可用於計算兩個獨立樣本的 P 值。
為了演示機器學習中 p 值的實現,我們將使用 scikit-learn 提供的乳腺癌資料集。該資料集的目標是根據腫瘤的半徑、紋理、周長、面積、光滑度、緻密性、凹度和對稱性等各種特徵來預測乳腺腫瘤是惡性還是良性。
首先,我們將載入資料集並將其拆分為訓練集和測試集:
from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split data = load_breast_cancer() X = data.data y = data.target X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
接下來,我們將使用 scikit-learn 中的 SelectKBest 類根據它們的 p 值選擇前 k 個特徵。在這裡,我們將選擇前 5 個特徵:
from sklearn.feature_selection import SelectKBest, f_classif k = 5 selector = SelectKBest(score_func=f_classif, k=k) X_train_new = selector.fit_transform(X_train, y_train) X_test_new = selector.transform(X_test)
SelectKBest 類採用評分函式作為輸入來計算每個特徵的 p 值。我們使用 f_classif 函式,它是每個特徵與目標變數之間的 ANOVA F 值。k 引數指定要選擇的頂級特徵的數量。
在訓練資料上擬合選擇器後,我們使用 fit_transform() 方法轉換資料以僅保留前 k 個特徵。我們還使用 transform() 方法轉換測試資料以僅保留選擇的特徵。
我們現在可以在選擇的特徵上訓練模型並評估其效能:
from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score model = LogisticRegression() model.fit(X_train_new, y_train) y_pred = model.predict(X_test_new) accuracy = accuracy_score(y_test, y_pred) print(f"Accuracy: {accuracy:.2f}")
在這個例子中,我們在前 5 個選擇的特徵上訓練了一個邏輯迴歸模型,並使用準確率評估了它的效能。但是,p 值也可以用於假設檢驗,以確定一個特徵是否具有統計學意義。
例如,要檢驗平均半徑特徵是否顯著的假設,我們可以使用 scipy.stats 模組中的 ttest_ind() 函式:
from scipy.stats import ttest_ind malignant = X[y == 0, 0] benign = X[y == 1, 0] t, p_value = ttest_ind(malignant, benign) print(f"P-value: {p_value:.2f}")
ttest_ind() 函式接收兩個陣列作為輸入,並返回 t 統計量和雙尾 p 值。
輸出
我們將從上述實現中獲得以下輸出:
Accuracy: 0.97 P-value: 0.00
在這個例子中,我們計算了惡性和良性類別之間平均半徑特徵的 p 值。