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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Feature Engineering 特征工程 3. Feature Generation

發布時間:2024/7/5 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Feature Engineering 特征工程 3. Feature Generation 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1. 組合特征
    • 2. 過去7天的數據
    • 3. 上一個相同類型的項目的時間
    • 4. 轉換數值特征

learn from https://www.kaggle.com/learn/feature-engineering

上一篇:Feature Engineering 特征工程 2. Categorical Encodings
下一篇:Feature Engineering 特征工程 4. Feature Selection


從原始數據創建新特征是改進模型的最佳方法之一
例如,數據有很長連續時間的,我們可以把最近一周的提取出來作為一個新的特征

1. 組合特征

最簡單方法之一是組合特征
例如,如果一條記錄的國家/地區為"CA",類別為"Music",則可以創建一個新值" CA_Music"
可以從所有分類特征中構建組合特征,也可以使用三個或更多特征進行交互,但是效果往往會變壞

  • interactions = ks['category']+'_'+ks['country'],像python一樣直接相加
  • interactions.head(10)
0 Poetry_GB 1 Narrative Film_US 2 Narrative Film_US 3 Music_US 4 Film & Video_US 5 Restaurants_US 6 Food_US 7 Drinks_US 8 Product Design_US 9 Documentary_US dtype: object
  • 將新特征assign進數據
label_enc = LabelEncoder() data_interaction = X.assign(category_country=label_enc.fit_transform(interactions)) data_interaction.head()

2. 過去7天的數據

launched = pd.Series(ks.index, index=ks.launched, name="count_7_days").sort_index() # 數據值為索引, 新的索引為建立的時間,新特征名稱, 按索引(時間)排序 launched.head(20) launched 1970-01-01 01:00:00 94579 1970-01-01 01:00:00 319002 1970-01-01 01:00:00 247913 1970-01-01 01:00:00 48147 1970-01-01 01:00:00 75397 1970-01-01 01:00:00 2842 1970-01-01 01:00:00 273779 2009-04-21 21:02:48 169268 2009-04-23 00:07:53 322000 2009-04-24 21:52:03 138572 2009-04-25 17:36:21 325391 2009-04-27 14:10:39 122662 2009-04-28 13:55:41 213711 2009-04-29 02:04:21 345606 2009-04-29 02:58:50 235255 2009-04-29 04:37:37 98954 2009-04-29 05:26:32 342226 2009-04-29 06:43:44 275091 2009-04-29 13:52:03 284115 2009-04-29 22:08:13 32898 Name: count_7_days, dtype: int64

發現最頂上的7個數據是錯誤的(時間一樣),本節里暫時不去考慮

  • .rolling('7d'),設置一個窗口
count_7_days = launched.rolling('7d').count()-1 # -1表示不包含當前日期 print(count_7_days.head(20)) launched 1970-01-01 01:00:00 0.0 1970-01-01 01:00:00 1.0 1970-01-01 01:00:00 2.0 1970-01-01 01:00:00 3.0 1970-01-01 01:00:00 4.0 1970-01-01 01:00:00 5.0 1970-01-01 01:00:00 6.0 2009-04-21 21:02:48 0.0 2009-04-23 00:07:53 1.0 2009-04-24 21:52:03 2.0 2009-04-25 17:36:21 3.0 2009-04-27 14:10:39 4.0 2009-04-28 13:55:41 5.0 2009-04-29 02:04:21 5.0 2009-04-29 02:58:50 6.0 2009-04-29 04:37:37 7.0 2009-04-29 05:26:32 8.0 2009-04-29 06:43:44 9.0 2009-04-29 13:52:03 10.0 2009-04-29 22:08:13 11.0 Name: count_7_days, dtype: float64 %matplotlib inline import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = 'SimHei' plt.plot(count_7_days[7:]); plt.title("最近7天的數據") plt.show()

  • 把新特征數據,reindex后,跟原數據合并
count_7_days.index = launched.values count_7_days = count_7_days.reindex(ks.index) count_7_days.head(10) 0 1487.0 1 2020.0 2 279.0 3 984.0 4 752.0 5 522.0 6 708.0 7 1566.0 8 1048.0 9 975.0 Name: count_7_days, dtype: float64
  • X.join(count_7_days).head(10),join合并

3. 上一個相同類型的項目的時間

比如,電影之類的上映,如果同類型的扎堆了,可能被對手搶占了份額

def time_since_last_project(series):return series.diff().dt.total_seconds()/3600 df = ks[['category','launched']].sort_values('launched') # 按時間排序 timedeltas = df.groupby('category').transform(time_since_last_project) # 按分類分組,然后調用函數進行轉換,算得上一個同類的時間跟自己的間隔是多少小時 timedeltas.head(20)

  • NaN 表示該類型是第一次出現,填上均值或者中位數
  • 然后跟其他數據合并之前需要把index調整成一致
timedeltas = timedeltas.fillna(timedeltas.median()).reindex(X.index) timedeltas.head(20)

4. 轉換數值特征

Transforming numerical features,一些模型在數據分布是正態分布的時候,工作的很好,所以可以對數據進行開方、取對數轉換

plt.hist(ks.goal, range=(0, 100000), bins=50); plt.title('Goal');

plt.hist(np.sqrt(ks.goal), range=(0, 400), bins=50); plt.title('Sqrt(Goal)');

plt.hist(np.log(ks.goal), range=(0, 25), bins=50); plt.title('Log(Goal)');

  • log 轉換對基于樹的模型沒有什么用,但是對線性模型或者神經網絡有用
  • 我們需要轉成新的特征,然后做一些測試,選擇效果最好的轉換方法。

上一篇:Feature Engineering 特征工程 2. Categorical Encodings
下一篇:Feature Engineering 特征工程 4. Feature Selection

總結

以上是生活随笔為你收集整理的Feature Engineering 特征工程 3. Feature Generation的全部內容,希望文章能夠幫你解決所遇到的問題。

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