Python中的KMeans:ValueError:使用序列设置数组元素

Python中的KMeans:ValueError:使用序列设置数组元素,python,numpy,scikit-learn,k-means,Python,Numpy,Scikit Learn,K Means,我正在尝试使用numpy和sklearn在Python中执行kmeans集群。 我有一个包含45列和645行的txt文件。第一行是Y,其余644行是X 我的Python代码是: import numpy as np import matplotlib.pyplot as plt import csv from sklearn.cluster import KMeans #The following code reads the first row and terminates the loo

我正在尝试使用numpysklearn在Python中执行kmeans集群。 我有一个包含45列和645行的txt文件。第一行是Y,其余644行是X

我的Python代码是:

import numpy as np
import matplotlib.pyplot as plt
import csv

from sklearn.cluster import KMeans

#The following code reads the first row and terminates the loop
with open('trainDataXY.txt','r') as f:
   read = csv.reader(f)
   for first_row in read:
        y = list(first_row)
        break

#The following code skips the first row and reads rest of the rows
firstLine = True
with open('trainDataXY.txt','r') as f1:
    readY = csv.reader(f1)
    for rows in readY:
         if firstLine:
              firstLine=False
              continue
         x = list(readY)

X = np.array((x,y), dtype=object)
kmean = KMeans(n_clusters=2)
kmean.fit(X)
我在这一行得到一个错误:
kmean.fit(X)

我得到的错误是:

Traceback (most recent call last):
File "D:\file_path\kmeans.py", line 25, in <module> kmean.fit(X)
File "C:\Anaconda2\lib\site-packages\sklearn\cluster\k_means_.py",
line 812, in fit X = self._check_fit_data(X)
File "C:\Anaconda2\lib\site-packages\sklearn\cluster\k_means_.py",
line 786, in _check_fit_data X = check_array(X, accept_sparse='csr',
dtype=np.float64)
File "C:\Anaconda2\lib\site-packages\sklearn\utils\validation.py",
line 373, in check_array array = np.array(array, dtype=dtype,
order=order, copy=copy) ValueError: setting an array element with a
sequence.`
回溯(最近一次呼叫最后一次):
文件“D:\File\u path\kmeans.py”,第25行,在kmean.fit(X)中
文件“C:\Anaconda2\lib\site packages\sklearn\cluster\k_表示_uuu.py”,
第812行,in fit X=self.\u check\u fit\u data(X)
文件“C:\Anaconda2\lib\site packages\sklearn\cluster\k_表示_uuu.py”,
第786行,在_check_fit_data X=check_数组(X,accept_sparse='csr',
dtype=np.64)
文件“C:\Anaconda2\lib\site packages\sklearn\utils\validation.py”,
第373行,在check_array array=np.array(array,dtype=dtype,
order=order,copy=copy)value错误:设置具有
顺序`
trainDataXY.txt

1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,3,3,3,3,3,3,3,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5 47,64,50,39,66,51,46,37,43,37,37,35,36,34,38,37,3910410210310210810910710611511611201221211161131130132126127121128127

47,65,58,30,39,48,47,35,42,37,38,37,36,38,38,40104103103103101108110108106116151511211191211161131129132126127

49,69,55,28,56,64,50,30,41,37,39,37,38,36,39,39,39,39,401051031041031101081071161511201171115131129128125134126127

51,78,52,46,56,74,50,28,38,38,39,38,37,40,39,39,41,96101,99104,971011111011041151161110112116113513012912010813312125

55,79,53,65,52102,55,28,36,39,40,38,39,37,40,39,40,42,79,86,84105,84,57110,85,761171115110,66,861171123130129106,93130113114

48,80,59,81,50120,63,26,31,39,40,39,40,38,42,37,41,42,53,73,77,90,47,34,76,52,63106102,97,80,33,68105113115124111,83,91128105110

45,95,56,86,38137,60,27,27,39,40,38,40,40,41,52,38,41,24,44,44,79,40,32,48,26,28,63,52,59,42,30,62,79,67,77116121122114,96,90126,93103

45,93,47,86,35144,60,26,27,39,40,45,39,38,43,87,46,58,33,21,26,62,42,49,37,24,33,41,56,29,28,68,79,58,74115111111117104132,92,97

48,85,50,83,37142,62,25,29,57,47,77,43,64,61115,70101,41,28,28,48,39,46,42,38,37,47,43,74,32,28,64,86,80,81127113,99130140112139,92,97

48,94,78,77,30138,57,28,29,91,66,94,61,94103129,89140,38,34,32,38,33,43,38,36,39,50,39,75,31,33,65,89,82,841271121001331107136,95,97

45108158,77,30140,67,29,26104,97113,92106141137116151,33,32,32,43,44,40,37,34,37,54,86,77,55,48,77112,83109120111105124133,98129,89,99

48139173,64,40159,61,55,27115117128106124150139125160,27,26,29,54,51,47,36,36,32,80125105,97,96,861301021181171051051717,92130,94,97

131157143,66,87130,57118,26124137129133156133132173,29,25,28,81,48,38,48,32,24134165144149142110145147161114112103118115,94126,87102


160162146,78116127,52133,71116141125141169115110161,69,53,46,97,79,47,76,59,32148147134165152111111551391451161101118105,86123,92,99

您的数据矩阵不应为
对象类型
。它应该是一个形状数矩阵
n\u样本x n\u特征

当人们试图将样本列表转换为数据矩阵时,通常会出现此错误,而每个样本都是数组或列表,并且至少有一个样本的长度与其他样本的长度不同。这可以通过计算
np.unique(list(map(len,X)))
来解决

你的情况就不同了。确保获得数据矩阵。首先尝试用创建数据矩阵的内容替换行
X=np.array((X,y),dtype=object)


您还应该选择使用
numpy.recfromcsv
读取数据。这将使所有内容更易于阅读。

请显示数据文件的摘录。还要确保创建的是真实的数字数据矩阵,而不是
dtype=object
。更喜欢使用numpy或pandas阅读器读取数据。如何上载数据文件?只需粘贴前5行即可查看数据文件的外观