我们如何自动检测数据中的偏度,并且存在偏度,然后我们如何去除它?

how can we automatically detect skewnes in the data and skewness is present then how we can remove it?

我在这里尝试了电力传输技术来检测异常值并删除它们,但它不起作用,我不知道为什么,如果有人有任何新的建议,请给我。

假设我有一个数据集并且在该数据集中存在偏度,所以我需要定义一个函数来检测数据集每一列在特定阈值下的偏度并移除偏度并 return 返回去除偏度后的数据。

# Removing outliers
from sklearn.preprocessing import PowerTransformer
def remove_skewness(x):
    value = x.skew().values
    for skew in value:
        if skew > 4.0:
            #skewness removal
            pt=PowerTransformer(method='yeo-johnson') 
            X_power=pt.fit_transform(x)
            df1=pd.DataFrame(X_power,columns=X.columns)
            print("Skewness is Detected and will be Removed:")
            return df1
        else:
            print("Skewness not Detected:")
            return x
        
df2 = remove_skewness(df_new)
df2.head()

您的代码似乎没问题。我检查了它,它按预期工作,正如您在 my colab 中看到的那样。 这里是输出的简短摘录:

循环前:

循环后:

您可能需要检查您的 if - 语句 if skew > 4.0: 并检查您的离群值列是否曾产生 4 的偏度。只需使用 print(x.skew().values) 并查看每列的值。

如果所有值都小于4那么它永远不会进入使用powertransformer的if-statment。