ArcsinTransformer#
该 ArcsinTransformer()
对数值变量应用反正弦变换。
反正弦变换,也称为反正弦平方根变换或角变换,其形式为 arcsin(sqrt(x)),其中 x 是介于 0 和 1 之间的实数。
反正弦平方根变换有助于处理概率、百分比和比例。
The ArcsinTransformer()
仅适用于值在0到1之间的数值变量。如果变量包含此范围之外的值,转换器将引发错误。
示例#
让我们从 scikit-learn 加载乳腺癌数据集,并将其分为训练集和测试集。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_breast_cancer
from feature_engine.transformation import ArcsinTransformer
#Load dataset
breast_cancer = load_breast_cancer()
X = pd.DataFrame(breast_cancer.data, columns=breast_cancer.feature_names)
y = breast_cancer.target
# Separate data into train and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
现在我们想对数据框中的一些变量应用反正弦变换。这些变量的值在0-1范围内,正如我们将在接下来的直方图中看到的那样。
首先,让我们用变量名做一个列表:
vars_ = [
'mean compactness',
'mean concavity',
'mean concave points',
'mean fractal dimension',
'smoothness error',
'compactness error',
'concavity error',
'concave points error',
'symmetry error',
'fractal dimension error',
'worst symmetry',
'worst fractal dimension']
现在,让我们设置 arscin 转换器,使其仅修改之前的变量:
# set up the arcsin transformer
tf = ArcsinTransformer(variables = vars_)
# fit the transformer
tf.fit(X_train)
在应用 fit 方法时,转换器不会学习任何参数。但它会检查变量是否为数值型,并且是否在正确的值范围内。
我们现在可以继续转换变量:
# transform the data
train_t = tf.transform(X_train)
test_t = tf.transform(X_test)
就是这样,现在变量已经通过arscin公式进行了转换。
最后,让我们为每个原始变量制作一个直方图,以检查它们的分布:
# original variables
X_train[vars_].hist(figsize=(20,20))
在上一张图片中可以看到,许多变量是偏斜的。但请注意,所有变量的值都在0到1之间。
现在,让我们检查变换后的分布:
# transformed variable
train_t[vars_].hist(figsize=(20,20))
从上一张图片中可以看到,许多变量在变换后呈现出更接近高斯分布的形状。
其他资源#
有关此方法和其他特征工程方法的更多详细信息,请查看以下资源:
或者阅读我们的书:
我们的书籍和课程都适合初学者和更高级的数据科学家。通过购买它们,您正在支持 Feature-engine 的主要开发者 Sole。