只用pandas算precision, recall, accuracy等指標

更新於 發佈於 閱讀時間約 6 分鐘


如果你的機器學習模型或是任何統計最後的結果可以轉變成二分法, 假設由1和0來代表「是」與「不是」, 可以變成簡單的vector(例如pd.Series)或者dataframe的方式儲存的話, 這個簡單的教學就適用於你
如果你原本計算models的過程非常繁複, model已經算出來了, 可是當初忘了叫他算某個特定的指標, 要補算的時候

如果用同一組資料同時預測好幾個outcomes你可能就會用dataframe來儲存 以下做法以python的Pandas.DataFrame為例 〈全部的code在最下面〉

準備

  1. answers = 來自data的, 由0, 1來表示是與不是的pd.DataFrame
  2. predicted = 由model計算並且已經歸類為0, 1的結果

Accuracy 總正確率 (所有你的model猜對的cases/ 全部的cases)

  1. 把answers和predicted的所有0都recode成-1
  2. 算一個新的dataframe = 兩個dataframes做element-wise乘法
  3. 把新的dataframe的 -1都recode成0
  4. 新的dataframe每個欄位的平均就是每個項目的accuracy

Precision (你的model猜yes的情況下, 真的在data中是yes的機率)

  1. answers不動, 把predicted的0都換成missing values (e.g. np.nan)
  2. 算一個新的dataframe = 兩個dataframes做element-wise乘法
  3. 新的dataframe每個欄位的平均就是每個項目的precision

Recall (真的在data是yes的情況下, 你的model猜yes的機率)

  1. predicted不動, 但是answers的0都換成missing values (e.g. np.nan)
  2. 算一個新的dataframe = 兩個dataframes做element-wise乘法
  3. 新的dataframe每個欄位的平均就是每個項目的precision

F1 (Precision和Recall的調和平均數)

  1. 算出precision和recall
  2. 算出調和平均數

全部的code在這

# some toy data, replace with your own data frames
import pandas as pd
from numpy import nan
predicted = pd.DataFrame({
'a':[1., 1., 1., 1., 0.],
'b':[1., 0., 1., 1., 0.],
'c':[0., 0., 0., 1., 1.]
})
answers = pd.DataFrame({
'a':[1., 1., 1., 1., 1.],
'b':[1., 1., 1., 1., 0.],
'c':[0., 1., 0., 0., 1.]
})
def accuracy(predicted:pd.DataFrame, answers:pd.DataFrame) -> pd.Series:
result_df = predicted.replace(0, -1) * answers.replace(0, -1)
result_df.replace(-1, 0, inplace=True)
return result_df.mean()

def precision(predicted:pd.DataFrame, answers:pd.DataFrame) -> pd.Series:
result_df = predicted.replace(0, nan) * answers
return result_df.mean()

def recall(predicted:pd.DataFrame, answers:pd.DataFrame) -> pd.Series:
result_df = predicted * answers.replace(0, nan)
return result_df.mean()

def f1(predicted:pd.DataFrame, answers:pd.DataFrame) -> pd.Series:
p = precision(predicted, answers)
r = recall(predicted, answers)
f1 = 2 / (p**-1 + r**-1)
return f1

測試結果

accuracy(predicted, answers)
a 0.8
b 0.8
c 0.6
dtype: float64

precision(predicted, answers)
a 1.0
b 1.0
c 0.5
dtype: float64

recall(predicted, answers)
a 0.80
b 0.75
c 0.50
dtype: float64

