社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
私信  •  关注

Ethan Henderson

Ethan Henderson 最近创建的主题
Ethan Henderson 最近回复了
5 年前
回复了 Ethan Henderson 创建的主题 » K在Python中是指从头开始

(扩展答案,稍后格式化) x是数据,作为矩阵。 使用[]符号,我们从矩阵中提取切片或选择单个元素。您可能想检查NUMPY数组索引。 https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html choice从数据矩阵的第一维的大小中随机选择k个元素,不需要替换。 注意,在索引中,使用[]语法,我们看到我们有两个条目。numpy.random.choice和“:”。 “”表示我们沿着这条轴线。

因此,x[NoPy.Adv.Orth.(X.St[ 0 ],k,替换= false),]意味着我们沿着第一个轴选择一个元素,并沿着第二个共享第一个索引的每一个元素。有效地,我们选择一个矩阵的随机行。

(这些评论很好地解释了这段代码,我建议你读一下NUMPY索引列表理解,以便进一步说明)。

C[C[j][:-1]表示范围内的j(len(C))] “C[”后面的部分使用列表理解来选择矩阵C的部分。

C[j]表示矩阵C的行。 我们使用[:-1]来获取,但不包括行的最后一个元素我们对矩阵C中的每一行执行此操作。这将删除矩阵的最后一列。

C=numpy.asarray(C)这将矩阵转换为numpy数组,这样我们就可以用它做特殊的numpy操作。

c_old=numpy.zeros(c.shape)。这将创建一个零矩阵,稍后填充,其大小与C相同。我们正在初始化此数组以稍后填充。

簇=numpy.zeros(len(x))这将创建一个零向量,其维数与矩阵x中的行数相同。稍后将填充此向量。我们正在初始化此数组以便稍后填充。

错误=距离(C,C旧,无)。取两个矩阵之间的距离。我相信这个函数可以在脚本的其他地方定义。

尝试=0。将轮胎计数器设置为0。

while…在该条件为真时执行此块。

对于[0…(X-1中的行数)中的i:

簇[i]=dist1(X[i][:-1],C);将X的第i行最接近的簇放在簇的第i个位置。

C_old=deepcopy(C)-创建新的C副本不要只是移动指针。

对于每个(0..平均数-1):

如果簇[j]=i,则范围(len(X))内j的点=[X[j][:-1]这是一个列表理解。创建一个x行的列表,除了最后一个条目之外,都包含在其中,但是如果该行属于jth集群,则只包含该行。

如果没有点。如果没有东西属于一个集群。

C[i][:]=numpy.zeros(C[i].shape)创建一个0向量,稍后填充,并将此向量用作集群矩阵C的第i行。

其他:

C[i]=NP.Mean(点,轴=0)。将簇矩阵的第i行c指定为簇中的平均点。我们遍历行(轴=0)。这是我们更新集群。