Python中MNE庫濾波的重要性

2021-10-06 03:45:12 字數 2903 閱讀 4548

最近在處理mi資料的時候發現濾波真的很重要啊,之前一直沒把預處理當個事,這次發現還是很重要的!!!

有fir濾波的時候準確率為百分之九十多。

注釋掉fir濾波後,準確率只有百分之三十多。。。還趕不上隨機的結果。

# 設定log輸出等級

mne.set_log_level(false)

# bciciv_2a_gdf中腦電信道的名稱

channels_a = ['eeg-fz', 'eeg-0', 'eeg-1', 'eeg-2', 'eeg-3', 'eeg-4', 'eeg-5', 'eeg-c3', 'eeg-6', 'eeg-cz',

'eeg-7', 'eeg-c4', 'eeg-8', 'eeg-9', 'eeg-10', 'eeg-11', 'eeg-12', 'eeg-13', 'eeg-14', 'eeg-pz',

'eeg-15', 'eeg-16']

# 定義csp分類函式,用於分類左手右手的訊號

def mi_eeg_csp(filename, components, channels):

# 載入挑選出的腦電資料,根據訊號的質量經過了初步的篩選

with open(filename, 'rb') as f:

epochs = pickle.load(f)

# 對資料進行濾波處理

epochs_train = epochs.filter(7., 30., fir_design='firwin', skip_by_annotation='edge')

# epochs_train = epochs

# 只處理其中的左右手部分(總共包括4類)

traindata = epochs_train['cueleft', 'cueright'].get_data(channels)

trainlabels = epochs_train['cueleft', 'cueright'].events[:, -1]

# 根據設計的交叉驗證引數,分配相關的訓練集和測試集資料

cv = shufflesplit(10, test_size=0.2, random_state=42)

# 建立線性分類器

lda = lineardiscriminantanalysis()

# 建立csp提取特徵,這裡使用4個分量的csp

csp = csp(n_components=components, reg=none, log=false, norm_trace=false)

# 建立機器學習的pipeline,也就是分類模型,使用這種方式可以把特徵提取和分類統一整合到了clf中

clf = pipeline([('csp', csp), ('lda', lda)])

# 獲取交叉驗證模型的得分

scores = cross_val_score(clf, traindata, trainlabels, cv=cv, n_jobs=4)

# 輸出結果,準確率和不同樣本的佔比

class_balance = np.mean(trainlabels == trainlabels[0])

class_balance = max(class_balance, 1. - class_balance)

print("classification accuracy: %f / chance level: %f" % (np.mean(scores), class_balance))

if __name__ == '__main__':

# 程式開始時間

timestart = time.time()

# 設定檔案路徑

# 執行csp演算法

mi_eeg_csp(filefullpatha, components=4, channels=channels_a)

# 程式結束時間

timeend = time.time()

# 列印程式整體用時

print("用時:", timeend - timestart)

有fir濾波的時候準確率為68%左右。

沒有fir濾波的時候準確率僅為51%左右。

開始的時候發現濾波前後資料沒有變化,一度認為是mne庫的bug,後來發現在mne庫中預設是不會對eog資料濾波的。在這裡預設只處理eeg資料,前後對比可以發現eeg資料變化了,而eog資料並沒有改變。

fir濾波前:

fir濾波後:

python中df去重 python去重函式是什麼

資料去重可以使用duplicated 和drop duplicates 兩個方法。dataframe.duplicated subset none,keep first 返回boolean series表示重複行 引數 subset 列標籤或標籤序列,可選 僅考慮用於標識重複項的某些列,預設情況下使...

pcl庫中濾波器總結

1 引言 在獲取點雲時由於裝置精度 操作者經驗 環境因素等帶來的影響,以及電磁波衍射的特性 被測物體表面性質變化和資料拼接配準操作過程的影響,點雲資料中將不可避免的出現一些雜訊點。在點雲處理流程中,濾波處理作為預處理的第一步,往往對後續處理管道影響很大,只有在濾波預處理中將雜訊點 離群點 孔洞 資料...

保邊濾波中雙邊濾波與引導濾波的區別

雙邊濾波 雙邊濾波是一種同時考慮了畫素空間差異與強度差異的濾波器,因此具有保持影象邊緣的特性。高斯濾波器如下 其中w是權重,i和j是畫素索引,k是歸一化常量。公式中可以看出,權重只和畫素之間的空間距離有關係,無論影象的內容是什麼,都有相同的濾波效果。再來看看雙邊濾波器,它只是在原有高斯函式的基礎上加...