import operator from math import sqrt import numpy as np import pandas as pd from random import sample df = pd.DataFrame(pd.read_csv("4.0.csv", names=['密度', '含糖率'], header=None, encoding="ansi")) # 读取csv文件 data_array = np.array(df) # 先将dataframe转换为数组 data_list = data_array.tolist() # 其次转换为列表 # print(data_list) def number(D): number = 0 for _ in D: number += 1 return number def dis_ed(list1, list2): dis__ed = sqrt((list1[0] - list2[1]) ** 2 + (list1[0] - list2[1]) ** 2) return dis__ed def dis_md(list1, list2): dis__md = abs(list1[0] - list2[1]) + abs(list1[0] + list2[1]) return dis__md def k_means(D, k): D_initial = sample(D, k) while True: cluster = [[D_initial[0]], [D_initial[1]], D_initial[2]] for j in range(0, number(D)): distance = [] for i in range(0, k): dis__ed = dis_ed(D[j], D_initial[i]) distance.append(dis__ed) min_dis = min(distance) min_index = distance.index(min_dis) cluster[min_index].append(D[j]) flag = True # 用于判断是否结束循环 D_new = [] for i in range(0, k): cluster_array = np.array(cluster[i]) cluster_avg=np.mean(cluster_array, axis=0) D_new.append(cluster_avg[0]) if (D_new[i] != D_initial[i]).all(): D_initial[i] = D_new[i] flag=False return cluster print(k_means(data_list, 3))
时间: 2023-05-26 16:05:25 浏览: 152
这段代码是在Python中导入了一些模块:operator模块、math模块中的sqrt函数、numpy模块中的np对象、pandas模块中的pd对象,以及random模块中的sample函数。然后使用pandas模块读取了名为“4.0.csv”的文件,并将文件中读取的数据存储在一个名为df的数据框中,数据框中包含两列数据,列名分别为“密度”和“含糖率”。
相关问题
import operator import numpy as np
import operator和import numpy as np是Python中的两个常用的导入模块的语句。其中,import operator用于导入Python内置的operator模块,该模块提供了一系列的操作符函数,例如itemgetter函数,可以用于获取对象的位置。而import numpy as np则是导入了一个名为numpy的第三方库,并将其命名为np,numpy是Python中用于科学计算的一个常用库,提供了许多高效的数学函数和数据结构,例如多维数组和矩阵运算等。
阅读全文