無標題文章

## 關于ExtraSensory 數(shù)據(jù)集的分析過程

> 在這一周的學習當中著蟹,我進行對UCSD的傳感器數(shù)據(jù)集進行了分析和學習结榄,我對我學習和嘗試的過程中贝,進行復盤

我們首先先從需要解決的問題入手:?

- 我們需要對數(shù)據(jù)進行了解和清洗?

- 清洗完成后我們需要對其做一個分類的問題

## 觀察數(shù)據(jù)

根據(jù)官網(wǎng)的描述,我們得知如下:

ExtraSensory 數(shù)據(jù)集由 UCSD 下 Yonatan Vaizman 和 Katherine Ellis 收集臼朗, 由手機 APP --the

ExtraSensory App進行收集邻寿,收集的信息為手機各類傳感器的數(shù)據(jù)和此時的人體狀態(tài)等一些數(shù)據(jù)。

該數(shù)據(jù)集有 60個'csv.gz'文件视哑,文件的命名格式為[UUID].features_label.csv.gz绣否。 UUID為每個用戶獨有的 ID, 使用 gzip 進行壓縮挡毅。

我們打開其中一個UUID為 1155FF54-63D3-4AB2-9863-8385D0BD0A13 的單個數(shù)據(jù)集

進行分析


部分截圖

我們對其進行具體的觀察蒜撮,我們得知在該數(shù)據(jù)集中以timestamp作為主鍵進行排序,擁有221個feature慷嗜,和51個label淀弹,和一個sourelabel(此不作為label進行學習)

我當時第一個想法是將csv文件讀入后,將timestamp庆械、feature、label三部分進行劃分菌赖,單獨取出來?

```

# parse_header_of_csv函數(shù)將feature和label進行區(qū)分歸類

# parse_body_of_csv函數(shù)將feature和label的具體數(shù)據(jù)進行分割存儲

# read_user_data函數(shù)將csv文件讀入

def parse_header_of_csv(csv_str):

? ? headline = csv_str[:csv_str.index('\n')]

? ? column = headline.split(",")


? ? # 進行assert測試

? ? assert column[0] == 'timestamp'

? ? assert column[-1] == 'label_source'


? ? # 找到label開始的位置

? ? for (ci,col) in enumerate(column):

? ? ? ? if col.startswith("label:"):

? ? ? ? ? ? first_start_lind = ci

? ? ? ? ? ? break

? ? ? ? pass


? ? feature_names = column[1:first_start_lind]

? ? label_names = column[first_start_lind:-1]


? ? ##去除多余無效的字符

? ? for (li,label) in enumerate(label_names):

? ? ? ? # assert

? ? ? ? assert label.startswith("label:")

? ? ? ? label_names[li] = label.replace('label:',"")

? ? ? ? pass


? ? return (feature_names, label_names)

def parse_body_of_csv(csv_str,n_feature):

? ? full_body = np.loadtxt(StringIO(csv_str),delimiter=',',skiprows=1)


? ? # 數(shù)據(jù)的主鍵為timestamp

? ? timestamps = full_body[:,0].astype(int)

? ? # 將特征和標簽分開,前面的是特征即傳感器

? ? X = full_body[:,1:(n_feature+1)]


? ? #分離出所有l(wèi)abel數(shù)據(jù)

? ? trinary_labels_mat = full_body[:,(n_feature+1):-1]

? ? M = np.isnan(trinary_labels_mat)# 將其進行判斷有哪些是nan值

? ? Y = np.where(M,0,trinary_labels_mat)>0.## 進行判斷哪里有Nan值則將其轉化為0缭乘,則保留原來的數(shù)值

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ##并將其轉化為布爾值

? ? return (X,Y,M,timestamps)

# 輸出feature數(shù)據(jù)矩陣X,label數(shù)據(jù)矩陣Y琉用,label的缺失數(shù)據(jù)分布矩陣M堕绩,feature_names,label_names? ?

def read_user_data(uiud):

? ? user_data_file = '%s.features_labels.csv.gz'%uuid


? ? with gzip.open(user_data_file,'r') as fid:

? ? ? ? csv_str = fid.read()

? ? ? ? csv_str = csv_str.decode(encoding = 'utf-8')

? ? ? ? pass


? ? (feature_names,label_names) = parse_header_of_csv(csv_str)

? ? n_feature = len(feature_names)

? ? (X,Y,M,timestamps) = parse_body_of_csv(csv_str, n_feature)


? ? return (X,Y,M,timestamps,feature_names,label_names)

```

