python谱聚类算法_谱聚类python实践

聚类后:

# -*- coding: utf-8 -*-

"""

Created on 09 05 2017

@author: similarface

"""

import numpy as np

import matplotlib.pyplot as plt

import mpl_toolkits.mplot3d.axes3d as p3

from sklearn import datasets

from sklearn import metrics

from sklearn.cluster import SpectralClustering

#500 个样本 3个特征 6个中心 方差数据的离散程度

X, y = datasets.make_blobs(n_samples=500, n_features=3, centers=6, cluster_std=[1.4, 0.3, 1.4, 0.3, 0.4, 0.9],random_state=11)

xx, yy, zz = X[:, 0], X[:, 1], X[:, 2]

# 创建一个三维的绘图工程

ax = plt.subplot(111, projection='3d')

# 将数据点分成三部分画,在颜色上有区分度

# 绘制数据点

ax.scatter(xx, yy, zz, c='y')

# 坐标轴

ax.set_zlabel('Z')

ax.set_ylabel('Y')

ax.set_xlabel('X')

plt.show()

#为了区分 聚类成5个类

y_pred = SpectralClustering(n_clusters=5, gamma=0.1).fit_predict(X)

fig = plt.figure()

ax = p3.Axes3D(fig)

ax.view_init(7, -80)

for l in np.unique(y_pred):

ax.scatter(X[y_pred == l, 0], X[y_pred == l, 1], X[y_pred == l, 2],color=plt.cm.jet(float(l) / np.max(y_pred + 1)),s=20, edgecolor='k')

plt.title(u'谱聚类')

plt.show()

#交叉计算 簇个数 以及RBF的 参数值 最后的max(Calinski-Harabasz Score) 为最佳

# for index, gamma in enumerate((0.01,0.1,1,10)):

# for index, k in enumerate((3,4,5,6)):

# y_pred = SpectralClustering(n_clusters=k, gamma=gamma).fit_predict(X)

# print "Calinski-Harabasz Score with gamma=", gamma, "n_clusters=", k,"score:", metrics.calinski_harabaz_score(X, y_pred)

'''

http://www.cnblogs.com/pinard/p/6221564.html

'''

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值