日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【数据竞赛】这篇文章送给想要学习特征交叉的朋友。

發布時間:2025/3/12 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【数据竞赛】这篇文章送给想要学习特征交叉的朋友。 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者:塵沙杰少、櫻落、新峰、DOTA、謝嘉嘉

特征工程--三階組合特征!

前 言

大家好,我是阿杰,今天我和小伙伴們又繼續更新我們的Kaggle競賽小冊的特征工程系列,本文是三階組合特征的一部分,在數據競賽中,一般特征構建到三階就差不多了,所以我們后續的小測將側重于三階的特征組合。

在前面的篇章中,我們介紹了單階特征和二階特征的組合方式,在實踐中90%的特征的一階二階組合特征都可以通過之前介紹的方式得到,本章我們介紹三階組合特征的構建方式。在數據競賽中,一般特征做到三階就差的不是很多了,其余的我們也就不再進行過多的介紹。和在介紹二階組合特征的時候一樣,此處我們還是以枚舉的方式介紹三階特征的組合。

無序類別特征(A)+無序類別特征(B) + 無序類別特征 (C)

01


ABC拼接成單一類別特征

將三個類別特征組合成一個類別特征,然后就轉變為單個類別特征的特征工程。

df['ABC']?=?df['A'].astype(str)?+?'_'+??df['B'].astype(str)?+?'_'+??df['C'].astype(str)?

02


轉化為1+2的形式

1+2中的1指的是A或者B或者C,2指的是BC,AB,AC,1+2共有下面幾種情況,

  • A+BC

  • B+AC

  • C+AB

此處2+1的類別特征指的是,將AB或者AC或者BC進行組合得到一個新的類別特征,然后將剩下的一個作為另外一個類別特征。這樣我們的問題就轉變為兩個類別特征的組合,可以直接套用之前類別特征+類別特征的形式。

03


轉化為2+2的形式

2+2中的第一個2指的是AB或者AC或者BC,第二個2和第一個2類似,但

  • AB+AC

  • AB+BC

該類的組合特征一般會出現在其中兩個類別變量是非常相關的時候,例如A表示用戶ID,B表示商店,C表示商品,這個時候AB表示用戶和商店的關系,AC表示用戶和商品的關系,那AC出現的次數除以AB出現的次數就表示用戶購買某個商品的次數在某家店鋪中的分布情況。

df['AB_cnt']?=?df.groupby('AB')['C'].transform('count') df['AC_cnt']?=?df.groupby('AC')['B'].transform('count') df['AB_AC_cntpct']?=?df['AB_cnt']?/?df['AC_cnt']

04


轉化為1+3的形式

1+3中的1指的是A或者B或者C,3指的是ABC拼接之后得到的類別特征,1+3共有下面幾種情況,

  • A+ABC

  • B+ABC

  • C+ABC

這是很常見的一類特征,例如A表示用戶,B表示商店,C表示商品,那么ABC出現的次數與A出現次數的占比就是用戶對每個店鋪商品的購買的分布信息。

df['A_cnt']????????=?df.groupby('A')['C'].transform('count') df['ABC_cnt']??????=?df.groupby('ABC')['B'].transform('count') df['ABC_A_cntpct']?=?df['ABC_cnt']?/?df['A_cnt']

05


轉化為2+3的形式

2+3中的2指的是將其中的任意兩個類別特征進行組合得到一個類別特征,3指的是ABC拼接之后得到的類別特征,于是我們有

  • AB+ABC

  • AC+ABC

  • BC+ABC

該類特征較為常見的情況是,A表示商店,B表示品牌,C表示商品,于是ABC出現次數占AB出現次數的百分比就是商店中某個品牌的某件商品占據該商品品牌的百分比。相似的還有A表示用戶,B表示商店,C表示商品等,該類組合的特征往往需要有一定的物理可解釋性,否則可能會沒有任何意義。

df['AB_cnt']?=?df.groupby('AB')['C'].transform('count') df['ABC_cnt']?=?df.groupby('ABC')['C'].transform('count') df['AB_ABC_cntpct']?=?df['AB_cnt']?/?df['ABC_cnt']

06


ABC熱門交互信息

ABC的流行度特征就是A的出現次數,B的出現次數以及C的出現次數的乘積。該特征和ABC共同出現的次數是互補的,例如A表示用戶ID,B表示品牌ID,C表示商品ID,則,

  • ABC的出現次數表示的是某用戶和某品牌的某商品的交互次數,該值越大可能表明用戶對該品牌的某商品比較鐘愛程度;

但是A的出現次數B的出現次數C的出現次數,該值越大,則表示某活躍的用戶(A出現次數多)對某流行品牌(該品牌出現次數多)的某個流行商品(該商品出現次數多)的一次交互。

df['ABC_cnt2']?=?df['A_cnt']?*??df['B_cnt']?*??df['C_cnt']?

07


ABC的統計矩陣特征

先統計A和B關于C的統計特征,然后展開得到每個A在每個B下C的統計信息,例如:

  • Nunique特征;

  • Count/Nunique特征;

##?ABC的Nunique特征展開案例 import?pandas?as?pd df?=?pd.DataFrame({"A":?["foo",?"foo",?"foo",?"foo",?"foo","bar",?"bar",?"bar",?"bar"],"B":?["one",?"one",?"one",?"two",?"two","one",?"one",?"two",?"two"],"C":?["small",?"large",?"large",?"small","small",?"large",?"small",?"small","large"],"D":?[1,?2,?2,?3,?3,?4,?5,?6,?7],"E":?[2,?4,?5,?5,?6,?6,?8,?9,?9]}) df_tmp?=?df.groupby(['A','B'])['C'].nunique().reset_index() df_tmp.columns?=?['A','B','AB_nunique'] table?=?pd.pivot_table(df_tmp,?values='AB_nunique',?index=['A'],columns=['B'])?#.rename_axis(None,?axis=1)

希望本文對新手能帶來啟發和幫助。

往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯溫州大學《機器學習課程》視頻 本站qq群851320808,加入微信群請掃碼:

總結

以上是生活随笔為你收集整理的【数据竞赛】这篇文章送给想要学习特征交叉的朋友。的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。