數(shù)據(jù)處理II:數(shù)據(jù)轉(zhuǎn)換

下列數(shù)據(jù)來源Kaggle的Titanic題目

特征分類

  • 定量特征:如年齡、票價等有數(shù)量關(guān)系的特征鞠苟,可二值化函數(shù)變換
  • 定性特征:如性別当娱、幾等艙等沒有數(shù)量意義的特征,可啞編碼函數(shù)變換

??定量特征 與 定性特征 需要分開處理


二值化 Binarizer

定量特征二值化的核心在于設(shè)定一個閾值态秧,大于閾值的賦值為1,小于等于閾值的賦值為0

from sklearn.preprocessing import Binarizer
binarizer = Binarizer(threshold=18, copy=True)
data['Adult'] = binarizer.fit_transform(data['Age'])

# 等同
data['Adult'] = (data['Age'] > 18).astype(int)

啞編碼 OneHotEncoder

??數(shù)據(jù)集中有很多變量類型是Nominal的愤诱,對于某些算法而言淫半,完全的Nominal類型的變量是無法計算的,這就需要進行啞編碼昏滴。

??啞編碼是一種狀態(tài)編碼对人,可將定性特征轉(zhuǎn)為數(shù)字牺弄,但這些數(shù)字沒有大小關(guān)系。該特征有N類就有N位蛇捌,某位對應一類咱台,是該類標則該位標1回溺,其余位標0混萝,如:001譬圣,010雄坪,100维哈,最終形成稀疏矩陣。

from sklearn.preprocessing import OneHotEncoder

# 幾等艙Pclass(1等艙, 2等艙, 3等艙)
data['Pclass'] = OneHotEncoder().fit_transform(data['Pclass'].reshape(-1 ,1))

# 輸出
print data['Pclass'].toarray()

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

??這里遇到一個問題:OneHotEncoder編碼Embarked會報錯ValueError: could not convert string to float: Q飘庄,暫時未找到解決方法跪削,若要好的解決方法請留言迂求,謝謝。

重建定性特征 pandas.get_dummies

  • 定性特征只有毫玖,因此也可拆分為多個二值化特征:
dummies_pclass = pd.get_dummies(data['Pclass'], prefix='Pclass')

print dummies_pclass.head(2)
|Pclass_1   |Pclass_2   |Pclass_3   |
|   0.0     |   0.0     |   1.0     |
|   1.0     |   0.0     |   0.0     |
  • 若像性別一樣付枫,只有兩種類別阐滩,且非此即彼县忌,則可:
data.loc[data.Sex == 'female', 'Sex'] = 1
data.loc[data.Sex == 'male', 'Sex'] = 0

print data.Sex.head(2)
|  Sex  |
|   0   |
|   1   |
  • 對于缺失的特征,重建特征后每個標簽值都為0:
# Embarked 登船港口有兩條數(shù)據(jù)為null衅疙,重建特征后每個標簽值為0
dummies_embarked = pd.get_dummies(data['Embarked'], prefix='Embarked')

print dummies_embarked.loc[61] #其中Embarked為nan的數(shù)據(jù)
|Embarked_C |Embarked_Q |Embarked_S |
|   0.0     |   0.0     |   0.0     |

構(gòu)造非線性特征

原因:線性模型就是把特征對分類結(jié)果的作用加起來(例如:Y = T1 + T2)饱溢,但線性模型無法表示一些非線性的關(guān)系(如:Y = T1 * T2)绩郎,所以我們打算人工構(gòu)造一些新特征,彌補線性模型對非線性表達式表達能力的不足溉仑。

特征的非線性的表達式可以分兩種:

  • 表達“數(shù)值特征”本身的非線性因素浊竟。
#方式一:將原有數(shù)值的高次方作為特征振定,x^y或lnx
df['Age*Age_scaled'] = scaler.fit_transform(data['Age'] * data['Age'])

#方式二:數(shù)據(jù)離散化(將連續(xù)的數(shù)值劃分為區(qū)間)
df['Child'] = (data['Age'] <= 18).astype(int)
  • 表達特征與特征之間存在的非線性關(guān)聯(lián),并且這種關(guān)聯(lián)關(guān)系對分類結(jié)果有幫助后频。
#設(shè)想頭等艙的人能受到更好的保護待遇卑惜,同時年齡越小的越優(yōu)先被救助露久,所以這兩個特征是否有一些關(guān)聯(lián)
df['Age*Pclass_scaled'] = scaler.fit_transform(data['Age'] * data['Pclass'])

特征合并、刪除、篩選

df = pd.concat([df, dummies_embarked, dummies_sex, dummies_pclass, dummies_cabin], axis=1) #axis=0(index),1(columns)

df.drop(['Pclass','Name','Sex', 'Ticket','Cabin','Embarked','Fare', 'Age'], axis=1, inplace=True)

df = df.filter(regex='Survived|Age_.*|SibSp|Parch|Child|Cabin_.*|Embarked_.*|Sex_.*|Pclass_.*')

np_array = df.as_matrix() #將DataFrame轉(zhuǎn)為Numpy-array

pandas.concat

pandas.DataFrame.drop

pandas.DataFrame.filter

pandas.DataFrame.as_matrix

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末纸巷,一起剝皮案震驚了整個濱河市瘤旨,隨后出現(xiàn)的幾起案子竖伯,更是在濱河造成了極大的恐慌,老刑警劉巖祟偷,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件修肠,死亡現(xiàn)場離奇詭異户盯,居然都是意外死亡饲化,警方通過查閱死者的電腦和手機吃靠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門巢块,熙熙樓的掌柜王于貴愁眉苦臉地迎上來缸浦,“玉大人,你說我怎么就攤上這事歹鱼∶忠觯” “怎么了掺涛?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長秧廉。 經(jīng)常有香客問我疼电,道長减拭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任修陡,我火速辦了婚禮魄鸦,結(jié)果婚禮上号杏,老公的妹妹穿的比我還像新娘。我一直安慰自己盾致,他們只是感情好,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著护赊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪骏啰。 梳的紋絲不亂的頭發(fā)上判耕,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天壁熄,我揣著相機與錄音,去河邊找鬼草丧。 笑死,一個胖子當著我的面吹牛烛亦,可吹牛的內(nèi)容都是我干的懂拾。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼呜师,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了衷畦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤斤程,失蹤者是張志新(化名)和其女友劉穎忿墅,沒想到半個月后疚脐,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡望薄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年痕支,在試婚紗的時候發(fā)現(xiàn)自己被綠了卧须。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瞬痘。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡察绷,死狀恐怖津辩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情喘沿,我是刑警寧澤蚜印,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站哟冬,受9級特大地震影響浩峡,放射性物質(zhì)發(fā)生泄漏错敢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望纸淮。 院中可真熱鬧平斩,春花似錦、人聲如沸咽块。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽糜芳。三九已至飒货,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間峭竣,已是汗流浹背塘辅。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留皆撩,地道東北人扣墩。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像扛吞,于是被迫代替她去往敵國和親呻惕。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

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