资源简介

压缩包中包含算法的Python实现代码、测试数据集及运行结果,可供感兴趣的同学参考。因为现在的实现并不能对所有的数据集都得到良好的效果,所以如果哪位同学有更好的想法,希望能不吝赐教。

资源截图

代码片段和文件信息

# -*- coding: utf-8 -*-
“““
Created on Mon Oct 20 13:38:18 2014

@author: Shaobo
The best of all
“““

import numpy as np
import matplotlib.pyplot as plt
import random

MAX = 1000000

def nearestNeighbor(index):
    dd = MAX
    neighbor = -1
    for i in range(length):
        if dist[index i] < dd and rho[index] < rho[i]:
            dd = dist[index i]
            neighbor = i
    if result[neighbor] == -1:
        result[neighbor] = nearestNeighbor(neighbor)
    return result[neighbor]

#Read data
fileName = raw_input(“Enter the file‘s name: “)
location = []
label = []
for line in open(fileName “r“):
    items = line.strip(“\n“).split(““)
    label.append(int(items.pop()))
    tmp = []
    for item in items:
        tmp.append(float(item))
    location.append(tmp)
location = np.array(location)
label = np.array(label)
length = len(location)

#Caculate distance
dist = np.zeros((length length))
ll = []
begin = 0
while begin < length-1:
    end = begin + 1
    while end < length:
        dd = np.linalg.norm(location[begin]-location[end])
        dist[begin][end] = dd
        dist[end][begin] = dd
        ll.append(dd)
        end = end + 1
    begin = begin + 1
ll = np.array(ll)
# Algorithm        
#percent = float(raw_input(“Enter the average percentage of neighbours: “))
percent = 2.0
position = int(len(ll) * percent / 100)
sortedll = np.sort(ll)
dc = sortedll[position] #阈值
#求点的局部密度(local density)
rho = np.zeros((length 1))
begin = 0
while begin < length-1:
    end = begin + 1
    while end < length:
        rho[begin] = rho[begin] + exp(-(dist[begin][end]/dc) ** 2)
        rho[end] = rho[end] + exp(-(dist[begin][end]/dc) ** 2)
        #if dist[begin][end] < dc:
        #    rho[begin] = rho[begin] + 1
        #    rho[end] = rho[end] + 1
        end = end + 1
    begin = begin + 1

#求比点的局部密度大的点到该点的最小距离
delta = np.ones((length 1)) * MAX
maxDensity = np.max(rho)
begin = 0
while begin < length:
    if rho[begin] < maxDensity:
        end = 0
        while end < length:
            if rho[end] > rho[begin] and dist[begin][end] < delta[begin]:
                delta[begin] = dist[begin][end]
            end = end + 1
    else:
        delta[begin] = 0.0
        end = 0
        while end < length:
            if dist[begin][end] > delta[begin]:
                delta[begin] = dist[begin][end]
            end = end + 1
    begin = begin + 1

rate1 = 0.6
#Aggregation Spiral 0.6
#Jain Flame 0.8
#D31 0.75
#R15 0.6
#Compound 0.5
#Pathbased 0.2
thRho = rate1 * (np.max(rho) - np.min(rho)) + np.min(rho)

rate2 = 0.2
#Aggregation Spiral 0.2
#Jain Flame 0.2
#D31 0.05
#R15 0.1
#Compound 0.08
#Pathbased 0.4
thDel = rate2 * (np.max(delta) - np.min(delta)) + np.min(delta)

#确定聚类中心
result = np.ones(length dtype=np.int) * (-1)
center = 0
#items = range(length)
#random.shuffle(items)
for i in range(length): #items:
    if rho[i] > thRho and delta

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2014-10-22 22:46  算法的python实现代码、测试数据集及结果\
     文件       10427  2014-10-18 10:10  算法的python实现代码、测试数据集及结果\Aggregation.txt
     文件     1904194  2014-10-20 14:05  算法的python实现代码、测试数据集及结果\Aggregation结果_v3.tif
     文件        4053  2014-10-20 21:24  算法的python实现代码、测试数据集及结果\Clustering_v3.py
     文件        5421  2014-10-18 20:05  算法的python实现代码、测试数据集及结果\Compound.txt
     文件     1904194  2014-10-20 17:56  算法的python实现代码、测试数据集及结果\Compound结果_v3.tif
     文件       59098  2014-10-18 20:05  算法的python实现代码、测试数据集及结果\D31.txt
     文件     1904194  2014-10-20 14:22  算法的python实现代码、测试数据集及结果\D31结果_v3.tif
     文件        3127  2014-10-18 20:06  算法的python实现代码、测试数据集及结果\Flame.txt
     文件     1904194  2014-10-20 17:55  算法的python实现代码、测试数据集及结果\Flame结果_v3.tif
     文件        4933  2014-10-18 20:06  算法的python实现代码、测试数据集及结果\Jain.txt
     文件     1904194  2014-10-20 17:53  算法的python实现代码、测试数据集及结果\Jain结果_v3.tif
     文件        4085  2014-10-18 20:06  算法的python实现代码、测试数据集及结果\Pathbased.txt
     文件     1904194  2014-10-20 17:51  算法的python实现代码、测试数据集及结果\Pathbased结果_v3.tif
     文件        9548  2014-10-18 20:07  算法的python实现代码、测试数据集及结果\R15.txt
     文件     1904194  2014-10-20 14:11  算法的python实现代码、测试数据集及结果\R15结果_v3.tif
     文件        4200  2014-10-18 20:07  算法的python实现代码、测试数据集及结果\Spiral.txt
     文件     1904194  2014-10-20 14:00  算法的python实现代码、测试数据集及结果\Spiral结果_v3.tif

评论

共有 条评论