Python k-means 得到错误找到具有 0 个特征的数组

Python k-means get error Found array with 0 feature(s)

我正在尝试读取 csv 文件并应用 k-means 算法来识别元素组。

我的代码是这样的:

import csv
import numpy as np
import scipy as sp
from sklearn import cluster as sk

print(sk.k_means(np.genfromtxt('keywords.csv', delimiter=' ')[:,:0],3))

我使用 genfromtxt 因为有一些缺失值,使用这个语句我可以绕过这些。

目前我想查看 k_means 函数的完整 return,但我得到

/anaconda/lib/python3.6/site-packages/numpy/core/_methods.py:59: RuntimeWarning: Mean of empty slice.
  warnings.warn("Mean of empty slice.", RuntimeWarning)
/anaconda/lib/python3.6/site-packages/numpy/core/_methods.py:70: RuntimeWarning: invalid value encountered in double_scalars
  ret = ret.dtype.type(ret / rcount)
Traceback (most recent call last):
  File "ejercicio2.py", line 6, in <module>
    print(sk.k_means(np.genfromtxt('keywords.csv', delimiter=' ')[:,:0],3))
  File "/anaconda/lib/python3.6/site-packages/sklearn/cluster/k_means_.py", line 345, in k_means
    x_squared_norms=x_squared_norms, random_state=random_state)
  File "/anaconda/lib/python3.6/site-packages/sklearn/cluster/k_means_.py", line 388, in _kmeans_single_elkan
    X = check_array(X, order="C")
  File "/anaconda/lib/python3.6/site-packages/sklearn/utils/validation.py", line 424, in check_array
    context))
ValueError: Found array with 0 feature(s) (shape=(3312, 0)) while a minimum of 1 is required.

您通过写入 [:, :0] 传递了所有行但没有传递列,因此出现了错误。您可能想要发送所有行和列,在这种情况下,只需将其从该行中删除即可。一般来说,语法是 -

data[x:y, a:b]

这只是意味着,从 x 到 y(不包括)的行和从 a 到 b(不包括)的列。