集体智慧编程读书笔记 三 cont

继续来看第三章, 下面是用图形显示树

首先下载 PIL, 这个库目前不支持 python 3, 下面地址上有高手改过的版本可以用:

http://www.lfd.uci.edu/~gohlke/pythonlibs/#pil


显示画图不是本书重点, 就不解释了, 就是教你怎么用PIL画图


列聚类

刚才的聚类我们发现了博客之间的相关度, 有什么样博客是类似的, 如果我们对转置后数据进行聚类呢?就是对列, 也是博客出现的单词进行聚类, 这样显示的结果就是单词的关联度, 同时反映博客的类型。
显示要把原来的数据转置, 这个很简单
def rotamatrix(data):
    rotadata = []
    for i in range(len(data[0])):
        newrow = [data[j][i] for j in range(len(data))]
        rotadata.append(newrow)
    return rotadata

结果为:



需要注意的是这个时候 数据项是单词, 变量是博客, 单词多很多, 在聚类是无意义的结果也很多, 博客聚类更有意义

K 均值聚类

分级聚类我们看到, 算法复杂度太高, 计算太耗时,数据集大会很慢, 就像刚才我们进行单词聚类, 时间就很长,还有一个问题 树形结构不会真正将数据拆分成不同组(需要额外保存下这种关系)

K均值聚类的做法, 先预设K个目标点, 然后将数据集分类, 分配到这k个点上, 分配原则是离谁近就放到谁附近,  分完一次后, 调整一下, 计算k个聚类在一起的群的中心点, 利用新得出的中心点再次聚类,直到某一次, 聚类过程中结果不发生变化就停止,算法实现如下
def kcluster(rows, distance=pearson, k=4):
    ranges = [(min([row[i] for row in rows]), max([row[i] for row in rows]))
               for i in range(len(rows[0]))]
    clusters = [ [random.random * (ranges[i][1] - ranges[i][0]) + ranges[i][0]for i in range(len(rows[0]))]for j in range(k)]
    lastMatches = None
    for t in range(100):
        print('Iteration %d' % t)
        bestmatches = [[] for i in range(k)]

        for j in range(len(rows)):
            row = rows[j]
            bestmatch = 0
            for i in range(k):
                d = distance(clusters[i], row)
                if d < distance(clusters[bestmatch], row): bestmatch = i
            bestmatches[bestmatch].append(j)
        if bestmatches == lastMatches: break
        lastMatches = bestmatches

        for i in range(k):
            avgs = [0.0] * len(rows[0])
            length = len(bestmatches[i])

            if length > 0:
                for rowid in bestmatches[i]:
                    for m in range (len(rows[rowid])):
                        avgs[m] += rows[rowid][m]
                for j in range(len(avgs)):
                    avgs[j] /= length
                clusters[i] = avgs
    return bestmatches




10-14
<think>我们注意到用户的上一次查询是"cont相关信息",而之前的对话历史是关于C++中main函数的讨论。用户意图可能是想继续深入之前的讨论,但"cont"的具体含义不明确。在IT领域,"cont"可能有多种含义,例如: 1. "cont"作为缩写:可能是"continue"(继续)、"content"(内容)、"container"(容器)或"control"(控制)等。 2. 编程中:在特定上下文里可能指代某个变量、函数名或关键字。 3. 命令或快捷键:在某些环境中,"cont"可能是调试命令(如gdb中的continue命令)。 由于信息不足,需要进一步明确用户意图。但根据对话历史(之前讨论C++的main函数),最相关的可能是: - 调试中的continue命令:在调试器(如gdb)中,"cont"或"continue"命令用于继续执行程序直到下一个断点或程序结束。 - C++中的continue关键字:用于跳过当前循环的剩余代码,直接开始下一次迭代。 因此,我们将围绕这两个主要解释进行回答,并提示用户澄清具体场景。 ### 关于"cont"在IT领域的常见解释与应用 #### 1. 调试器中的continue命令 在GDB(GNU调试器)等调试工具中,`cont`是`continue`命令的缩写,用于在程序因断点或信号暂停后恢复执行。典型使用场景: ```bash (gdb) break main # 在main函数设置断点 (gdb) run # 启动程序 (gdb) cont # 程序暂停后继续执行 ``` - 功能特性: - 程序会持续运行直到遇到下一个断点、程序结束或发生异常 - 与`step`(单步进入)和`next`(单步跳过)形成互补 #### 2. C/C++中的continue语句 在循环控制结构中,`continue`关键字用于跳过当前迭代的剩余代码: ```cpp for (int i=0; i<10; i++) { if (i % 2 == 0) continue; // 跳过偶数迭代 cout << i << " "; // 仅输出奇数 } // 输出结果:1 3 5 7 9 ``` - 语法规范: - 仅适用于`for`、`while`、`do-while`循环 - 在嵌套循环中只影响最内层循环 #### 3. 其他可能含义 - **容器技术**:Container的缩写,如Docker容器管理命令`docker container`常简写为`docker cont` - **网络协议**:TCP协议中的CONT片段(历史遗留,现代协议已弃用) - **文件扩展名**:某些系统使用`.cont`作为配置文件扩展名 ### 操作建议 如需进一步解答,请明确具体场景: - 若指调试命令,提供正在使用的调试器名称 - 若指编程语法,说明目标编程语言 - 若指容器技术,确认是否涉及Docker/Kubernetes §§相关问题§§: 1. GDB调试器中continue命令与run命令有何区别? 2. 在C++多层嵌套循环中如何跳出外层循环? 3. Docker容器中的"cont"相关命令有哪些典型用例? </think>### 关于"cont"的搜索结果与解析 #### 1. **调试器中的`cont`命令** 在GDB(GNU调试器)等工具中,`cont`是`continue`命令的缩写,用于恢复暂停程序的执行: ```bash (gdb) break main # 设置断点 (gdb) run # 启动程序 (gdb) cont # 程序暂停后继续执行 ``` - **功能**:从当前断点继续运行,直到下一个断点或程序结束 - **适用场景**:调试C/C++、Python等程序时跳过已知代码段 --- #### 2. **编程语言的`continue`语句** 在C/C++/Java/Python等语言中,`continue`用于跳过当前循环迭代: ```python for i in range(5): if i == 2: continue # 跳过i=2的迭代 print(i) # 输出:0 1 3 4 ``` - **作用**: - 终止当前循环体的本次执行 - 直接进入下一次循环条件判断 - **对比`break`**:`break`退出整个循环,`continue`仅跳过单次迭代 --- #### 3. **容器技术中的缩写** 在Docker/Kubernetes领域,`cont`可能指: - **Container(容器)**: ```bash docker cont ls # 错误写法(应为`docker container ls`) kubectl get cont # 错误写法(应为`kubectl get pods`) ``` - **正确用法**: - Docker:`docker container ls` - Kubernetes:`kubectl get pods` --- #### 4. **其他领域含义** - **网络协议**:历史TCP协议中`CONT`表示"继续"数据段(现代协议已弃用) - **配置文件**:`.cont`扩展名可能用于自定义配置文件(非标准) - **游戏指令**:部分游戏用`/cont`作为继续游戏的快捷命令 --- ### 操作建议 1. **调试场景**:使用`cont`前需通过`break`设置断点 2. **编码规范**:循环中优先使用完整拼写`continue`而非`cont` 3. **容器命令**:避免缩写,执行`docker container --help`查阅文档
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值