神經網路流程圖
㈠ 數據挖掘的基本流程是什麼
數據挖掘有很多不同的實施方法,如果只是把數據拉到Excel表格中計算一下,那隻是數據分析,不是數據挖掘。本節主要講解數據挖掘的基本規范流程。CRISP-DM和SEMMA是兩種常用的數據挖掘流程。
從數據本身來考慮,數據挖掘通常需要有信息收集、數據集成、數據規約、數據清理、數據變換、數據挖掘實施過程、模式評估和知識表示8個步驟。
步驟(1)信息收集:根據確定的數據分析對象,抽象出在數據分析中所需要的特徵信息,然後選擇合適的信息收集方法,將收集到的信息存入資料庫。對於海量數據,選擇一個合適的數據存儲和管理的數據倉庫是至關重要的。
步驟(2)數據集成:把不同來源、格式、特點性質的數據在邏輯上或物理上有機地集中,從而為企業提供全面的數據共享。
步驟(3)數據規約:如果執行多數的數據挖掘演算法,即使是在少量數據上也需要很長的時間,而做商業運營數據挖掘時數據量往往非常大。數據規約技術可以用來得到數據集的規約表示,它小得多,但仍然接近於保持原數據的完整性,並且規約後執行數據挖掘結果與規約前執行結果相同或幾乎相同。
步驟(4)數據清理:在資料庫中的數據有一些是不完整的(有些感興趣的屬性缺少屬性值)、含雜訊的(包含錯誤的屬性值),並且是不一致的(同樣的信息不同的表示方式),因此需要進行數據清理,將完整、正確、一致的數據信息存入數據倉庫中。不然,挖掘的結果會差強人意。
步驟(5)數據變換:通過平滑聚集、數據概化、規范化等方式將數據轉換成適用於數據挖掘的形式。對於有些實數型數據,通過概念分層和數據的離散化來轉換數據也是重要的一步。
步驟(6)數據挖掘過程:根據數據倉庫中的數據信息,選擇合適的分析工具,應用統計方法、事例推理、決策樹、規則推理、模糊集,甚至神經網路、遺傳演算法的方法處理信息,得出有用的分析信息。
步驟(7)模式評估:從商業角度,由行業專家來驗證數據挖掘結果的正確性。
步驟(8)知識表示:將數據挖掘所得到的分析信息以可視化的方式呈現給用戶,或作為新的知識存放在知識庫中,供其他應用程序使用。
數據挖掘過程是一個反復循環的過程,每一個步驟如果沒有達到預期目標,都需要回到前面的步驟,重新調整並執行。不是每件數據挖掘的工作都需要這里列出的每一步,例如在某個工作中不存在多個數據源的時候,步驟(2)便可以省略。
步驟(3)數據規約、步驟(4)數據清理、步驟(5)數據變換又合稱數據預處理。在數據挖掘中,至少60%的費用可能要花在步驟(1)信息收集階段,而其中至少60%以上的精力和時間花在了數據預處理過程中。
㈡ 數學建模里人工神經網路到底是什麼流程,數據預處理,隱層數,權值,傳輸函數是什麼關系。這個模型的作用
關系實際上就是關系模式在某一時刻的狀態或內容。也就是說,關系模式是版型,關系是它的值。關系權模式是靜態的、穩定的,而關系是動態的、隨時間不斷變化的,因為關系操作在不斷地更新著資料庫中的數據。
但在實際當中,常常把關系模式和關系統稱為關系,讀者可以從上下文中加以區別。
㈢ 數據挖掘的方法及實施
數據挖掘的方法及實施
作為一門處理數據的新興技術,數據挖掘有許多的新特徵。首先,數據挖掘面對的是海量的數據,這也是數據挖掘產生的原因。其次,數據可能是不完全的、有雜訊的、隨機的,有復雜的數據結構,維數大。最後,數據挖掘是許多學科的交叉,運用了統計學,計算機,數學等學科的技術。以下是常見和應用最廣泛的演算法和模型:
傳統統計方法:①抽樣技術:我們面對的是大量的數據,對所有的數據進行分析是不可能的也是沒有必要的,就要在理論的指導下進行合理的抽樣。②多元統計分析:因子分析,聚類分析等。③統計預測方法,如回歸分析,時間序列分析等。
可視化技術:用圖表等方式把數據特徵用直觀地表述出來,如直方圖等,這其中運用的許多描述統計的方法。可視化技術面對的一個難題是高維數據的可視化。
決策樹:利用一系列規則劃分,建立樹狀圖,可用於分類和預測。常用的演算法有CART、CHAID、ID3、C4.5、C5.0等。
神經網路:模擬人的神經元功能,經過輸入層,隱藏層,輸出層等,對數據進行調整,計算,最後得到結果,用於分類和回歸。
遺傳演算法:基於自然進化理論,模擬基因聯合、突變、選擇等過程的一種優化技術。
關聯規則挖掘演算法:關聯規則是描述數據之間存在關系的規則,形式為「A1∧A2∧…An→B1∧B2∧…Bn」。一般分為兩個步驟:①求出大數據項集。②用大數據項集產生關聯規則。
除了上述的常用方法外,還有粗集方法,模糊集合方法,Bayesian Belief Netords,最鄰近演算法(k-nearest neighbors method(KNN))等。
數據挖掘的實施流程
前面我們討論了數據挖掘的定義,功能和方法,現在關鍵的問題是如何實施,其一般的數據挖掘流程如下:
問題理解和提出→數據准備→數據整理→建立模型→評價和解釋
問題理解和提出:在開始數據挖掘之前最基礎的就是理解數據和實際的業務問題,在這個基礎之上提出問題,對目標有明確的定義。
數據准備:獲取原始的數據,並從中抽取一定數量的子集,建立數據挖掘庫,其中一個問題是如果企業原來的數據倉庫滿足數據挖掘的要求,就可以將數據倉庫作為數據挖掘庫。
數據整理:由於數據可能是不完全的、有雜訊的、隨機的,有復雜的數掘結構,就要對數據進行初步的整理,清洗不完全的數據,做初步的描述分析,選擇與數據挖掘有關的變數,或者轉變變數。
建立模型:根據數據挖掘的目標和數據的特徵,選擇合適的模型。
評價和解釋:對數據挖掘的結果進行評價,選擇最優的模型,作出評價,運用於實際問題,並且要和專業知識結合對結果進行解釋。
以上的流程不是一次完成的,可能其中某些步驟或者全部要反復進行。
㈣ 基於BP神經網路識別火災的模型的研究 用LABVIEW建模進行模擬,誰能告訴我大概是個什麼流程,論文寫到硬體
挽尊薩達是倒薩倒薩
㈤ 有沒有專業神經網路圖可視化的軟體
Edraw max可以用來製作網路圖,操作簡單,內置的模板,也可以繪制流程圖,思維導圖。
㈥ 訓練好的BP網路 想用在simulink中做成一個模塊 連接到系統控制框圖中 用來根據輸入預估輸出 應該怎麼辦
我寫一個簡單的你看看吧
%S-function for continuous state equation
function [sys,x0,str,ts]=qq(t,x,u,flag)
switch flag,
%Initialization
case 0,
[sys,x0,str,ts]=mdlInitializeSizes;%初始化
%Outputs
case 3,
sys=mdlOutputs(t,x,u);%求系統的輸出信號
%Unhandled flags%未定義的flag
case {2, 4, 9 }
sys = [];
%Unexpected flags%錯誤處理
otherwise
error(['Unhandled flag = ',num2str(flag)]);
end
%mdlInitializeSizes
function [sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes;%讀入系統變數默認值
sizes.NumContStates = 0;%連續狀態
sizes.NumDiscStates = 0;%離散狀態
sizes.NumOutputs = 1;%輸出
sizes.NumInputs = 2;%輸入
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 0;%采樣周期的個數
sys=simsizes(sizes);
x0=[];
str=[];
ts=[];
function sys=mdlOutputs(t,x,u)
中間的寫自己想要的程序
sys(1)=u1;
sys(2)=u2
找一本simulink書看看吧
s函數目前支持flag={1,2,3,4,9}。在實際模擬過程中,會自動先flag賦值為0,進行初始化,在flag=3,計算輸出;一個模擬周期後會賦flag=1和2,更新系統的連續和離散狀態,再付flag=3計算輸出。周而復始的循環直至模擬結束flag=9,終止模擬。
希望對你有幫助
㈦ 如何使用visio畫神經網路
用普通流程圖就可以~~
你在線上標不就成么 那也有沒箭頭的連線
㈧ 面向對象程序設計的三大特點是什麼各自的特點又是什麼呢謝謝!
面向對象程序設計
作者:佚名 文章來源:不詳 點擊數:11677 更新時間:2005-10-14
作者:Ramchandra Garge
軟體危機(Software Crisis)
軟體技術總是處於不斷發展變化中,新工具、新技術相繼產生。這就要求軟體產業和軟體工程師們不停的尋求軟體設計和開發的新途徑。由於日益增長的軟體系統的復雜性和軟體產業內部愈演愈烈的競爭,這種要求變得更加緊迫。為了克服這種要求帶來的軟體危機,必須解決以下問題:
1、在系統設計中,如何表現問題的真實實體?
2、如何以開放的界面(interface)設計系統?
3、如何保證模塊(mole)的可重用性(reusability)和可擴展性(extensibility)?
4、如何開發能夠容忍(tolerant)未來可能的變化模塊?
5、如何提高軟體的生產力和減少軟體開銷?
6、如何管理進度表?
7、如何提高軟體質量?
8、如何將軟體開發過程工業化?
當軟體產品在未完成時、未被使用時或者帶著各種各樣的錯誤發布時,問題就會出現。另外,用戶需求的改變已經成為一個重要問題。多份關於軟體實現的報告顯示,在軟體產品發布和使用之前,需要仔細進行質量評估。通常狀態評估中應該考慮的質量因素包括:
1、正確性(Correctness)
2、可維護性(Maintainability)
3、可重用性(Reusability)
4、開放性(Openness)和可解釋性(Interpretability)
5、可移植性(Portability)
6、安全性(Security)
7、完整性(Integrity)
8、用戶友好性(User friendliness)
軟體演化(Software Evolution)
Ernest Tello——人工智慧領域的著名作家——將軟體技術的演化比喻為樹的生長。和樹一樣,軟體的演化具有明顯的階段性,這些階段稱為層(layer)。過去四十年中,這些層逐步被建立起來,每一個層都由前一個層發展而成。圖1顯示了這個過程。但是關於樹的比喻在遇到層的生命期的問題時失敗了。在軟體系統中,每個層都在持續的發揮作用,而在樹中,只有最上層的層才有用。
面向對象程序設計(OOP)是完成程序設計工作的新方法。自從計算機發明以來,為了適應程序復雜性的不斷增長,程序設計的方法有了戲劇性的變化。匯編語言被發明出來以後,程序員們總算可以用符號表示那些機器指令,從而可以編寫更長、更復雜的程序。當程序規模繼續不停增長的時候,高級語言被引入,為程序員們提供了更多工具對付日益增加的復雜性。第一個被普遍使用的語言是FORTRAN。不過雖然FORTRAN邁出了重大的第一步,但用它寫出的代碼很難說是清晰的和容易理解的。
1960年結構化程序設計思想誕生。C和Pascal等語言都大力提倡這種程序設計的方法。結構化程序設計語言使得編寫較復雜的程序變得容易。但是,一旦某個項目達到一定規模,即使使用結構化程序設計的方法,局勢仍將變得不可控制。
在程序設計方法發展過程中,每一次重大突破都使得程序員可以應對更大的復雜性。在這條道路上邁出的每一步中,新的方法都運用和發展了以前的方法中最好的理念。今天,許多項目的規模又進一步發展。為了解決這個問題,面向對象程序設計方法應運而生。
在詳細介紹面向對象程序設計之前,讓我們簡單了解一下面向過程程序設計的方法。在面向過程的程序設計方法中,問題被看作一系列將被完成的任務,如讀、計算和列印。許多函數用於完成這些任務。問題的焦點集中於函數。圖2顯示了一個典型的面向過程的程序結構。分層分解的技術被用來確定一系列需要被完成的任務,以解決特定的問題。
面向過程程序設計的基本任務是編寫計算機執行的指令序列,並把這些指令以函數的方式組織起來。通常我們使用流程圖組織這些行為(action),並描述從一個行為到另一個行為的控制流。
當我們集中精力開發函數的時候,很少會去注意那些被多個函數使用的數據(data)。在這些數據身上發生了什麼事情?那些使用這些數據的函數又對它們產生了什麼影響?
在多函數(multi-function)程序中,許多重要的數據被放置在全局數據區,這樣它們可以被所有的函數訪問。每個函數都可以具有它們自己的局部數據。圖3顯示了一個面向過程程序中函數和數據的關系。
面向對象程序設計模式
發明面向對象程序設計方法的主要出發點是彌補面向過程程序設計方法中的一些缺點。OOP把數據看作程序開發中的基本元素,並且不允許它們在系統中自由流動。它將數據和操作這些數據的函數緊密的連結在一起,並保護數據不會被外界的函數意外的改變。OOP允許我們將問題分解為一系列實體——這些實體被稱為對象(object),然後圍繞這些實體建立數據和函數。面向對象程序設計中的數據和函數的組織結構如圖4所示。
一個對象的數據不能訪問其它對象的函數,而一個對象的函數可以訪問其它對象的函數。
面向對象程序設計的一些顯著的特性包括:
·程序設計的重點在於數據而不是過程;
·程序被劃分為所謂的對象;
·數據結構為表現對象的特性而設計;
·函數作為對某個對象數據的操作,與數據結構緊密的結合在一起;
·數據被隱藏起來,不能為外部函數訪問;
·對象之間可以通過函數溝通;
·新的數據和函數可以在需要的時候輕而易舉的添加進來;
·在程序設計過程中遵循由下至上(bottom-up)的設計方法。
面向對象程序設計在程序設計模式中是一個新的概念,對於不同的人可能意味著不同的內容。因此在我們繼續下面的內容之前,最好給面向對象程序設計下一個定義。我們對面向對象程序設計的定義是「面向對象程序設計是一種方法,這種方法為數據和函數提供共同的獨立內存空間,這些數據和函數可以作為模板以便在需要時創建類似模塊的拷貝。這樣的程序設計方法稱為面向對象程序設計。」
從以上定義可以看到,一個對象被認為是計算機內存中的一個獨立區間,在這個區間中保存著數據和能夠訪問數據的一組操作。因為內存區間是相互獨立的,所以對象可以不經修改就應用於多個不同的程序中。
什麼是面向對象程序設計?
面向對象程序設計(OOP)技術汲取了結構化程序設計中好的思想,並將這些思想與一些新的、強大的理念相結合,從而給你的程序設計工作提供了一種全新的方法。通常,在面向對象的程序設計風格中,你會將一個問題分解為一些相互關聯的子集,每個子集內部都包含了相關的數據和函數。同時,你會以某種方式將這些子集分為不同等級,而一個對象就是已定義的某個類型的變數。當你定義了一個對象,你就隱含的創建了一個新的數據類型。
面向對象程序設計中的基本概念
「面向對象」作為一個術語,在不同的人群中有著不同的解釋。因此,了解一些在面向對象程序設計中廣泛應用的概念是必須的。本節我們討論以下這些內容:
1、對象(Object)
2、類(Class)
3、數據抽象(Data abstraction)
4、繼承(Inheritance)
5、動態綁定(Dynamic binding)
6、數據封裝(Data encapsulation)
7、多態性(Polymorphism)
8、消息傳遞(Message passing)
對象
在一個面向對象的系統中,對象是運行期的基本實體。它可以用來表示一個人或者說一個銀行帳戶,一張數據表格,或者其它什麼需要被程序處理的東西。它也可以用來表示用戶定義的數據,例如一個向量,時間或者列表。在面向對象程序設計中,問題的分析一般以對象及對象間的自然聯系為依據。如前所述,對象在內存中佔有一定空間,並且具有一個與之關聯的地址,就像Pascal中的record和C中的結構一樣。
當一個程序運行時,對象之間通過互發消息來相互作用。例如,程序中包含一個「customer」對象和一個「account」對象,而customer對象可能會向account對象發送一個消息,查詢其銀行帳目。每個對象都包含數據以及操作這些數據的代碼。即使不了解彼此的數據和代碼的細節,對象之間依然可以相互作用,所要了解的只是對象能夠接受的消息的類型,以及對象返回的響應的類型,雖然不同的人會以不同的方法實現它們。
類
我們剛才提到,對象包含數據以及操作這些數據的代碼。一個對象所包含的所有數據和代碼可以通過類來構成一個用戶定義的數據類型。事實上,對象就是類類型(class type)的變數。一旦定義了一個類,我們就可以創建這個類的多個對象,每個對象與一組數據相關,而這組數據的類型在類中定義。因此,一個類就是具有相同類型的對象的抽象。例如,芒果、蘋果和桔子都是fruit類的對象。類是用戶定義的數據類型,但在一個程序設計語言中,它和內建的數據類型行為相同。比如創建一個類對象的語法和創建一個整數對象的語法一模一樣。如果fruit被定義為一個類,那麼語句
fruit mango;
就創建了一個fruit類的對象mango。
數據抽象和封裝
把數據和函數包裝在一個單獨的單元(稱為類)的行為稱為封裝。數據封裝是類的最典型特點。數據不能被外界訪問,只能被封裝在同一個類中的函數訪問。這些函數提供了對象數據和程序之間的介面。避免數據被程序直接訪問的概念被稱為「數據隱藏」。
抽象指僅表現核心的特性而不描述背景細節的行為。類使用了抽象的概念,並且被定義為一系列抽象的屬性如尺寸、重量和價格,以及操作這些屬性的函數。類封裝了將要被創建的對象的所有核心屬性。因為類使用了數據抽象的概念,所以它們被稱為抽象數據類型(ADT)。
封裝
封裝機制將數據和代碼捆綁到一起,避免了外界的干擾和不確定性。它同樣允許創建對象。簡單的說,一個對象就是一個封裝了數據和操作這些數據的代碼的邏輯實體。
在一個對象內部,某些代碼和(或)某些數據可以是私有的,不能被外界訪問。通過這種方式,對象對內部數據提供了不同級別的保護,以防止程序中無關的部分意外的改變或錯誤的使用了對象的私有部分。
繼承
繼承是可以讓某個類型的對象獲得另一個類型的對象的屬性的方法。它支持按級分類的概念。例如,知更鳥屬於飛鳥類,也屬於鳥類。就像圖5中描繪的那樣,這種分類的原則是,每一個子類都具有父類的公共特性。
在OOP中,繼承的概念很好的支持了代碼的重用性(reusability),也就是說,我們可以向一個已經存在的類中添加新的特性,而不必改變這個類。這可以通過從這個已存在的類派生一個新類來實現。這個新的類將具有原來那個類的特性,以及新的特性。而繼承機制的魅力和強大就在於它允許程序員利用已經存在的類(接近需要,而不是完全符合需要的類),並且可以以某種方式修改這個類,而不會影響其它的東西。
注意,每個子類只定義那些這個類所特有的特性。而如果沒有按級分類,每類都必須顯式的定義它所有的特性。
多態
多態是OOP的另一個重要概念。多態的意思是事物具有不同形式的能力。舉個例子,對於不同的實例,某個操作可能會有不同的行為。這個行為依賴於所要操作數據的類型。比如說加法操作,如果操作的數據是數,它對兩個數求和。如果操作的數據是字元串,則它將連接兩個字元串。
圖6演示了一個函數處理不同數量、不同類型的參數。就像某個單詞在不同的上下文中具有不同的含義。
多態機制使具有不同內部結構的對象可以共享相同的外部介面。這意味著,雖然針對不同對象的具體操作不同,但通過一個公共的類,它們(那些操作)可以通過相同的方式予以調用。多態在實現繼承的過程中被廣泛應用。
面向對象程序設計語言支持多態,術語稱之為「one interface multiple method(一個介面,多個實現)」。簡單來說,多態機制允許通過相同的介面引發一組相關但不相同的動作,通過這種方式,可以減少代碼的復雜度。在某個特定的情況下應該作出怎樣的動作,這由編譯器決定,而不需要程序員手工干預。
在多函數程序中,許多重要的數據被聲明為全局變數,這樣它們才可以被所有的函數訪問。每個函數又可以具有它自己的局部變數。全局變數很容易被某個函數不經意之間改變。而在一個大程序中,很難分辨每個函數都使用了哪些變數。如果我們需要修改某個外部數據的結構,我們就要修改所有訪問這個數據的函數。這很容易導致bug的產生。
在結構化程序設計中,另一個嚴重的缺陷是不能很好的模擬真實世界的問題。這是因為函數都是面向過程的,而不是真正的對應於問題中的各個元素。
面向過程的程序設計的一些特點如下:
·強調做(演算法);
·大程序被分隔為許多小程序,這些小程序稱為函數;
·大多數函數共享全局數據;
·數據開放的由一個函數流向另一個函數。函數把數據從一種形式轉換為另一種形式。
採用由上至下的程序設計方法。
動態綁定
綁定指的是將一個過程調用與相應代碼鏈接起來的行為。動態綁定的意思是,與給定的過程調用相關聯的代碼只有在運行期才可知。它與多態和繼承的聯系極為緊密。一個多態引用的函數調用決定於這個引用的動態類型。
考慮圖6中的「draw」方法。通過繼承,每個對象都具備了這個過程。但是,對於不同的對象它的演算法是不同的,因此,draw過程必須在每一個類中重新定義。在運行期,當前引用對象所對應的代碼將被調用。
消息傳遞
一個面向對象的程序由許多對象組成,這些對象之間需要相互溝通。因此,在面向對象程序設計語言中,程序設計的主要步驟如下:
1、創建類,這些類定義了對象及其行為;
2、由類定義創建對象;
3、建立對象之間的通訊。
對象之間通過收發信息相互溝通,這一點類似於人與人之間的信息傳遞。信息傳遞的概念使得真實世界的直接模擬更易於和建立系統交流。
對於某個特定對象來說,消息就是請求執行某個過程,因此,消息的接收對象會調用一個函數(過程),以產生預期的結果。傳遞的消息的內容包括接收消息的對象的名字,需要調用的函數的名字,以及必要的信息。
對象就有一個生命周期。它們可以被創建和銷毀。只要對象正處於其生存期,就可以與其進行通訊。
OOP的優點
OOP具有許多優點,無論是對於程序設計者或者用戶來說都是如此。面向對象為軟體產品擴展和質量保證中的許多問題提供了解決辦法。這項技術能夠大大提高程序員的生產力,並可提高軟體的質量以及降低其維護費用。其主要的優點陳列於下:
1、通過繼承,我們可以大幅減少多餘的代碼,並擴展現有代碼的用途;
2、我們可以在標準的模塊上(這里所謂的「標准」指程序員之間彼此達成的協議)構建我們的程序,而不必一切從頭開始。這可以減少軟體開發時間並提高生產效率;
3、數據隱藏的概念幫助程序員們保護程序免受外部代碼的侵襲;
4、允許一個對象的多個實例同時存在,而且彼此之間不會相互干擾;
5、允許將問題空間中的對象直接映射到程序中;
6、基於對象的工程可以很容易的分割為獨立的部分;
7、以數據為中心的設計方法允許我們抓住可實現模型的更多細節;
8、面向對象的系統很容易從小到大逐步升級;
9、對象間通訊所使用的消息傳遞技術與外部系統介面部分的描述更簡單;
10、更便於控制軟體復雜度。
當需要將以上所說的所有特性有機的結合於一個面向對象系統中,它們之間的相對重要性就取決於工程的類型和程序員的喜好。為了獲得上述的某些優勢,必須考慮很多事情。例如,對象庫必須可以被重用。技術還在不停的發展,現有的產品也會很快的更新換代。如果重用沒有能夠實現,那麼就需要進行嚴格的控制和管理。
易於使用的開發軟體往往難以編寫。面向對象程序設計工具有望解決這個問題。
面向對象程序設計語言
面向對象技術並不是某個特定語言的特權。如同結構化程序設計一樣,OOP概念可以在很多語言比如C和Pascal中實現。但是,當程序越來越大時,程序設計工作會變得拙劣而混亂。而一個支持OOP概念的程序設計語言則可以讓一切變得簡單。
一個語言必須支持幾個主要的OOP概念才能稱其是面向對象的。根據所支持的OOP特性,語言可以分為以下兩類:
1、基於對象的程序設計語言;
2、面向對象的程序設計語言。
基於對象的程序設計語言僅支持封裝和對象辨識。
一個面向對象的程序設計語言所要支持的重要特性如下:
·數據封裝
·數據隱藏和訪問機制
·對象的自動初始化和清除
·操作符重載
支持對象風格程序設計的語言稱為基於對象的程序設計語言。它們不支持繼承和動態綁定。
Ada就是一個典型的基於對象的程序設計語言。
面向對象的程序設計不僅僅包含基於對象程序設計的特性,還支持繼承和動態綁定。
OOP的應用
OOP最有前途的應用領域如下:
1、實時系統;
2、模擬和建模;
3、面相對象資料庫;
4、超文本、超媒體和擴展文本;
5、AI和專家系統;
6、神經網路和並行程序設計;
7、決策支持和辦公自動化系統;
8、CIM/CAM/CAD系統。
㈨ 文本分類系統的流程及步驟
文本分類系統的總體功能模塊為:
1、預處理:將原始語料格式化為同一格式,便於後續的統一處理。
2、索引:將文檔分解為基本處理單元,同時降低後續處理的開銷。
3、統計:詞頻統計,項(單詞、概念)與分類的相關概率。
4、特徵抽取:從文檔中抽取出反映文檔主題的特徵。
5、分類器:分類器的訓練。
6、評價:分類器的測試結果分析。
(9)神經網路流程圖擴展閱讀
文本分類已廣泛應用於網路信息過濾、信息檢索和信息推薦等多個方面。數據驅動分類器學習一直是近年來的熱點,方法很多,比如神經網路、決策樹、支持向量機、樸素貝葉斯等。相對於其他精心設計的更復雜的分類演算法,樸素貝葉斯分類演算法是學習效率和分類效果較好的分類器之一。
直觀的文本分類演算法,也是最簡單的貝葉斯分類器,具有很好的可解釋性,樸素貝葉斯演算法特點是假設所有特徵的出現相互獨立互不影響,每一特徵同等重要。
但事實上這個假設在現實世界中並不成立:首先,相鄰的兩個詞之間的必然聯系,不能獨立;其次,對一篇文章來說,其中的某一些代表詞就確定它的主題,不需要通讀整篇文章、查看所有詞。所以需要採用合適的方法進行特徵選擇,這樣樸素貝葉斯分類器才能達到更高的分類效率。
㈩ 傷寒、副傷寒流行預測模型(BP神經網路)的建立
由於目前研究的各種數學模型或多或少存在使用條件的局限性,或使用方法的復雜性等問題,預測效果均不十分理想,距離實際應用仍有較大差距。NNT是Matlab 中較為重要的一個工具箱,在實際應用中,BP 網路用的最廣泛。神經網路具有綜合能力強,對數據的要求不高,適時學習等突出優點,其操作簡便,節省時間,網路初學者即使不了解其演算法的本質,也可以直接應用功能豐富的函數來實現自己的目的。因此,易於被基層單位預防工作者掌握和應用。以下幾個問題是建立理想的因素與疾病之間的神經網路模型的關鍵:
(1)資料選取
應盡可能地選取所研究地區系統連續的因素與疾病資料,最好包括有疾病高發年和疾病低發年的數據。在收集影響因素時,要抓住主要影響傷寒、副傷寒的發病因素。
(2)疾病發病率分級
神經網路預測法是按發病率高低來進行預測,在定義發病率等級時,要結合專業知識及當地情況而定,並根據網路學習訓練效果而適時調整,以使網路學習訓練達到最佳效果。
(3)資料處理問題
在實踐中發現,資料的特徵往往很大程度地影響網路學習和訓練的穩定性,因此,數據的應用、納入、排出問題有待於進一步研究。
6.3.1 人工神經網路的基本原理
人工神經網路(ANN)是近年來發展起來的十分熱門的交叉學科,它涉及生物、電子、計算機、數學和物理等學科,有著廣泛的應用領域。人工神經網路是一種自適應的高度非線性動力系統,在網路計算的基礎上,經過多次重復組合,能夠完成多維空間的映射任務。神經網路通過內部連接的自組織結構,具有對數據的高度自適應能力,由計算機直接從實例中學習獲取知識,探求解決問題的方法,自動建立起復雜系統的控制規律及其認知模型。
人工神經網路就其結構而言,一般包括輸入層、隱含層和輸出層,不同的神經網路可以有不同的隱含層數,但他們都只有一層輸入和一層輸出。神經網路的各層又由不同數目的神經元組成,各層神經元數目隨解決問題的不同而有不同的神經元個數。
6.3.2 BP神經網路模型
BP網路是在1985年由PDP小組提出的反向傳播演算法的基礎上發展起來的,是一種多層次反饋型網路(圖6.17),它在輸入和輸出之間採用多層映射方式,網路按層排列,只有相鄰層的節點直接相互連接,傳遞之間信息。在正向傳播中,輸入信息從輸入層經隱含層逐層處理,並傳向輸出層,每層神經元的狀態隻影響下一層神經元的狀態。如果輸出層不能得到期望的輸出結果,則轉入反向傳播,將誤差信號沿原來的連同通路返回,通過修改各層神經元的權值,使誤差信號最小。
BP網路的學習演算法步驟如下(圖6.18):
圖6.17 BP神經網路示意圖
圖6.18 BP演算法流程圖
第一步:設置初始參數ω和θ,(ω為初始權重,θ為臨界值,均隨機設為較小的數)。
第二步:將已知的樣本加到網路上,利用下式可算出他們的輸出值yi,其值為
岩溶地區地下水與環境的特殊性研究
式中:xi為該節點的輸入;ωij為從I到j的聯接權;θj為臨界值;yj為實際算出的輸出數據。
第三步:將已知輸出數據與上面算出的輸出數據之差(dj-yj)調整權系數ω,調整量為
ΔWij=ηδjxj
式中:η為比例系數;xj為在隱節點為網路輸入,在輸出點則為下層(隱)節點的輸出(j=1,2…,n);dj為已知的輸出數據(學習樣本訓練數據);δj為一個與輸出偏差相關的值,對於輸出節點來說有
δj=ηj(1-yj)(dj-yj)
對於隱節點來說,由於它的輸出無法進行比較,所以經過反向逐層計算有
岩溶地區地下水與環境的特殊性研究
其中k指要把上層(輸出層)節點取遍。誤差δj是從輸出層反向逐層計算的。各神經元的權值調整後為
ωij(t)=ωij(t-1)+Vωij
式中:t為學習次數。
這個演算法是一個迭代過程,每一輪將各W值調整一遍,這樣一直迭代下去,知道輸出誤差小於某一允許值為止,這樣一個好的網路就訓練成功了,BP演算法從本質上講是把一組樣本的輸入輸出問題變為一個非線性優化問題,它使用了優化技術中最普遍的一種梯度下降演算法,用迭代運算求解權值相當於學習記憶問題。
6.3.3 BP 神經網路模型在傷寒、副傷寒流行與傳播預測中的應用
傷寒、副傷寒的傳播與流行同環境之間有著一定的聯系。根據桂林市1990年以來鄉鎮為單位的傷寒、副傷寒疫情資料,傷寒、副傷寒疫源地資料,結合現有資源與環境背景資料(桂林市行政區劃、土壤、氣候等)和社會經濟資料(經濟、人口、生活習慣等統計資料)建立人工神經網路數學模型,來逼近這種規律。
6.3.3.1 模型建立
(1)神經網路的BP演算法
BP網路是一種前饋型網路,由1個輸入層、若干隱含層和1個輸出層構成。如果輸入層、隱含層和輸出層的單元個數分別為n,q1,q2,m,則該三層網路網路可表示為BP(n,q1,q2,m),利用該網路可實現n維輸入向量Xn=(X1,X2,…,Xn)T到m維輸出向量Ym=(Y1,Y2,…,Ym)T的非線性映射。輸入層和輸出層的單元數n,m根據具體問題確定。
(2)樣本的選取
將模型的輸入變數設計為平均溫度、平均降雨量、岩石性質、岩溶發育、地下水類型、飲用水類型、正規自來水供應比例、集中供水比例8個輸入因子(表6.29),輸出單元為傷寒副傷寒的發病率等級,共一個輸出單元。其中q1,q2的值根據訓練結果進行選擇。
表6.29 桂林市傷寒副傷寒影響因素量化表
通過分析,選取在傷寒副傷寒有代表性的縣鎮在1994~2001年的環境參評因子作為樣本進行訓練。利用聚類分析法對疫情進行聚類分級(Ⅰ、Ⅱ、Ⅲ、Ⅳ),傷寒副傷寒發病最高級為Ⅳ(BP網路中輸出定為4),次之的為Ⅲ(BP網路中輸出定為3),以此類推,最低為Ⅰ(BP網路中輸出定為1)
(3)數據的歸一化處理
為使網路在訓練過程中易於收斂,我們對輸入數據進行了歸一化處理,並將輸入的原始數據都化為0~1之間的數。如將平均降雨量的數據乘以0.0001;將平均氣溫的數據乘以0.01;其他輸入數據也按類似的方法進行歸一化處理。
(4)模型的演算法過程
假設共有P個訓練樣本,輸入的第p個(p=1,2,…,P)訓練樣本信息首先向前傳播到隱含單元上。
經過激活函數f(u)的作用得到隱含層1的輸出信息:
岩溶地區地下水與環境的特殊性研究
經過激活函數f(u)的作用得到隱含層2的輸出信息:
岩溶地區地下水與環境的特殊性研究
激活函數f(u)我們這里採用Sigmoid型,即
f(u)=1/[1+exp(-u)](6.5)
隱含層的輸出信息傳到輸出層,可得到最終輸出結果為
岩溶地區地下水與環境的特殊性研究
以上過程為網路學習的信息正向傳播過程。
另一個過程為誤差反向傳播過程。如果網路輸出與期望輸出間存在誤差,則將誤差反向傳播,利用下式來調節網路權重和閾值:
岩溶地區地下水與環境的特殊性研究
式中:Δω(t)為t次訓練時權重和閾值的修正;η稱為學習速率,0<η<1;E為誤差平方和。
岩溶地區地下水與環境的特殊性研究
反復運用以上兩個過程,直至網路輸出與期望輸出間的誤差滿足一定的要求。
該模型演算法的缺點:
1)需要較長的訓練時間。由於一些復雜的問題,BP演算法可能要進行幾小時甚至更長的時間的訓練,這主要是由於學習速率太小造成的,可採用變化的學習速率或自適應的學習速率加以改進。
2)完全不能訓練。主要表現在網路出現的麻痹現象上,在網路的訓練過程中,當其權值調的過大,可能使得所有的或大部分神經元的加權總和n偏大,這使得激活函數的輸入工作在S型轉移函數的飽和區,從而導致其導數f′(n)非常小,從而使得對網路權值的調節過程幾乎停頓下來。
3)局部極小值。BP演算法可以使網路權值收斂到一個解,但它並不能保證所求為誤差超平面的全局最小解,很可能是一個局部極小解。這是因為BP演算法採用的是梯度下降法,訓練從某一起點沿誤差函數的斜面逐漸達到誤差的最小值。
考慮到以上演算法的缺點,對模型進行了兩方面的改進:
(1)附加動量法
為了避免陷入局部極小值,對模型進行了改進,應用了附加動量法。附加動量法在使網路修正及其權值時,不僅考慮誤差在梯度上的作用,而且考慮在誤差曲面上變化趨勢的影響,其作用如同一個低通濾波器,它允許網路忽略網路上的微小變化特性。在沒有附加動量的作用下,網路可能陷入淺的局部極小值,利用附加動量的作用則有可能滑過這些極小值。
該方法是在反向傳播法的基礎上在每一個權值的變化上加上一項正比於前次權值變化量的值,並根據反向傳播法來產生心的權值變化。促使權值的調節向著誤差曲面底部的平均方向變化,從而防止了如Δω(t)=0的出現,有助於使網路從誤差曲面的局部極小值中跳出。
這種方法主要是把式(6.7)改進為
岩溶地區地下水與環境的特殊性研究
式中:A為訓練次數;a為動量因子,一般取0.95左右。
訓練中對採用動量法的判斷條件為
岩溶地區地下水與環境的特殊性研究
(2)自適應學習速率
對於一個特定的問題,要選擇適當的學習速率不是一件容易的事情。通常是憑經驗或實驗獲取,但即使這樣,對訓練開始初期功效較好的學習速率,不見得對後來的訓練合適。所以,為了盡量縮短網路所需的訓練時間,採用了學習速率隨著訓練變化的方法來找到相對於每一時刻來說較差的學習速率。
下式給出了一種自適應學習速率的調整公式:
岩溶地區地下水與環境的特殊性研究
通過以上兩個方面的改進,訓練了一個比較理想的網路,將動量法和自適應學習速率結合起來,效果要比單獨使用要好得多。
6.3.3.2 模型的求解與預測
採用包含了2個隱含層的神經網路BP(4,q1,q2,1),隱含層單元數q1,q2與所研究的具體問題有關,目前尚無統一的確定方法,通常根據網路訓練情況採用試錯法確定。在滿足一定的精度要求下一般認小的數值,以改善網路的概括推論能力。在訓練中網路的收斂採用輸出值Ykp與實測值tp的誤差平方和進行控制:
岩溶地區地下水與環境的特殊性研究
1)將附加動量法和自適應學習速率結合應用,分析桂林市36個鄉鎮地質條件各因素對傷寒副傷寒發病等級的影響。因此訓練樣本為36個,第一個隱含層有19個神經元,第二個隱含層有11個神經元,學習速率為0.001。
A.程序(略)。
B.網路訓練。在命令窗口執行運行命令,網路開始學習和訓練,其學習和訓練過程如下(圖6.19)。
圖6.19 神經網路訓練過程圖
C.模型預測。
a.輸入未參與訓練的鄉鎮(洞井鄉、兩水鄉、延東鄉、四塘鄉、嚴關鎮、靈田鄉)地質條件數據。
b.預測。程序運行後網路輸出預測值a3,與已知的實際值進行比較,其預測結果整理後見(表6.30)。經計算,對6個鄉鎮傷寒副傷寒發病等級的預測符合率為83.3%。
表6.30 神經網路模型預測結果與實際結果比較
c.地質條件改進方案。在影響疾病發生的地質條件中,大部分地質條件是不會變化的,而改變發病地區的飲用水類型是可以人為地通過改良措施加以實施的一個因素。因此,以靈田鄉為例對發病率較高的鄉鎮進行分析,改變其飲用水類型,來看發病等級的變化情況。
表6.31顯示,在其他地質條件因素不變的情況下,改變當地的地下水類型(從原來的岩溶水類型改變成基岩裂隙水)則將發病等級從原來的最高級4級,下降為較低的2級,效果是十分明顯的。因此,今後在進行傷寒副傷寒疾病防治的時候,可以通過改變高發區飲用水類型來客觀上減少疫情的發生。
表6.31 靈田鄉改變飲用水類型前後的預測結果
2)選取桂林地區1994~2000年月平均降雨量、月平均溫度作為輸入數據矩陣,進行樣本訓練,設定不同的隱含層單元數,對各月份的數據進行BP網路訓練。在隱含層單元數q1=13,q2=9,經過46383次數的訓練,誤差達到精度要求,學習速率0.02。
A.附加動量法程序(略)。
B.網路訓練。在命令窗口執行運行命令,網路開始學習和訓練,其學習和訓練過程如下(圖6.20)。
C.模型預測。
a.輸入桂林市2001年1~12月桂林市各月份的平均氣溫和平均降雨量。預測程度(略)。
b.預測。程序運行後網路輸出預測值a2,與已知的實際值進行比較,其預測結果整理後見(表6.32)。經計算,對2001年1~12月傷寒副傷寒發病等級進行預測,12個預測結果中,有9個符合,符合率為75%。
圖6.20 神經網路訓練過程圖
表6.32 神經網路模型預測結果與實際值比較
6.3.3.3 模型的評價
本研究採用BP神經網路對傷寒、副傷寒發病率等級進行定量預測,一方面引用數量化理論對不確定因素進行量化處理;另一方面利用神經網路優點,充分考慮各影響因素與發病率之間的非線性映射。
實際應用表明,神經網路定量預測傷寒、副傷寒發病率是理想的。
其主要優點有:
1)避免了模糊或不確定因素的分析工作和具體數學模型的建立工作。
2)完成了輸入和輸出之間復雜的非線性映射關系。
3)採用自適應的信息處理方式,有效減少人為的主觀臆斷性。
雖然如此,但仍存在以下缺點:
1)學習演算法的收斂速度慢,通常需要上千次或更多,訓練時間長。
2)從數學上看,BP演算法有可能存在局部極小問題。
本模型具有廣泛的應用范圍,可以應用在很多領域。從上面的結果可以看出,實際和網路學習數據總體較為接近,演化趨勢也基本一致。說明選定的氣象因子、地質條件因素為神經單元獲得的傷寒、副傷寒發病等級與實際等級比較接近,從而證明傷寒、副傷寒流行與地理因素的確存在較密切的相關性。