在 numpy 数组上使用拟合变换

Using fit transform on a numpy array

这是我的代码,用于将数据列表转换为 Kmeans 模型。我想使用 PCA 在二维图中可视化我的集群。

import numpy as np
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

#my data is longer than this but this is a sample :
search_terms = ['computer','usb port', 'phone adaptor']
clicks = [3,2,1]
bounce = [0,0,2]
conversion = [4,1,0]

X = np.array([bounce,conversion,clicks]).T
y = np.array(search_term)

num_clusters = 5

pca = PCA(n_components=2, whiten=True).fit_transform(X)
data2D = pca.transform(X)

km = KMeans(n_clusters=num_clusters, init='k-means++',n_init=10, verbose=1)
km.fit(X_pca)

centers2D = pca.transform(km.cluster_centers_)
plt.scatter( data2D[:,0], data2D[:,1], c=label_color)

这是我收到的错误:

data2D = pca.transform(X)
AttributeError: 'numpy.ndarray' object has no attribute 'transform'

我想我们不能在 numpy 数组上使用 pca 的 fit_transform。我可以做什么?

谢谢

看起来你打了两次fit_transform,这真的是你想做的吗?

这似乎对我有用:

pca = PCA(n_components=2, whiten=True).fit(X)
data2D = pca.transform(X)

data2D
Out[5]: 
array([[-1.29303192,  0.57277158],
       [ 0.15048072, -1.40618467],
       [ 1.14255114,  0.8334131 ]])