WOE轉(zhuǎn)化/主成分分析/字符串匹配

Python分析建模簿煌,日常問題整理(六)


2018.08.27~2018.09.2


  • 1 將原始數(shù)據(jù)直接進行woe轉(zhuǎn)化报咳。
def lst_ix(ls,a):
    for i in range(0,len(ls)):
        if a==-99999:
            r = -99999
            break
        if a==-999999:
            r = -999999
            break
        if a==9999:
            r = 9999
            break
        if a<=ls[i]:
            r = i
            break
        else:
            r = np.nan
    return r
def woe_trans(dat,numeric,category,woe_dict):
    dat_copy = copy.deepcopy(dat)
    for i in numeric+category:
        if i in numeric and i in woe_dict.keys():
            tem = dat[i].astype(float)
            dic = woe_dict[i]
            cut_ = [i[0] for i in dic['cover']] 
            dat_copy[i] = [dic['cover'][k][1] if k!=-99999 and k!=-999999 and k!=9999 and pd.isnull(k)==0
                           else dic['-99999'] if k==-99999 and '-99999' in dic.keys()
                           else dic['-999999'] if k==-999999 and '-999999' in dic.keys()
                           else dic['9999'] if k==9999 and '9999' in dic.keys() else 0
                           for  k in [lst_ix(cut_,x) for x in tem]]
        if i in category and i in woe_dict.keys():
            dat_copy[i] =[woe_dict[i]['cover'][x]  if x in woe_dict[i]['cover'].keys()
                                   else 0 for x in dat[i] ]
    return dat_copy
  • 2 主成分線性預(yù)測
    scikit-learn中fit_transform()與transform()區(qū)別。
  1. 二者的功能都是對數(shù)據(jù)進行某種統(tǒng)一處理(比如標(biāo)準(zhǔn)化~N(0,1),將數(shù)據(jù)縮放(映射)到某個固定區(qū)間变屁,歸一化,正則化等)
  2. fit_transform(partData)對部分數(shù)據(jù)先擬合fit意狠,找到該part的整體指標(biāo)粟关,如均值、方差环戈、最大值最小值等等(根據(jù)具體轉(zhuǎn)換的目的)闷板,然后對該partData進行轉(zhuǎn)換transform澎灸,從而實現(xiàn)數(shù)據(jù)的標(biāo)準(zhǔn)化、歸一化等等遮晚。性昭。
  3. 根據(jù)對之前部分fit的整體指標(biāo),對剩余的數(shù)據(jù)(restData)使用同樣的均值县遣、方差巩梢、最大最小值等指標(biāo)進行轉(zhuǎn)換transform(restData),從而保證part艺玲、rest處理方式相同括蝠。
  4. 必須先用fit_transform(partData),之后再transform(restData)
    如果直接transform(partData)饭聚,程序會報錯
  5. 如果fit_transfrom(partData)后忌警,使用fit_transform(restData)而不用transform(restData),雖然也能歸一化秒梳,但是兩個結(jié)果不是在同一個“標(biāo)準(zhǔn)”下的法绵,具有明顯差異。

參考于 ↓
scikit-learn數(shù)據(jù)預(yù)處理fit_transform()與transform()的區(qū)別
因此酪碘,對于PCA降維朋譬,要將擬合的pca相關(guān)參數(shù)保存下來,用于訓(xùn)練樣本之外的數(shù)據(jù)時直接運算轉(zhuǎn)化兴垦。

pca = PCA(n_components=n, whiten=False)
pca.fit_transform(train)
joblib.dump(pca, "pca.m")
# 每次擬合都保存為模型文件
print(pca.explained_variance_ratio_) 
# 輸出方差貢獻度

pca = joblib.load("pca.m")
# 導(dǎo)入pca模型文件
pd_pca = pd.DataFrame(pca.transform(test))
# 預(yù)測樣本外
  • 3 agg函數(shù)可以對一列進行各種函數(shù)的運算并同時命名
    問題
a = pd.Series([2,3,3])
from scipy.stats import mode
def MODE_1(x):
    return mode(a,axis=0)[0][0]
def MODE_2(x):
    return x.mode()[0]
a.agg({'cc':np.average}) ## 返回的是Series
a.agg({'cc':average}) ## 返回的是Series
a.agg({'dd':np.mean}) ## 返回的是數(shù)值
a.agg({'ee':MODE_1}) ## 返回的是Series
a.agg({'ff':MODE_2}) ## 返回的是數(shù)值

為什么np.average單獨使用時返回數(shù)值徙赢,用在agg時返回列表呢?
未解決探越,有多種實現(xiàn)方式狡赐,選擇可以實現(xiàn)的那種就可以了。

  • 4 re使用

1)條件提取中間的字符串

string = 'abe(ac)ad)'
p1 = re.compile(r'[(](.*?)[)]', re.S)  #最小匹配
p2 = re.compile(r'[(](.*)[)]', re.S)   #貪婪匹配钦幔,最大匹配
p3 = re.compile(r'abe\((.*?)\)ad', re.S)   #取abe和ad)中間的所有字符串
print(re.findall(p1, string))
print(re.findall(p2, string))
print(re.findall(p3, string))
# 或者
print(re.findall(r'[(](.*?)[)]', string))
print(re.findall(r'[(](.*)[)]', string))
print(re.findall(r'abe\((.*?)\)ad',string))

