在这里,我尝试了权力转移技术,以检测和删除他们,但它不工作,我不知道为什么,如果有人有什么新的建议,那么请给我。
假设我有一个数据集,在该数据集中存在偏度,因此,我需要定义一个函数,该函数可以从数据集的每一列中检测到某一阈值的偏度,并删除该数据集的偏斜度,并在删除偏斜度后返回数据。
# 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()发布于 2022-05-30 12:17:32
你的代码似乎没问题。我检查了它,它按照您在我的实验室中看到的那样工作。以下是产出的简短摘录:
前循环:

后循环:

您可能想检查您的if语句if skew > 4.0:,并检查您的离群值列是否曾经造成4的偏斜。只需使用print(x.skew().values)并查看每个列的值。
如果所有的值都低于4,那么它将永远不会进入使用电力变压器的If状态。
https://stackoverflow.com/questions/72431096
复制相似问题