模糊聚類演算法(FCM)和硬聚類演算法(HCM)的VB6.0實現及其應用
If ArrayRange(Data) <> 2 Then
Fcm.ErrMsg = "資料只能為二維陣列"
Exit Function
End If
Dim i As Long, j As Long, k As Long, l As Long, m As Long
Dim DataNumber As Long, DataSize As Long
Dim Temp As Double, Sum1 As Double, Sum2 As Double, Sum3 As Double, Index As Integer
Dim OldCenter() As Double
Fcm.TimeUse = GetTickCount
DataNumber = UBound(Data, 1): DataSize = UBound(Data, 2)
ReDim Fcm.center(1 To Cluster, 1 To DataSize) As Double
ReDim Fcm.Degree(1 To Cluster, 1 To DataNumber) As Double
ReDim Fcm.Class(1 To DataNumber) As Byte
ReDim OldCenter(1 To Cluster, 1 To DataSize) As Double
On Error GoTo ErrHandle:
Randomize
If CreateIniCenter = CreateRandom Then
For i = 1 To Cluster
For j = 1 To DataSize
OldCenter(i, j) = Data(Rnd * DataNumber, j) '產生隨機初始中心點
Next
Next
ElseIf CreateIniCenter = CreateByHcm Then
Dim HcmCenter As HcmInfo
HcmCenter = Hcm(Data, Cluster)
For i = 1 To Cluster
For j = 1 To DataSize
OldCenter(i, j) = HcmCenter.center(i, j) '產生HCM初始中心點
Next
Next
ElseIf CreateIniCenter = CreateByRandomZadeh Then
ReDim RndDegree(1 To Cluster, 1 To DataNumber) As Double
Dim RndSum As Double
For i = 1 To Cluster
For j = 1 To DataNumber
RndDegree(i, j) = Rnd '建立隨機的隸屬度
Next
Next
For j = 1 To DataNumber
RndSum = 0
For i = 1 To Cluster
RndSum = RndSum + RndDegree(i, j)
Next
For i = 1 To Cluster
RndDegree(i, j) = RndDegree(i, j) / RndSum '隸屬度矩陣每列之後必須為1
Next
Next
For i = 1 To Cluster
For j = 1 To DataSize
Sum1 = 0: Sum2 = 0
For k = 1 To DataNumber
Temp = Exp(Log(RndDegree(i, k)) * Exponent) '其實就是RndDegree(i, k)^Exponent
Sum1 = Sum1 + Temp * Data(k, j) '隸屬度的平方乘以數值
Sum2 = Sum2 + Temp '隸屬度的和
Next
OldCenter(i, j) = Sum1 / Sum2 '得到聚類中心
Next
Next
ElseIf CreateIniCenter = CreateByHand Then
If IsMissing(CenterByHandle) Then
Fcm.ErrMsg = "請提供初始聚類中心。."
Exit Function
ElseIf UBound(CenterByHandle, 1) <> Cluster Or UBound(CenterByHandle, 2) <> DataSize Then
Fcm.ErrMsg = "手工提供的初始聚類中心維數有錯誤."
Exit Function
End If
For i = 1 To Cluster
For j = 1 To DataSize
OldCenter(i, j) = CenterByHandle(i, j)
Next
Next
End If
相關推薦
模糊聚類演算法(FCM)和硬聚類演算法(HCM)的VB6.0實現及其應用
Private Function Fcm(ByRef Data() As Double, ByVal Cluster As Long, Optional ByVal CreateIniCenter As IniCenterMethod = IniCenterMethod.CreateByHcm, Option
java中接口(interface)和虛基類(abstract class)的區別
private 特定 知識庫 價值 ceo 實現 相互 定義 協調 在Java語言中,abstract class和interface是支持抽象類定義的兩種機制。正是由於這兩種機制的存在,才賦予了Java強大的面向對象能力。abstract class和interface之
先來先服務演算法(FCFS)和 短作業優先演算法(SJF)
先來先服務演算法(FCFS) FCFS是最簡單的排程演算法,既可以用作作業排程,也可以用作程序排程 這種演算法優先考慮系統中等待時間最長的作業(程序),而不管作業所需執行時間長短, 做法是從後備佇列中選擇幾個最先進入該佇列的作業,將它們調入記憶體,為它們分配資源和建
圖的遍歷演算法-深度優先搜尋演算法(dfs)和廣度優先搜尋演算法(bfs)
一、前提須知圖是一種資料結構,一般作為一種模型用來定義物件之間的關係或聯絡。物件:頂點(V)表示;物件之間的關係或者關聯:通過圖的邊(E)來表示。一般oj題中可能就是點與點,也有可能是具體生活中的物體圖
短路與&&(或 ||)和非短路與&(或 |)的區別
static ole pri args 驗證 java system string rgs 短路與是JAVA語言中的一個邏輯運算符,記作&& A&&B, 當A為false時,不去計算B的值而直接返回false;當A為true時,計算B的值。
說明反轉控制(IOC)和面向方向編程(AOP)在spring中的應用
cto 代碼 規範 factory 聲明式 控制 反轉 反轉控制 方向 說明反轉控制(IOC)和面向方向編程(AOP)在spring中的應用 解答:Spring 核心容器(Core)提供Spring框架的基本功能。核心容器的主要組件是BeanFactory,它是工廠模式
全國外語水平考試(WSK)和全國英語等級考試(PETS)的關係是什麼?
全國外語水平考試(WSK)是教育部舉辦的主要用於考查國家公派出國留學人員外語水平的考試,共包括英語(PETS- 5)、法語(TNF)、德語(NTD)、日語(NNS)和俄語(TПPЯ)五個語種的水平考試。從1999年9月開始,全國英語等級考試(PETS)第五級正式替代原有的公派出國留學人員英語水平考試(WSK.
序列模型(5)-----雙向神經網路(BRNN)和深層迴圈神經網路(Deep RNN)
一、雙向迴圈神經網路BRNN 採用BRNN原因: 雙向RNN,即可以從過去的時間點獲取記憶,又可以從未來的時間點獲取資訊。為什麼要獲取未來的資訊呢? 判斷下面句子中Teddy是否是人名,如果只從前面兩個詞是無法得知Teddy是否是人名,如果能有後面的資訊就很好判斷了,這就需要用的雙向迴圈神經網路。
市場塵埃中的黃金?為什麼要價值投資以太幣(ETH)和艾達幣CARDANO (ADA)
以太幣(ETH)價格最近持續下滑,在業界引起各種猜測,甚至有人預測以太幣會歸零;雖然其他分散式應用(Dapp)平臺的崛起現在很普遍,但以太幣不會歸零,而可能會再次上升到前所未有的水平。 為什麼這樣說?我們可以來看一下為什麼今天市場上有這麼多 “ 以太坊殺手”。
圖的深度優先遍歷(DFS)和廣度優先遍歷(BFS)
1 建立測試圖(鄰接矩陣和鄰接表儲存形式) 首先建立一個圖用於後續程式碼的測試,在此以無向圖為例,且所有邊的權值都為1。儲存方式分別為鄰接矩陣和鄰接表(見上一篇介紹) 鄰接矩陣: class Graph{ constructor(v,vr){ let len = v.le
使用樹莓派(RaspberryPi)和ssr進行免流 (西電)
使用樹莓派(RaspberryPi)進行免流 (西電) 安裝ubuntu系統 由於樹莓派官方的系統相容性並不是很好,所以還是刷一個比較穩定的ubuntu 下載所需要的映象檔案: 訪問此網站下載所需要的映象檔案,我所下載的是ubuntu-16.04-prei
C++中堆(heap)和棧(stack)的區別(面試中被問到的題目)
說起會了解這個東西,還是比較尷尬的,在學校裡面老師一般不會講解C++的堆和棧,大多數人瞭解的堆和棧是資料結構裡面的概念,而這裡一般面試官想問的是C++的記憶體分割槽管理方式。 首先說明,在C++中,記憶體分為5個區:堆、佔、自由儲存區、全域性/靜態儲存區、常量儲存區 棧:
oracle叢集(RAC)和主備資料同步(DataGuard)思路
Oracle主備庫資料同步使用DataGuard。Data Guard 是Oracle的遠端複製技術,它有物理和邏輯之分,但是總的來說,它需要在異地有一套獨立的系統,這是兩套硬體配置可以不同的系統,但是這兩套系統的軟體結構保持一致,包括軟體的版本,目錄儲存結構,以及資料的
寬字元(unicode)和多位元組的轉換(std::string與std::wstring轉換)
#include <string> #include <windows.h> using namespace std; //Converting a WChar string to a Ansi string std::string W
一維插值(interp1)和二維插值(interp2)
一、一維插值 1.定義 插值:已知f(x)的N個數據點,f(x)不知道。根據N個數據點估計任意點的函式值f(x)。 2. interp1函式 呼叫格式: yi = interp1(x,y,xi,method) 其中x,y為已知的資料點,通常xi為比x更加密集的資料點,
Linux 中 ln 軟連線(-s) 和 硬連線(-d) 的區別
軟連線 先說軟連線,一個認為這個比較好理解,一個也是因為柿子專挑軟的捏啊,哈哈,建立一個軟連線的命令: 【ln -s 原始檔名 軟連線檔名】 使用ls命令檢視檔案資訊可以驗證一下,對檔案和目錄都可以建立軟連線 在網上看到很多人說快捷方式這個比喻,個人認
圖的深度優先遍歷(DFS)和廣度優先遍歷(BFS)--解析
圖的資料結構不像二叉樹那樣,有明顯的父子節點和兄弟節點的關係,它只有一個關係就是鄰接關係。故對圖中頂點的訪問要採用標誌陣列(來確定改結點是否被訪問,去除重複訪問)。並且對圖的深度遍歷採用遞迴的方式是較高效的。 1.深度遍歷(DFS) #include<iostream
理清jsp的filter(過濾器)和struct2的攔截器(Interceptor)
先放著,待會寫 先記住下面這幾點: 1、filter是servlet,jsp裡面的東西,應該說是屬於規範了,而攔截器是struts的東西,不通用。 2、一個請求,get,post等方式,到後臺,必須先經過filter,然後經過Interceptor,最後在通過在filter
二叉樹的深度優先遍歷(棧)和廣度優先遍歷(佇列)
前序,中序和後序遍歷都是深度優先遍歷的特例 :所以直接先序中序後續遍歷也可以 深度優先遍歷(棧,先壓右節點,再壓左節點) 也就深入的遍歷,沿著每一個分支直到走到最後,然後才返回來遍歷剩餘的節點。二叉樹不同於圖,圖需要標記節點是否已經訪問過,因為可能會存在環,而二叉樹不會
單軸快排(SinglePivotQuickSort)和雙軸快排(DualPivotQuickSort)及其JAVA實現
快速排序使用的是分治思想,將原問題分成若干個子問題進行遞迴解決。通過一趟排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序,整個排序過程可以遞迴進行,以此達到整個資料變成有序序列