樣本 特徵工程 樣本與特徵製作

2021-10-10 18:01:04 字數 1732 閱讀 3030

對樣本、特徵的管理,在真實場景中尤其重要。對於生產出來的一條資料,首先對其進行正負類別判斷,轉化成了樣本。樣本裡面的原始字段需要清洗、整合,才能得到特徵。

樣本表結構

生產時間,使用者id,文件id,類別

特徵表結構(使用者側特徵和文件側特徵混合存在一張表裡頭):

生產時間,使用者id,使用者側特徵名,特徵具體內容

生產時間,文件id,文件側特徵名,特徵具體內容

拼接方案(確定每條樣本由哪些特徵組成,涉及到具體拼接):

# log_df: ftime, user_id, doc_id, label

# feature_df: ftime, owner, feature_name, feature_content

#需要使用到的特徵

feature_list = [...]

#使用者側特徵擴充套件

user_df = log_df.join(feature_df, (log_df["ftime"]==feature_df["ftime"])

& (log_df["user_id"]==feature_df["owner"]))

user_df = user_df.filter(user_df["feature_name"] in feature_list)

#文字側特徵擴充套件

doc_df = log_df.join(feature_df, (log_df["ftime"]==feature_df["ftime"])

& (log_df["doc_id"]==feature_df["owner"]))

doc_df = doc_df.filter(doc_df["feature_name"].isin(feature_list)==true)

#使用者特徵與文字特徵匯合

sample_df = user_df.join(doc_df, (user_df["user_id"]==doc_df["user_id"])

&(user_df["doc_id"]==doc_df["doc_id"])

&(user_df["ftime"] == doc_df["ftime"]))

sample_df = sample_df.withcolumn("concat_feature",

concat_ws("##", sample_df["feature_name"], sample_df["feature_content"]))

sample_df = sample_df.groupby("ftime", "user_id","doc_id", "label").

agg(collect_list('concat_feature').alias("feature_list")) #此時sample_df只有"ftime", "user_id","doc_id", "label"和"feature_list"

#特徵按順序排列好

def arrange_feature_func(feature_list):

pass

arrange_feature_udf = udf(arrange_feature_func, stringtype())

sample_df = sample_df.withcolumn("whole_feature",

arrange_feature_udf(sample_df["feature_list"]))

特徵就是樣本

平時的工作就是提特徵進行模式識別,在看到pca時,有點不明白,就是求特徵空間的方法沒有看明白,後來查相關資料才弄明白,原來特徵就是樣本,這樣模式識別就與概率統計學連線起來了。提取特徵時,一般會把乙個特徵reshape為向量,然後並列排在一起放在矩陣中,這時候,每列是乙個樣本,而每行就是一維,行數就是...

Wannacry樣本取證特徵與清除

母體檔案 mssecsvc.exe c windows tasksche.exe c windows qeriuwjhrfcpu佔用率100 windows xp sp3 kb4012598 windows xp x64 sp2 kb4012598 windows 2003 sp2 kb401259...

樣本打散後計算單特徵 NDCG

能計算模型的 ndcg,也就能計算單特徵的 ndcg,用於評估單特徵的有效性,跟 group auc 用途一樣 如果是 auc,越大於或小於 0.5,特徵越有效,但 ndcg 沒有這個特點,ndcg 都是正的,而且,樣本正負比例不同,ndcg 的值也不同,變化很大。那麼在同樣的樣本下,就需要有個基準...