在這段代碼中,主要有三個函數(shù)?

def read_user_data(uiud)讀入用戶數(shù)據(jù)邑时,并且其中將讀取數(shù)據(jù)的過程再次抽離出兩個函數(shù)進行抽象奴紧。分別是:parse_header_of_csv()、 parse_body_of_csv().

> 值得注意的是在這里晶丘,我們使用的Python黍氮,Python在IO輸入的時候和Python2有所不同,我們進行讀取之后需要對其進行decode()操作浅浮,encoding為utf-8

parse_header_of_csv(csv_str)函數(shù):由于我們直接將csv文件整個進行輸入沫浆,所以我們直接將其作為一個大的str進行分析,我們通過判斷\n的位置滚秩,進行對heading(column)的截取专执。為了更為嚴謹,我們在其中插入了assert函數(shù)進行判斷郁油,截取之后再使用enumerate對column進行從新標號本股,判斷l(xiāng)abel開始的位置攀痊,得到位置之后在依舊使用enumrate對其進行分析,對label標簽進行處理拄显,return (feature_names, label_names)

parse_body_of_csv(csv_str,n_feature)函數(shù):我們使用使用numpy中的loadtxt進行讀取蚕苇,以StringIo進行讀取,在將feature和label進行分割凿叠。


```?

? ? #分離出所有l(wèi)abel數(shù)據(jù)

? ? trinary_labels_mat = full_body[:,(n_feature+1):-1]

? ? M = np.isnan(trinary_labels_mat)# 將其進行判斷有哪些是nan值

? ? Y = np.where(M,0,trinary_labels_mat)>0.

? ? ##進行判斷哪里有Nan值則將其轉化為0涩笤,則保留原來的數(shù)值

? ? ##并將其轉化為布爾值

```

由上我們得到狀態(tài)存在矩陣M,同時使用where函數(shù)對其進行從新置換。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末盒件,一起剝皮案震驚了整個濱河市蹬碧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌炒刁,老刑警劉巖恩沽,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異翔始,居然都是意外死亡罗心,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進店門城瞎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來渤闷,“玉大人,你說我怎么就攤上這事脖镀§” “怎么了?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵蜒灰,是天一觀的道長弦蹂。 經(jīng)常有香客問我,道長强窖,這世上最難降的妖魔是什么凸椿? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮翅溺,結果婚禮上脑漫,老公的妹妹穿的比我還像新娘。我一直安慰自己未巫,他們只是感情好窿撬,可當我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著叙凡,像睡著了一般劈伴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天跛璧,我揣著相機與錄音严里,去河邊找鬼。 笑死追城,一個胖子當著我的面吹牛刹碾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播座柱,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼迷帜,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了色洞?” 一聲冷哼從身側響起戏锹,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎火诸,沒想到半個月后锦针,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡置蜀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年奈搜,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盯荤。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡馋吗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出廷雅,到底是詐尸還是另有隱情耗美,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布航缀,位于F島的核電站,受9級特大地震影響堰怨,放射性物質發(fā)生泄漏芥玉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一备图、第九天 我趴在偏房一處隱蔽的房頂上張望灿巧。 院中可真熱鬧,春花似錦揽涮、人聲如沸抠藕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽盾似。三九已至,卻和暖如春雪标,著一層夾襖步出監(jiān)牢的瞬間零院,已是汗流浹背溉跃。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留告抄,地道東北人撰茎。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像打洼,于是被迫代替她去往敵國和親龄糊。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容