2)字符串中是否包含某個字符串

"2" in "2.*34234;"
字符串中是否包含"2"
not re.search(r'[^-\d]','11-23-23-44')
字符串中除了- 數(shù)字 為空時枕屉,not result 輸出true 。意思是只提取包含了-和數(shù)字的字符串鲤氢。
re.search(r'你|世界|小','你好大世界')
字符串中是否包含搀擂,你或者好或者世界,輸出true 或者false卷玉。提取包含你 或者 世界

3)將相應(yīng)的字符串替換為某個值

import re
r='[’!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~]+'
line=re.sub(r,'',"python’s")
## 刪除標(biāo)點符號
line=re.sub('\D','',"2.*34234;")
# 刪除所有數(shù)字的字符串
line=re.sub('\d+','',"2.*34234;")
# 刪除所有數(shù)字的字符串
line=re.sub('\.','',"2.*34234;")
# 刪除 . 字符串
line=re.sub('\.|\*|\;','',"2.*34234;")
# 刪除 . 或者 * 或者 哨颂; 字符串
# \為轉(zhuǎn)義符號,將標(biāo)點符號轉(zhuǎn)化為文本

4)返回某個字符首次出現(xiàn)的位置
[a.start() for a in re.finditer('1','fjk1233')]

  • 5 dataframe提取某些列為新數(shù)據(jù)的時候揍庄,一定要用df.loc[raw_index,col_index]咆蒿,否則會發(fā)生warning。
    df.loc才有copy作用,對新數(shù)據(jù)進行處理不會改變原始變量沃测。
    df[columns]起到指針作用(大概是這個意思)缭黔,對新數(shù)據(jù)進行處理時會改變原始變量。

  • 6 典型相關(guān)分析 CCA
    多元統(tǒng)計分析的一種方法

  • 7 cross_validation 結(jié)果的score是什么:精確度蒂破。

  • 8 新的交互式可視化框架:Dash
    Dash和pyecharts的區(qū)別:dash是一個編程框架馏谨,可能因為dash是在線調(diào)用的外網(wǎng)api,所以用起來體驗不是很好附迷,比較慢惧互。ECharts來自百度EFE數(shù)據(jù)可視化團隊,調(diào)用起來很方便喇伯,使用起來順暢喊儡,頁面也很好看。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末稻据,一起剝皮案震驚了整個濱河市艾猜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌捻悯,老刑警劉巖匆赃,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異今缚,居然都是意外死亡算柳,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進店門姓言,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瞬项,“玉大人,你說我怎么就攤上這事事期±暮荆” “怎么了纸颜?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵兽泣,是天一觀的道長。 經(jīng)常有香客問我胁孙,道長唠倦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任涮较,我火速辦了婚禮稠鼻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘狂票。我一直安慰自己候齿,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著慌盯,像睡著了一般周霉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上亚皂,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天俱箱,我揣著相機與錄音,去河邊找鬼灭必。 笑死狞谱,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的禁漓。 我是一名探鬼主播跟衅,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼播歼!你這毒婦竟也來了与斤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤荚恶,失蹤者是張志新(化名)和其女友劉穎撩穿,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谒撼,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡食寡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了廓潜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抵皱。...
    茶點故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖辩蛋,靈堂內(nèi)的尸體忽然破棺而出呻畸,到底是詐尸還是另有隱情,我是刑警寧澤悼院,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布伤为,位于F島的核電站,受9級特大地震影響据途,放射性物質(zhì)發(fā)生泄漏绞愚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一颖医、第九天 我趴在偏房一處隱蔽的房頂上張望位衩。 院中可真熱鬧,春花似錦熔萧、人聲如沸糖驴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贮缕。三九已至久妆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間跷睦,已是汗流浹背筷弦。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留抑诸,地道東北人烂琴。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像蜕乡,于是被迫代替她去往敵國和親奸绷。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,500評論 2 359

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

  • 1.列表 1.1 認識list(列表) 格式:[元素1层玲,元素2号醉,元素3]定義列表是python中的容器類型。有序的...
    不忘初心_c590閱讀 180評論 0 1
  • list 1.列表是Python中的容器類型辛块。有序的畔派,可變的容器(可變指的是列表中的元素和元素的位置。個數(shù)可變)润绵。...
    xaidc閱讀 131評論 0 0
  • 卻到了中午线椰。一個多月來少有的風(fēng)和日麗的周末。適合外出尘盼。想約幾個朋友一同聊聊心事和感情憨愉。
    一個名叫Alan的男子閱讀 160評論 0 0
  • 《七周七語言》書中用了七個電影角色來類比七個語言。 Ruby卿捎,《歡樂滿人間》的仙女保姆Io配紫,《春天不是讀書天》的追...
    chenge微博談閱讀 534評論 0 4
  • 我總在想命運這種東西 是冥冥注定的 是突發(fā)性還是偶然性的 來的遲或早 是我先來還是他(她)后到 遇見對的還是錯過了...
    應(yīng)叴閱讀 307評論 2 2