for i in range(len(lis)): for k in range(len(lis[i])): lis[i][k]=dic[lis[i][k]] return lis if __name__ == "__main__": data=np.array([[1772.14,568.25,298.66,352.20,307.21,490.83,364.28,202.50], # 辽宁 # 原始样本矩阵 [2752.25,569.95,662.31,541.06,623.05,917.23,599.98,354.39], # 浙江 [1386.76,460.99,312.97,280.78,246.24,407.26,547.19,188.52], # 河南 [1552.77,517.16,402.03,272.44,265.29,563.10,302.27,251.41], # 甘肃 [1711.03,458.57,334.91,307.24,297.72,495.34,274.48,306.45]]) # 青海 # 总计5个样本 dic={0:'辽宁',1:'浙江',2:'河南',3:'甘肃',4:'青海'} scm=SCM.SCM(classdist='nearest', sampledist='euc') res=scm.fit(data,kind=5) # 获得分类后的样本下标 res=replace(res,dic) # 替换样本下标为样本标签名 print("分为5类结果 res = :",res) res=scm.fit(data,kind=4) # 获得分类后的样本下标 res=replace(res,dic) # 替换样本下标为样本标签名 print("分为4类结果 res = :",res) res=scm.fit(data,kind=3) # 获得分类后的样本下标 res=replace(res,dic) # 替换样本下标为样本标签名 print("分为3类结果 res = :",res) res=scm.fit(data,kind=2) # 获得分类后的样本下标 res=replace(res,dic) # 替换样本下标为样本标签名
if __name__ == "__main__": data = np.array([[1, 3, 5, 7, 9], [2, 4, 6, 8, 10], [1, 4, 5, 8, 9], [1100, 1300, 1500, 1700, 1900], [1200, 1400, 1600, 1800, 2000], [1100, 1400, 1500, 1800, 1900], [11000, 13000, 15000, 17000, 19000], [12000, 14000, 16000, 18000, 20000], [11000, 14000, 15000, 18000, 19000]]) #12个样本,明显属于3类 # 1. 欧氏距离 print("欧氏距离测试: ") scm = SCM.SCM(classdist='nearest', sampledist='euc') res = scm.fit(data, kind=3) print("样本间欧氏距离+类间最近距离: res = ", res) scm = SCM.SCM(classdist='farthest', sampledist='euc') res = scm.fit(data, kind=3) print("样本间欧氏距离+类间最远距离: res = ", res) scm = SCM.SCM(classdist='average', sampledist='euc') res = scm.fit(data, kind=3) print("样本间欧氏距离+类间平均距离: res = ", res) scm = SCM.SCM(classdist='centroid', sampledist='euc') res = scm.fit(data, kind=3) print("样本间欧氏距离+类间重心距离: res = ", res)