日常学习记录——优化数据预处理
·
1 确认聚类中心
对西瓜数据集的密度属性和含糖量属性分别进行3类聚,从而得到两个属性模糊子集的判断临界点。
"""属性数据进行聚类"""
# 读取原始数据集
X = readDataSet().data
print(X)
# 密度数据聚类
x1 = [n[0] for n in X]
y1 = np.array(x1).reshape(-1, 1)
km1 = KMeans(n_clusters=3)
km1.fit(y1)
k1 = sorted(km1.cluster_centers_)
print(k1)
# 含糖量数据聚类
x2 = [n[1] for n in X]
y2 = np.array(x2).reshape(-1, 1)
km2 = KMeans(n_clusters=3)
km2.fit(y2)
k2 = sorted(km2.cluster_centers_)
print(k2)
2 一维数组的聚类
这里参照的是这篇博客:聚类实战:一维数组数据聚类
使用的是方法一:采用K-Means对一维数据聚类:
x1 = [n[0] for n in X] # X 是之前读取自定义数据集返回来的data,即[[密度1,含糖量1],[密度2,含糖量2],...]
y1 = np.array(x1).reshape(-1, 1) # 这个格式转换我也不太理解,但是如果不这样的话,就类聚不成功了。
km1 = KMeans(n_clusters=3)
km1.fit(y1)
k1 = sorted(km1.cluster_centers_) # 对3个类聚中心进行从低到高的排序
print(k1)
3 类聚加模糊化处理完整代码
类聚加模糊化处理完整代码:
def main():
"""属性数据进行聚类"""
# 读取原始数据集
X = readDataSet().data
print(X)
# 密度数据聚类
x1 = [n[0] for n in X]
y1 = np.array(x1).reshape(-1, 1)
km1 = KMeans(n_clusters=3)
km1.fit(y1)
k1 = sorted(km1.cluster_centers_)
print(k1)
# 含糖量数据聚类
x2 = [n[1] for n in X]
y2 = np.array(x2).reshape(-1, 1)
km2 = KMeans(n_clusters=3)
km2.fit(y2)
k2 = sorted(km2.cluster_centers_)
print(k2)
preDataSet(k1, k2) # 数据模糊化
运行结果:


4 问题记录
1、想要将标签列通过程序写入模糊数据表中,但是很多次都无果,以前都是复制粘贴的,虽然手动复制粘贴也没有什么错,就是看着不太聪明的样子。再看看有没有办法解决这个问题,如果不能的话先不在这里耗费时间了。
2、K-Means好像只能对列向量进行处理?
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)