Chuẩn hóa đặc trưng chống ngoại lệ

Phát hiện bất thường với Python

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Khoảng cách Euclid

A = np.array([9, 1, 6])
B = np.array([25, 44, 85])


diffs = (B - A) ** 2
dist_AB = np.sqrt(np.sum(diffs)) print(dist_AB)
91.35644476444998

Công thức tính khoảng cách Euclid và hình minh họa.

Phát hiện bất thường với Python

Euclid trong SciPy

from scipy.spatial.distance import \
euclidean

dist_AB = euclidean(A, B)
dist_AB
91.35644476444998

Công thức tính khoảng cách Euclid và hình minh họa.

Phát hiện bất thường với Python

Chuẩn hóa (Standardization)

  • Trừ trung bình và chia cho ĐLC
  • Kết quả: trung bình 0 và ĐLC 1
Phát hiện bất thường với Python

StandardScaler

from sklearn.preprocessing import StandardScaler

ss = StandardScaler()

# Trích xuất đặc trưng và mục tiêu X = males.drop("weightkg", axis=1) y = males[['weightkg']]
# Fit ss.fit(X)
Phát hiện bất thường với Python

Biến đổi

X_transformed = ss.transform(X)

X_transformed[:5]
array([[-1.05174523],
       [-0.29289108],
       [ 1.3446363 ],
       [-1.21654894],
       [0.056451235]])
Phát hiện bất thường với Python

fit_transform

ss = StandardScaler()

X_transformed = ss.fit_transform(X)
Phát hiện bất thường với Python

QuantileTransformer

from sklearn.preprocessing import QuantileTransformer


# Khởi tạo qt = QuantileTransformer() X = males.drop("weightkg", axis=1) y = males[['weightkg']]
X_transformed = qt.fit_transform(X) X_transformed.shape
(4082, 94)
Phát hiện bất thường với Python

Giữ tên cột

qt = QuantileTransformer()

X.loc[:, :] = qt.fit_transform(X)

X.head()

Năm hàng đầu của phiên bản đã biến đổi của bộ dữ liệu số đo cơ thể Ansur Males.

Phát hiện bất thường với Python

Histogram đều

plt.hist(X['footlength'], color='red')

plt.xlabel("Chiều dài bàn chân")
plt.title("Biểu đồ tần suất chiều dài bàn chân")

plt.show()

Biểu đồ tần suất của cột chiều dài bàn chân cho thấy phân bố đều

Phát hiện bất thường với Python

Histogram chuẩn

qt = QuantileTransformer(
  output_distribution='normal')

# Dựng lại mảng đặc trưng đã ghi đè
X = males.drop("weightkg", axis=1)
X.loc[:, :] = qt.fit_transform(X)

plt.hist(X['footlength'], color='r')
plt.xlabel("Chiều dài bàn chân")
plt.title("Biểu đồ tần suất chiều dài bàn chân")

plt.show()

Biểu đồ tần suất của cột chiều dài bàn chân cho thấy phân bố xấp xỉ chuẩn

Phát hiện bất thường với Python

Ayo berlatih!

Phát hiện bất thường với Python

Preparing Video For Download...