我想研究如何通过适当的核函数转换后,R ^ 2中的线性不可分数据集如何在R ^ 3中线性可分。
def randrange(n, vmin, vmax):
return (vmax-vmin)*np.random.rand(n) + vmin
def fn_kernel(x1, x2):
""" Implements a kernel phi(x1,y1) = [x1, y1, x1^2 + y1^2] """
return np.array([x1, x2, x1**2.0 + x2**2.0])
""" Generate linearly nonseparable dataset (in R^2) """
我将数据集转换为PCA。
pca = PCA(n_components=2)
X = pca.fit_transform(X_train)
Y = pca.transform(X_test)
要打印X和Y:
print(X)
[[-1.25822621 -0.10589429]
[ 1.14574408 0.50555968]
[ 1.53943153 -0.89326919]
[-1.50951157 -0.35717965]
[ 0.58873174 -0.94771082]
[ 0.50077128 1.6531032 ]
[-1.00694085 0.14539106]]
print(Y)
[[-1.76079692 -0.608465 ]
[-0.00179943 1.15053249]
[-0.05624106 0.1998327 ]]
在这里它返回一个空列表,我不知道为什么?
A = X[np.where(Y == 0)]
B = X[np.where(Y == 1)]
print(A) -> []
print(B) -> []
当我在下面的代码中运行此代码时:
X0_orig = A[:, 0]
Y0_orig = A[:, 1]
这给我一个错误:数组的索引过多。