概率矩陣轉分類

2021-09-05 12:14:46 字數 1744 閱讀 5955

這個部落格真是大愛,先搬鏈結

再搬內容:

假設有個矩陣這樣的哈:

in [54]: import numpy as np

in [55]: arr = np.random.randn(10, 5)

in [56]: arr

out[56]: 

array([[ 0.18857493,  0.46240256, -1.83704935,  1.69043403, -0.19316615],

[ 0.44804567,  0.06185933, -1.41199774, -0.80787301, -0.79040495],

[ 1.72422331,  0.55960974,  0.00684317,  0.10717335,  1.89600802],

..., 

[-1.6557832 , -0.00702669,  1.48660851,  1.69618841, -0.56193109],

[-0.21719117,  0.37526781, -0.24954224, -0.29203481, -0.12656354],

[-2.34081393, -0.39387936, -1.02882634, -0.15803579, -1.73322845]])

怎麼轉那,就這樣

方法1:

#利用pandas庫

import pandas as pd

pd.get_dummies(arr.argmax(1))

out[58]: 

0  1  2  3  4

0  0  0  0  1  0

1  1  0  0  0  0

2  0  0  0  0  1

3  0  0  0  1  0

4  0  0  1  0  0

5  0  0  1  0  0

6  0  0  1  0  0

7  0  0  0  1  0

8  0  1  0  0  0

9  0  0  0  1  0

#利用sklearn庫(這兩個異曲同工)

in [59]: from sklearn.preprocessing import label_binarize

in [60]: label_binarize(arr.argmax(1),classes=list(range(5)))

out[60]: 

array([[0, 0, 0, 1, 0],

[1, 0, 0, 0, 0],

[0, 0, 0, 0, 1],

..., 

[0, 0, 0, 1, 0],

[0, 1, 0, 0, 0],

[0, 0, 0, 1, 0]])

方法2:

#只使用numpy庫,主要是利用了numpy的點乘,當然還有我最愛的map

in [61]: list(map(lambda x: x==max(x), arr)) * np.ones(shape=arr.shape)

out[61]: 

array([[ 0.,  0.,  0.,  1.,  0.],

[ 1.,  0.,  0.,  0.,  0.],

[ 0.,  0.,  0.,  0.,  1.],

..., 

[ 0.,  0.,  0.,  1.,  0.],

[ 0.,  1.,  0.,  0.,  0.],

[ 0.,  0.,  0.,  1.,  0.]])

稀疏矩陣轉置矩陣

num 矩陣a中某列的非零元素的個數 cpot 初值表示矩陣a中某列第乙個非零元素在b中的位置,並有如下遞推 cpot 1 0 cpot col cpot col 1 num col 1 2 col nu end right.const int maxterm 100 struct sparsema...

基於概率的分類 貝葉斯分類

分類指 乙個給定的無標籤點的類標籤 貝葉斯分類器使用貝葉斯定理來 使得後驗概率最大的類標籤,主要任務是估計每乙個類的聯合概率密度函式,並通過多元正態分步來建模 令訓練資料集 d 包含 n 個 d 維空間中的點xi 也就是說有n個樣本資料,d個指標 令 yi 表示每個點的類標籤,即最終 的類別,其中y...

奪冠概率和轉矩陣

足球比賽具有一定程度的偶然性,弱隊也有戰勝強隊的可能。假設有甲 乙 丙 丁四個球隊。根據他們過去比賽的成績,得出每個隊與另乙個隊對陣時取勝的概率表 甲 乙 丙 丁 甲 0.1 0.3 0.5 乙 0.9 0.7 0.4 丙 0.7 0.3 0.2 丁 0.5 0.6 0.8 資料含義 甲對乙的取勝概...