封装这段函数while True: data_str = input('请输入黏度(mp*s)与密度(kg/l),以逗号分隔:(输入exit以停止)') if data_str == 'exit': break data = np.array([list(map(float, data_str.split(',')))]) label = kmeans.predict(data)[0] center_idx = np.argmin(np.sum(np.square(centers - data), axis=1)) print('该数据所属类别为:', label, ',模糊判断到聚类中心:', center_idx) print('对应表格中的转速和时间范围为:', df.iloc[kmeans.labels_ == label, 3:5].values)
时间: 2024-02-25 07:56:11 浏览: 224
好的,这里是一个封装后的函数,它可以接收用户的输入,使用k-means算法对输入的数据进行聚类,并输出该数据所属的类别以及对应的转速和时间范围。函数的名称为`cluster_and_print`,它接收一个参数`kmeans`,表示已经训练好的k-means模型。
```python
import numpy as np
def cluster_and_print(kmeans):
"""
从用户输入中获取黏度和密度,使用k-means算法对数据进行聚类,并输出聚类结果及对应的转速和时间范围。
参数kmeans为已经训练好的k-means模型。
"""
while True:
data_str = input('请输入黏度(mp*s)与密度(kg/l),以逗号分隔:(输入exit以停止)')
if data_str == 'exit':
break
data = np.array([list(map(float, data_str.split(',')))])
label = kmeans.predict(data)[0]
center_idx = np.argmin(np.sum(np.square(kmeans.cluster_centers_ - data), axis=1))
print('该数据所属类别为:', label, ',模糊判断到聚类中心:', center_idx)
print('对应表格中的转速和时间范围为:', df.iloc[kmeans.labels_ == label, 3:5].values)
```
这个函数使用了一个无限循环,每次循环都会让用户输入一组黏度和密度数据,使用k-means算法对数据进行聚类,并输出聚类结果及对应的转速和时间范围。如果用户输入`exit`,函数会退出循环。注意,在这个函数中,我们使用了`kmeans.cluster_centers_`来获取聚类中心,而不是之前的`centers`变量。
阅读全文