使用kmapper时遇TypeError:tuple索引需为整数/切片而非字符串
问题解决:KeplerMapper可视化单纯复形图报错修复
错误原因
代码中graph = mapper.map(...)这一行的末尾多了一个逗号,导致graph被定义为元组类型,而mapper.visualize()需要接收的是mapper.map()返回的字典格式图数据。这就是报错TypeError: tuple indices must be integers or slices, not str的根源——代码试图用字符串索引去访问元组,自然会失败。
修正后的代码
import kmapper as km from sklearn import cluster import numpy as np # Define the data points data = np.asarray( [ [145.0, 17.0], [166.0, 10], [145, 38], [161, 49], [165, 24], [188, 41], [193, 18], [179, 52], [208, 21], [194, 51], [198, 31], [207, 41], [218, 55], [222, 26], [238, 27], [226, 41] ]) mapper = km.KeplerMapper(verbose=1) projected_data = mapper.fit_transform(data, projection=[0], distance_matrix="euclidean") cover = km.Cover(n_cubes=10, perc_overlap=0.4) # 移除末尾的逗号,让graph接收mapper.map返回的字典 graph = mapper.map(projected_data, data, cover=cover, clusterer=cluster.AgglomerativeClustering(n_clusters=2, linkage="single") ) mapper.visualize(graph, path_html="graph1.html")
关键修改说明
- 移除
mapper.map()语句末尾的逗号,确保graph变量存储的是mapper.map()返回的图结构字典,而非元组。 - 修正后,
mapper.visualize()可以正常访问graph["nodes"]等字典键值对,生成正确的HTML可视化文件。
内容的提问来源于stack exchange,提问作者An Perez
相关产品推荐
相关产品推荐

