很多時候在處理資料時,樣本資料與標籤值是放在兩個資料結構中儲存的。當樣本資料順序發生變化時,我們需要保證其對應的標籤順序也同時發生變化。
思想很簡單,由於樣本資料的變化是未知的,想要標籤資料隨著樣本資料的變化而變化,最簡單的方法就是將標籤和樣本融合在一起。
例如,在python中,我們可以這樣做:
把label放在data的最後一位,即可滿足問題的需求。import numpy as np
data =[[
1,2,
3,1]
,[2,
1,2,
3],[
1,4,
6,7]
,[6,
7,3,
2]]labels =[1
,1,0
,1]completedata = np.c_[data, np.array(labels)
.t]print
(completedata)
np.random.shuffle(completedata)
(completedata)
拓展:np.c_和np.r_的區別
1. np.c_是矩陣按行「相加」
輸出結果:a = np.array([[
1,2,
3],[
7,8,
9]])
b = np.array([[
4,5,
6],[
1,2,
3]])
(np.c_[a, b]
)
2. np.r_是矩陣按列「相加」[[1
2345
6][7
8912
3]]
輸出結果:a = np.array([[
1,2,
3],[
7,8,
9]])
b = np.array([[
4,5,
6],[
1,2,
3]])
(np.r_[a, b]
)
在使用sklearn中的聚類演算法過程中,得到的一般為聚類結果的標籤值。例如,[1,1,0,1,0,1,0,1,0,1,2,-1,-1,2,3,3,1,-1,-1]這樣的標籤值,如何將聚類結果的_labels值與原樣本對應並列印輸出,是亟待解決的問題。[[1
23][
789]
[456
][12
3]]
labels_to_original函式的功能是,將forclusterlist中的樣本集按照labels中的標籤值重新排序,得到按照類簇排列好的輸出結果
聚類的樣本集:forclusterlist = [「類0」,「類1」,「類2」,「雜訊」,「類1」,「類2」,「類1」,「類2」,「類3」,「類1」,「類2」,「類1」,「雜訊」,「類2」,「類2」,「雜訊」]# labels為聚類結果的標籤值
# forclusterlist為聚類所使用的樣本集
# 函式的功能是將forclusterlist中的樣本集按照labels中的標籤值重新排序,得到按照類簇排列好的輸出結果
deflabels_to_original
(labels, forclusterlist)
:assert
len(labels)
==len
(forclusterlist)
maxlabel =
max(labels)
numberlabel =
[i for i in
range(0
, maxlabel +1,
1)]-
1)result =[[
]for i in
range
(len
(numberlabel))]
for i in
range
(len
(labels)):
index = numberlabel.index(labels[i]
) result[index]
)return result
聚類的標籤值:labels = [0,1,2,-1,1,2,1,2,3,1,2,1,-1,2,2,-1]
使用上述函式執行:
結果:forclusterlist =
["類0"
,"類1"
,"類2"
,"雜訊"
,"類1"
,"類2"
,"類1"
,"類2"
,"類3"
,"類1"
,"類2"
,"類1"
,"雜訊"
,"類2"
,"類2"
,"雜訊"
]labels =[0
,1,2
,-1,
1,2,
1,2,
3,1,
2,1,
-1,2
,2,-
1]result = labels_to_original(labels, forclusterlist)
(result)
[
['類0'],
['類1'
,'類1'
,'類1'
,'類1'
,'類1'],
['類2'
,'類2'
,'類2'
,'類2'
,'類2'
,'類2'],
['類3'],
['雜訊'
,'雜訊'
,'雜訊'
]]
Linux之文字處理
在linux系統中,即使在控制台命令列狀態下,也需要進行大量的文字處理工作。linux系統中幾乎所有的配置檔案都是以純文字形式存在的,我們也要對這些檔案進行編輯工作。linux上常見的文字編輯器有vi vim ed gedit emacs等。本章介紹的文字編輯器就是平常使用最多的vim文字處理器。v...
python之文字處理
函式 open filename,mode filename 訪問的檔案 mode 訪問模式 常見模式作用r 唯讀r 讀寫w 只寫 檔案存在則覆蓋,不存在則建立 w 只寫 檔案存在則覆蓋,不存在則建立 a追加 檔案存在追加到已有內容後 rb讀寫 wb讀寫 ab追加和讀 比如我在這裡先編輯了乙個1.t...
文字處理之SED
高階編輯命令 stream editor,行編輯器 sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行儲存在臨時 緩衝區中,稱為 模式空間 pattern space 接著用sed命令處理緩衝區中的 內容,處理完成後,把緩衝區的內容送往螢幕。然後讀入下行,執行下乙個迴圈。如果沒有使諸如...