f1(predicted, answers)
a 0.888889
b 0.857143
c 0.500000
dtype: float64
留言
avatar-img
留言分享你的想法!
avatar-img
寂寞小冬瓜的沙龍
11會員
15內容數
對工程師友善的(目前免費)英文教材 #工程師 #Coding #Python #Django #English #英文 #文法 #語言學習 #程式
2024/04/24
八字是一個非常重要的概念,用於預測個人的命運與性格。八字,又稱作「生辰八字」,是根據一個人出生的年、月、日、時所對應的天干地支來組成的。在八字分析中,十神是理解一個人的性格與命運中不可或缺的元素。 十神的定義 在八字命理中,十神是基於日干(即出生日的天干)與其他天干的相對關係來定義的。這些關係反
2024/04/24
八字是一個非常重要的概念,用於預測個人的命運與性格。八字,又稱作「生辰八字」,是根據一個人出生的年、月、日、時所對應的天干地支來組成的。在八字分析中,十神是理解一個人的性格與命運中不可或缺的元素。 十神的定義 在八字命理中,十神是基於日干(即出生日的天干)與其他天干的相對關係來定義的。這些關係反
2024/04/16
隨因為推論統計邏輯明顯有問題 心理學實驗看到的 p value是 P(Data| Hyptohesis), 也就是假設成立的情況下拿到這樣的資料的機率 以下是大家常見的推論步驟: 先設一個虛無假設 (H0) 拿資料, 算 p value ( = P(Data | Hypothesis)
2024/04/16
隨因為推論統計邏輯明顯有問題 心理學實驗看到的 p value是 P(Data| Hyptohesis), 也就是假設成立的情況下拿到這樣的資料的機率 以下是大家常見的推論步驟: 先設一個虛無假設 (H0) 拿資料, 算 p value ( = P(Data | Hypothesis)
2024/04/15
你好 歡迎來到這個充滿矛盾的地方 由敝人 一個喜歡研究但是不喜歡學術界的博士畢業生 喜歡英文但是討厭講英文的人 主修是統計但是不相信統計 碩士班念心理學但是寧可相信命理 喜歡寫程式但是不喜歡寫應用面的東西 的本人我 歡迎一樣奇怪的你 一樣在找自己的你
2024/04/15
你好 歡迎來到這個充滿矛盾的地方 由敝人 一個喜歡研究但是不喜歡學術界的博士畢業生 喜歡英文但是討厭講英文的人 主修是統計但是不相信統計 碩士班念心理學但是寧可相信命理 喜歡寫程式但是不喜歡寫應用面的東西 的本人我 歡迎一樣奇怪的你 一樣在找自己的你
看更多
你可能也想看
Thumbnail
孩子寫功課時瞇眼?小心近視!這款喜光全光譜TIONE⁺光健康智慧檯燈,獲眼科院長推薦,網路好評不斷!全光譜LED、180cm大照明範圍、5段亮度及色溫調整、350度萬向旋轉,讓孩子學習更舒適、保護眼睛!
Thumbnail
孩子寫功課時瞇眼?小心近視!這款喜光全光譜TIONE⁺光健康智慧檯燈,獲眼科院長推薦,網路好評不斷!全光譜LED、180cm大照明範圍、5段亮度及色溫調整、350度萬向旋轉,讓孩子學習更舒適、保護眼睛!
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
資料前處理(Data Preprocessing)中的重要角色-缺失值處理。從檢查、刪除到填充缺失值,以及插值法和機器學習算法的應用方法。Pandas 缺失值處理基礎方法、進階填充缺失值、鐵達尼號存活預測資料集的示例和機器學習算法填補缺失值方法的介紹與使用。
Thumbnail
資料前處理(Data Preprocessing)中的重要角色-缺失值處理。從檢查、刪除到填充缺失值,以及插值法和機器學習算法的應用方法。Pandas 缺失值處理基礎方法、進階填充缺失值、鐵達尼號存活預測資料集的示例和機器學習算法填補缺失值方法的介紹與使用。
Thumbnail
pandas是用於資料操縱和分析的Python軟體庫。它建造在 NumPy 基礎上,並為操縱數值表格和時間序列,提供了資料結構和運算操作。 Pandas 的主要資料結構包含 Series 和 DataFrame 物件,由於 Pandas 本身基 Numpy 所以在使用大量資料運算時效能表現也優於原
Thumbnail
pandas是用於資料操縱和分析的Python軟體庫。它建造在 NumPy 基礎上,並為操縱數值表格和時間序列,提供了資料結構和運算操作。 Pandas 的主要資料結構包含 Series 和 DataFrame 物件,由於 Pandas 本身基 Numpy 所以在使用大量資料運算時效能表現也優於原
Thumbnail
本文介紹瞭如何使用 Python pandas 進行資料分析,包括如何使用 corr() 函數針對數字類型的欄位進行分析,以及如何刪除不需要的欄位和取得想要的小數位數。
Thumbnail
本文介紹瞭如何使用 Python pandas 進行資料分析,包括如何使用 corr() 函數針對數字類型的欄位進行分析,以及如何刪除不需要的欄位和取得想要的小數位數。
Thumbnail
本文探討了在使用 pandas 處理資料時應注意的幾個關鍵點,以及如何減少因資料型態問題而產生的錯誤,確保資料的原始意義得以保留。主要包括Pandas 資料處理深入解析,尋找CSV之外的數據儲存方案,以及優化資料處理策略。
Thumbnail
本文探討了在使用 pandas 處理資料時應注意的幾個關鍵點,以及如何減少因資料型態問題而產生的錯誤,確保資料的原始意義得以保留。主要包括Pandas 資料處理深入解析,尋找CSV之外的數據儲存方案,以及優化資料處理策略。
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們在原有的資料表上,將所有在欄位quantity的缺失值填補為0。 題目的原文敘述 測試範例 Example 1: Input:+-----------------+----------+-------+ | nam
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們在原有的資料表上,將所有在欄位quantity的缺失值填補為0。 題目的原文敘述 測試範例 Example 1: Input:+-----------------+----------+-------+ | nam
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們在原有的資料表上,將欄位grade的資料型別從原本的float變更為int整數型別。 題目的原文敘述 測試範例 Example 1: Input: DataFrame students: +------------
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們在原有的資料表上,將欄位grade的資料型別從原本的float變更為int整數型別。 題目的原文敘述 測試範例 Example 1: Input: DataFrame students: +------------
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們以原有的資料表name欄位為檢查基準,刪除有缺失值None的 data rows。 題目的原文敘述 測試範例 Example 1: Input: +------------+---------+-----+ | s
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們以原有的資料表name欄位為檢查基準,刪除有缺失值None的 data rows。 題目的原文敘述 測試範例 Example 1: Input: +------------+---------+-----+ | s
Thumbnail
繼「【🔒 Python實戰營 - Data Science 必修班】Pandas 資料清洗技 - 填補式」之後,我們已經學會怎麼填補空缺資料了,那這個章節我們來教您如何對某些欄位有條件的整形,有時候我們的資料來源某些欄位資料格式不一,甚至型態都不是正規統一的值,此時我們就需要針對這些值進行一些處理
Thumbnail
繼「【🔒 Python實戰營 - Data Science 必修班】Pandas 資料清洗技 - 填補式」之後,我們已經學會怎麼填補空缺資料了,那這個章節我們來教您如何對某些欄位有條件的整形,有時候我們的資料來源某些欄位資料格式不一,甚至型態都不是正規統一的值,此時我們就需要針對這些值進行一些處理
Thumbnail
繼「【Google Colab Python系列】 資料處理神器 Pandas 起手式」之後,相信對於各位來說已經是小兒科了吧,沒關係! 我們今天來增加一點點小挑戰,你知道嗎? Pandas對於大部分人的第一印象就是「不就表格化而已,有什麼了不起?」、「幫我們整理格式轉換的介接器」...,但其實它不
Thumbnail
繼「【Google Colab Python系列】 資料處理神器 Pandas 起手式」之後,相信對於各位來說已經是小兒科了吧,沒關係! 我們今天來增加一點點小挑戰,你知道嗎? Pandas對於大部分人的第一印象就是「不就表格化而已,有什麼了不起?」、「幫我們整理格式轉換的介接器」...,但其實它不
Thumbnail
今天終於來到3分之2的進度了,也恭喜各位終於完成了python基礎程式的教學,是否對於程式撰寫更加得心應手了呢?但還別那麼心急,由於數據分析是建立在統計分析之上,所以我們還必須要學習這些統計分析工具,所以我們稍微來解說一下有那些統計常用的工具吧!!
Thumbnail
今天終於來到3分之2的進度了,也恭喜各位終於完成了python基礎程式的教學,是否對於程式撰寫更加得心應手了呢?但還別那麼心急,由於數據分析是建立在統計分析之上,所以我們還必須要學習這些統計分析工具,所以我們稍微來解說一下有那些統計常用的工具吧!!
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News