聚类 k-cost折线图+tsne可视化

# coding=utf-8
 
from sklearn.manifold import TSNE 
from pandas.core.frame import DataFrame
import pandas as pd  
import numpy as np 
 
import km as k 
#用TSNE进行数据降维并展示聚类结果
 
tsne = TSNE()
tsne.fit_transform(k.data_zs) #进行数据降维,并返回结果
tsne = pd.DataFrame(tsne.embedding_, index = k.data_zs.index) #转换数据格式
 
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号
 
#不同类别用不同颜色和样式绘图
d = tsne[k.r[u'聚类类别']== 0]     #找出聚类类别为0的数据对应的降维结果
plt.plot(d[0], d[1], 'r.')
d = tsne[k.r[u'聚类类别'] == 1]
plt.plot(d[0], d[1], 'go')
#d = tsne[k.r[u'聚类类别'] == 2]
#plt.plot(d[0], d[1], 'b*')
plt.savefig("data.png")
plt.show()
import pandas as pd
from kmodes.kprototypes import KPrototypes
import matplotlib.pyplot as plt



data = pd.read_csv('./100chuanbingan.csv')
kp = KPrototypes(n_clusters=4, init='Huang', n_init=5, verbose=1)
kp.fit(data, categorical=[0, 1, 2, 3, 5, 7])


# 简单打印结果
r1 = pd.Series(kp.labels_).value_counts()  # 统计各个类别的数目
print(r1)
print(kp.cluster_centroids_)
#r2 = pd.DataFrame(kp.cluster_centroids_)  # 找出聚类中心
#r = pd.concat([r2, r1], axis=1)  # 横向连接(0是纵向),得到聚类中心对应的类别下的数目
#print('data_zs')
#print(r)
#r.columns = list(data.columns) + [u'类别数目']  # 重命名表头
#print(r)
# 详细输出原始数据及其类别

r = pd.concat([data, pd.Series(kp.labels_, index=data.index)], axis=1)  # 详细输出每个样本对应的类别
r.columns = list(data.columns) + [u'聚类类别']  # 重命名表头
r.to_excel('./k为4聚类结果.xls')  # 保存结果


#cost.append(kp.cost_)
#print(kp.cost_)

# for i in range(2, 20):
#     kp = KPrototypes(n_clusters=i, init='Huang', n_init=5, verbose=1)
#     kp.fit(data, categorical=[0, 1, 2, 3, 5, 7])
#     cost.append(kp.cost_)
#     print(cost)
#
# print(cost)
# x = range(2, 20)
# plt.plot(x, cost)
# plt.show()

 

import pandas as pd from sklearn.cluster import KMeans import matplotlib.pyplot as plt import numpy as np from sklearn.preprocessing import StandardScaler from sklearn import metrics beer=pd.read_csv('data.txt',encoding='gbk',sep='') X=beer[["calories","sodium","alcohol","cost"]] km=KMeans(n_clusters=3).fit(X) beer['cluster']=km.labels_ centers=km.cluster_centers_ plt.rcParams['font.size']=14 colors=np.array(['red','green','blue','yellow']) plt.scatter(beer["calories"], beer["alcohol"], c=colors[beer["cluster"]]) plt.scatter(centers[:,0], centers[:,2], linewidths=3,marker='+',s=300,c='black') plt.xlabel("Calories") plt.ylable("Alcohol") plt.suptitle("Calories and Alcohol") pd.plotting.scatter_matrix(beer[["calories", "sodium","alcohol","cost"]],s=100,alpha=1,c=colors[beer["cluster"]],figsize=(10,10)) plt.suptitle("original data") scaler=StandardScaler() X_scaled=scaler.fit_transform(X) km=KMeans(n_clusters=3).fit(X_scaled) beer["scaled_cluster"]=km.labels_ centers=km.cluster_centers_ pd.plotting.scatter_matrix(X, c=colors[beer.scaled_cluster],alpha=1,figsize=(10,10),s=100) plt.suptitle("standard data") score_scaled=metrics.silhouette_score(X, beer.scaled_cluster) score=metrics.silhouette_score(X, beer.cluster) print("得分为",score_scaled,score) scores=[] for k in range(2,20): labels=KMeans(n_clusters=k).fit(X).labels_ score=metrics.silhouette_score(X, labels) scores.append(score) for i in range(len(scores)): print((i+2,scores[i])) print(max(scores[i])) plt.figure() plt.plot(list(range(2,20)), scores,"ro") plt.xlabel("Number of Clusters Initialized") plt.ylabel("Sihouette Score") plt.suptitle("K parameter optimize") plt.show() scores=[] for k in range(2,20): labels=KMeans(n_clusters=k).fit(X_scaled).labels_ score=metrics.silhouette_score(X_scaled, labels) scores.append(score) for i in range(len(scores)): print((i+2,scores[i]))
07-09
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值