這個部落格真是大愛,先搬鏈結
再搬內容:
假設有個矩陣這樣的哈:
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 資料含義 甲對乙的取勝概...