美文网首页
skew_dummies方法

skew_dummies方法

作者: SeekerLinJunYu | 来源:发表于2019-04-29 20:08 被阅读0次

这是实现将数据正态分布化,然后整体One-Hot化的代码

class skew_dummies(BaseEstimator, TransformerMixin):
    def __init__(self,skew=0.5):    
        self.skew = skew               # 设置偏度阈值
    
    def fit(self,X,y=None):
        return self
    
    def transform(self,X):
        # pandas select_dtypes方法挑选出目标类型的列
        # 这里挑出所有数值类型的数据,select_dtypes返回的是一个DataFrame
        X_numeric=X.select_dtypes(exclude=["object"])
        # 使用apply方法在lambda运算时传入的x都是series,计算出每个特征下的偏度,返回的结果是一个Series
        skewness = X_numeric.apply(lambda x: skew(x))
        # abs(skewness) >= self.skew是根据Series支持boolean索引的原理.然后用index拿到skewness的索引(因为skewness是Series,索引实际上就是列标签)
        skewness_features = skewness[abs(skewness) >= self.skew].index
        # 进行正态分布化
        X[skewness_features] = np.log1p(X[skewness_features])
        # 对整个X数据集进行One Hot编码
        X = pd.get_dummies(X)
        return X

相关文章

网友评论

      本文标题:skew_dummies方法

      本文链接:https://www.haomeiwen.com/subject/dyvunqtx.html