|11个常见的分类特征的编码技术( 二 )
import category_encoders as ce
tenc=ce.TargetEncoder()
df_dep=tenc.fit_transform(df[‘Dept’
df[‘Yearly Salary’
)
df_dep=df_dep.rename({‘Dept’:’Value’ axis=1)
df_new = df.join(df_dep)
这样就得到了上面的结果
5、Hashing当使用哈希函数时 , 字符串将被转换为一个惟一的哈希值 。 因为它使用的内存很少可以处理更多的分类数据 。 对于管理机器学习中的稀疏高维特征 , 特征哈希是一种有效的方法 。 它适用于在线学习场景 , 具有快速、简单、高效、快速的特点 。
例如下面的数据:
编码后
代码如下:
from sklearn.feature_extraction import FeatureHasher
# n_features contains the number of bits you want in your hash value.
h = FeatureHasher(n_features = 3 input_type =’string’)
# transforming the column after fitting
hashed_Feature = h.fit_transform(df[‘nom_0’
)
hashed_Feature = hashed_Feature.toarray()
df = pd.concat([df pd.DataFrame(hashed_Feature)
axis = 1)
df.head(10)
6、Weight of Evidence Encoding(WoE) 开发的主要目标是创建一个预测模型 , 用于评估信贷和金融行业的贷款违约风险 。证据支持或驳斥理论的程度取决于其证据权重或 WOE 。
如果P(Goods) / P(Bads) = 1 , 则WoE为0 。 如果这个组的结果是随机的 , 那么P(Bads) > P(Goods) , 比值比为1 , 证据的权重(WoE)为0 。 如果一组中P(Goods) > P(bad) , 则WoE大于0 。
因为Logit转换只是概率的对数 , 或ln(P(Goods)/P(bad)) , 所以WoE非常适合于逻辑回归 。 当在逻辑回归中使用wo编码的预测因子时 , 预测因子被处理成与编码到相同的尺度 , 这样可以直接比较线性逻辑回归方程中的变量 。
例如下面的数据
会被编码为:
代码如下:
from category_encoders import WOEEncoder
df = pd.DataFrame({‘cat’: [‘a’ ‘b’ ‘a’ ‘b’ ‘a’ ‘a’ ‘b’ ‘c’ ‘c’
‘target’: [1 0 0 1 0 0 1 1 0
)
woe = WOEEncoder(cols=[‘cat’
random_state=42)
X = df[‘cat’
y = df.target
encoded_df = woe.fit_transform(X y)
7、Helmert EncodingHelmert Encoding将一个级别的因变量的平均值与该编码中所有先前水平的因变量的平均值进行比较 。
反向 Helmert 编码是类别编码器中变体的另一个名称 。它将因变量的特定水平平均值与其所有先前水平的水平的平均值进行比较 。
会被编码为
代码如下:
import category_encoders as ce
encoder=ce.HelmertEncoder(cols=’Dept’)
new_df=encoder.fit_transform(df[‘Dept’
)
new_hdf=pd.concat([dfnew_df
axis=1)
new_hdf
8、Cat Boost Encoding是CatBoost编码器试图解决的是目标泄漏问题 , 除了目标编码外 , 还使用了一个排序概念 。 它的工作原理与时间序列数据验证类似 。 当前特征的目标概率仅从它之前的行(观测值)计算 , 这意味着目标统计值依赖于观测历史 。
TargetCount:某个类别特性的目标值的总和(到当前为止) 。
Prior:它的值是恒定的 , 用(数据集中的观察总数(即行))/(整个数据集中的目标值之和)表示 。
featucalculate:到目前为止已经看到的、具有与此相同值的分类特征的总数 。
编码后的结果如下:
代码:
import category_encoders
category_encoders.cat_boost.CatBoostEncoder(verbose=0
cols=None drop_invariant=False return_df=True
handle_unknown=’value’ handle_missing=’value’
random_state=None sigma=None a=1)
target = df[[‘target’
train = df.drop(‘target’ axis = 1)
# Define catboost encoder
cbe_encoder = ce.cat_boost.CatBoostEncoder()
# Fit encoder and transform the features
cbe_encoder.fit(train target)
train_cbe = cbe_encoder.transform(train)
- 手机同质化一直非常的严重|小米13系列好评满满,骁龙8gen2比苹果a16更强
- 买七彩虹RTX30显卡、整机送大礼了!CF限定礼包快抢来自买七彩虹的消息|买七彩虹rtx30显卡、整机送大礼了!cf限定礼包快抢
- 12月13日消息|苹果appletv4k搭载的a15处理器为5核心
- AMD的RX7900系列显卡昨晚解禁了|RX 7900赢回一波 4K视频生产力终于超越RTX4090
- 月球是哪儿来的?同样是内太阳系行星的水星、金星和火星|月球身世之谜是怎么形成的?
- 当代超级计算机的局限性|量子计算的现在与未来
- 坐在隔壁工位的哔哥最近感慨很深|盘点qq下架的衍生品
- 13代酷睿目前还没有65WTDP型号的主流产品|绝配12代酷睿华擎迷你准系统到手1279元(1.92L体积)
- 12月14日|oppo第二颗自研芯片将到来,网友猜测可能是手环一类的
- 对于最近想要购买手机的小伙伴而言|骁龙8gen2的新旗舰一加acepro值得入手吗?
