Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为kmeans和PCA转换数据_Python_Numpy_Scipy_Scikit Learn_K Means - Fatal编程技术网

Python 为kmeans和PCA转换数据

Python 为kmeans和PCA转换数据,python,numpy,scipy,scikit-learn,k-means,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减少维数,这样就可以在2d绘图中可视化 这就是我的代码的样子: X = np.array(clicks, bounce, convers

我的数据集如下所示:

search_term = ['computer','usb port', 'phone adaptor']
clicks = [3,2,1]
bounce = [0,0,2]
conversion = [4,1,0]
我想把它输入到一个kmeans模型中,但是我在将列表转换成矩阵格式以便kmeans能够接受它时遇到了麻烦。我还想用PCA减少维数,这样就可以在2d绘图中可视化

这就是我的代码的样子:

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)是否正确


请告诉我。

你怎么不打这个

>>> X=np.array(clicks,bounce,conversion)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
ValueError: only 2 non-keyword arguments accepted

如果希望每列都使用它们,请删除
.transpose()

以下代码应该可以工作。如果不是这样,请告诉我

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)

您的代码的哪一行导致此错误?这一行
X\u pca=pca.transform(X)
@jxn
encoder.classes\uu
将为您提供所有唯一的labels@jxn这里的
encoder
实际上没有多大用处,因为我们正在进行无监督的聚类,不需要任何y标签输入。你可以忽略这两行。@jxn你可以通过比较
y[:10]
km来测试算法是否正确进行聚类。predict(X\u pca)[:10]
y[:10]
给了我一个包含10个不同数字的列表(这是数据的索引号吗?),而
km.predict(X\u pca)[:10]
给了我(我相信集群标签号)@jxn你能在帖子中发布这两个结果吗?它们都应该返回一个0、1、2、2、1、1、0相似的数组。
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)