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)
@jxnencoder.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)