簡體   English   中英

將數字特征轉換為分類特征

[英]Converting numeric feature into categorical feature

我正在解決一個從歷史數據預測未來電子商店銷售的問題。 我正在使用的功能之一是商品價格(浮動)。 我通過實驗發現,將它添加到現有的特征列表會降低我的xgboost模型的擬合和驗證准確性(增加預測 RMSE)。 我懷疑價格的影響可能是高度非線性的,記憶棒、筆記本電腦、手機等的價格會達到峰值。

無論如何,我有以下想法來解決這個問題:如果我將浮動項目價格轉換為分類變量,並能夠指定映射,例如值或十分位數的范圍,如何? 然后,我可以使用訓練目標值item price對該分類變量進行均值編碼

這有意義嗎? 你能給我一個指向 Python“線性/十分位數直方圖”的指針,它返回一個浮點數列表,返回一個並行列表,每個浮點數屬於哪個 bin/decile?

恕我直言,您可以使用qcutKBinsDiscretizercut

一些例子,

>>> df = pd.DataFrame(np.random.randn(10), columns=['a'])
>>> df
          a
0  0.060278
1 -0.618677
2 -0.472467
3  1.539958
4 -0.181974
5  1.563588
6 -1.693140
7  1.868881
8  1.072179
9  0.575978

對於qcut

>>> df['cluster'] = pd.qcut(df.a, 5, labels=range(1, 6))
>>> df
          a cluster
0  0.060278       3
1 -0.618677       1
2 -0.472467       2
3  1.539958       4
4 -0.181974       2
5  1.563588       5
6 -1.693140       1
7  1.868881       5
8  1.072179       4
9  0.575978       3

對於KBinsDiscretizer

>>> (df['cluster'] = 
     KBinsDiscretizer(n_bins=3, encode='ordinal', strategy='quantile')
     .fit_transform(df.a.values.reshape(-1, 1)))
>>> df
          a  cluster
0  0.060278      1.0
1 -0.618677      0.0
2 -0.472467      0.0
3  1.539958      2.0
4 -0.181974      1.0
5  1.563588      2.0
6 -1.693140      0.0
7  1.868881      2.0
8  1.072179      2.0
9  0.575978      1.0

對於cut

>>> df['cluster'] = pd.cut(df.a, 5, labels=range(1, 6))
>>> df
          a cluster
0  0.060278       3
1 -0.618677       2
2 -0.472467       2
3  1.539958       5
4 -0.181974       3
5  1.563588       5
6 -1.693140       1
7  1.868881       5
8  1.072179       4
9  0.575978       4

最后,看一下可能有用: pandas.qcut 和 pandas.cut 有什么區別?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM