gpt4 book ai didi

python-2.7 - 在sklearn中生成各向异性数据

转载 作者:行者123 更新时间:2023-12-04 01:48:02 26 4
gpt4 key购买 nike

在 sklearn 文档中,他们提供了将一团正态分布数据转换为各向异性分布数据的代码,如下所示

transformation = [[0.60834549, -0.63667341], [-0.40887718, 0.85253229]]
X_aniso = np.dot(X, transformation)

代码链接 here

我想知道与转换矩阵中的第 th 个条目对应的函数是什么。或者一般来说,如何将各向同性的高斯 Blob 转换为各向异性的?

任何人都可以帮忙吗?

最佳答案

该功能是某种 linear transformation ,您可以使用 here 中描述的公式获得操作的具体角度和比例。 .

如果你想让一个 blob 各向异性,你需要沿着一个维度剪切它以将它转换成某种椭圆体。

例如。在 2D 中:

from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt
import numpy as np

fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(10, 5))

n_samples = 1500
random_state = 170
X, y = make_blobs(n_samples=n_samples,
random_state=random_state, center_box=(0, 20))
ax1.scatter(X[:, 0], X[:, 1], c=y)
ax1.set_title('default')


theta = np.radians(60)
t = np.tan(theta)
shear_x = np.array(((1, t), (0, 1))).T


X_rotated = X.dot(shear_x)
ax2.scatter(X_rotated[:, 0], X_rotated[:, 1], c=y)
ax2.set_title('%1.f degrees X shearing' % np.degrees(theta))


theta = np.radians(70)
t = np.tan(theta)

shear_y = np.array(((1, 0), (t, 1))).T

X_rotated = X.dot(shear_y)
ax3.scatter(X_rotated[:, 0], X_rotated[:, 1], c=y)
ax3.set_title('%1.f degrees Y shearing' % np.degrees(theta))
plt.tight_layout()

enter image description here

关于python-2.7 - 在sklearn中生成各向异性数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54434946/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com