python - 为 kmeans 和 PCA 转换数据

标签 python numpy scipy scikit-learn k-means

我有一个如下所示的数据集:

search_term = ['computer','usb port', 'phone adaptor']
clicks = [3,2,1]
bounce = [0,0,2]
conversion = [4,1,0]

我想将它输入到 kmeans 模型中,但是我在将列表转换为矩阵格式时遇到问题,以便它可以被 kmeans 摄取。我还想使用 PCA 减少维度,以便可以在二维图中可视化。

这就是我的代码:

X = np.array(clicks, bounce, conversion)
y = np.array(search_terms)
num_clusters = 3

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

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

print km.labels_[:10]

这是我得到的错误:

TypeError: unsupported operand type(s) for -: 'numpy.ndarray' and 'numpy.ndarray'

此外,一旦聚类完成,我希望能够看到哪些搜索词属于哪个聚类,所以我不确定设置 y = np.array(search_terms) 是否正确?

请指教。

最佳答案

下面的代码应该可以工作。如果情况并非如此,请告诉我。

import numpy as np
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans

search_terms = ['computer','usb port', 'phone adaptor']
clicks = [3,2,1]
bounce = [0,0,2]
conversion = [4,1,0]

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

num_clusters = 3

X_pca = PCA(n_components=2, whiten=True).fit_transform(X)

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

关于python - 为 kmeans 和 PCA 转换数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31148543/

相关文章:

python - 无法使用 Pandas DataFrame 对象上的循环获得正确的 DataFrame 形状(行*列)

python - 我对 numpy searchsorted 做错了什么?

python - 为什么基于速度使用 numpy over list?

python - 3D 空间中最佳拟合平面的方向

python - 具有 'linear' 和 'cubic' 的 Scipy griddata 产生 nan

python - 如何使用Python加快文件的下载速度?

python - Linux 上使用 pygtk (gtk.gdk) 的桌面/根窗口上的键盘/鼠标事件

python - 如何在 Zenoss 映射中导入 DMD?

javascript - 如何得到N个和等于M的随机整数

python - 如何在线性回归中强制零截距?