Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.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
Scikit learn scikit learn表示num样本必须大于num集群_Scikit Learn - Fatal编程技术网

Scikit learn scikit learn表示num样本必须大于num集群

Scikit learn scikit learn表示num样本必须大于num集群,scikit-learn,Scikit Learn,使用sklearn.cluster.KMeans。这段代码在早期几乎完全有效,但我所改变的只是构建数据集的方式。我只是不知道从哪里开始。。。代码如下: from sklearn.cluster import KMeans km = KMeans(n_clusters=20) for item in dfX: if type(item) != type(dfX[0]): print(item) print(len(dfX)) print(dfX[:10]) km.fit(d

使用sklearn.cluster.KMeans。这段代码在早期几乎完全有效,但我所改变的只是构建数据集的方式。我只是不知道从哪里开始。。。代码如下:

from sklearn.cluster import KMeans
km = KMeans(n_clusters=20)
for item in dfX:
    if type(item) != type(dfX[0]):
        print(item)
print(len(dfX))
print(dfX[:10])
km.fit(dfX)
print(km.cluster_centers_)
其输出如下:

12147
[1.201, 1.237, 1.092, 1.074, 0.979, 0.885, 1.018, 1.083, 1.067, 1.071]
/home/sbendl/anaconda3/lib/python3.5/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.
  DeprecationWarning)
Traceback (most recent call last):
  File "/home/sbendl/PycharmProjects/MLFP/K-means.py", line 20, in <module>
    km.fit(dfX)
  File "/home/sbendl/anaconda3/lib/python3.5/site-packages/sklearn/cluster/k_means_.py", line 812, in fit
    X = self._check_fit_data(X)
  File "/home/sbendl/anaconda3/lib/python3.5/site-packages/sklearn/cluster/k_means_.py", line 789, in _check_fit_data
    X.shape[0], self.n_clusters))
ValueError: n_samples=1 should be >= n_clusters=20

Process finished with exit code 1
12147
[1.201, 1.237, 1.092, 1.074, 0.979, 0.885, 1.018, 1.083, 1.067, 1.071]
/home/sbendl/anaconda3/lib/python3.5/site packages/sklearn/utils/validation.py:386:DeprecationWarning:在0.17中不推荐将1d数组作为数据传递,在0.19中会引发ValueError。如果数据具有单个特征,请使用X.restrape(-1,1),如果数据包含单个样本,请使用X.restrape(1,-1)重塑数据。
弃用警告)
回溯(最近一次呼叫最后一次):
文件“/home/sbendl/PycharmProjects/MLFP/K-means.py”,第20行,在
公里拟合(dfX)
文件“/home/sbendl/anaconda3/lib/python3.5/site packages/sklearn/cluster/k_-means_uu.py”,第812行
X=自检查拟合数据(X)
文件“/home/sbendl/anaconda3/lib/python3.5/site packages/sklearn/cluster/k_means_uu.py”,第789行,在“检查”数据中
X.shape[0],self.n_簇)
ValueError:n_samples=1应大于等于n_clusters=20
进程已完成,退出代码为1

正如您从输出中看到的,肯定有12147个样本,在大多数计数系统中大于20;)。此外,它们都是浮动的,所以这不会有问题。有人有什么想法吗?

摆脱循环打印,使用numpy进行分析(而不是x循环和len)。打印出dfX的形状,你会看到它可能是(12147),根据sklearn,这是DIM12147的一个样本。^是的。就是这样,我想知道为什么我在摆脱循环打印并使用numpy分析(而不是x循环和len)之前就这样做了。打印出dfX的形状,你会看到它可能是(12147),根据sklearn,这是DIM12147的一个样本。^是的。就是这样,我想知道为什么在xD之前我会这样做