林 國
(1.浙江工業(yè)大學(xué) 信息工程學(xué)院,浙江 杭州 310014;2.臺(tái)州市農(nóng)業(yè)局 信息中心,浙江 臺(tái)州 318000)
農(nóng)業(yè)土地適宜性是指農(nóng)業(yè)土地在一定的條件下,對不同用途(農(nóng)、林、牧等)生產(chǎn)的適宜性程度[1].農(nóng)業(yè)土地適宜性評價(jià)就是利用相關(guān)的自然、經(jīng)濟(jì)、社會(huì)和技術(shù)數(shù)據(jù),對特定土地利用方式是否適宜及適宜程度如何作出評價(jià)的過程.這里所指的土地利用方式在內(nèi)涵上有廣義和狹義之分:廣義的土地利用方式指農(nóng)業(yè)、林業(yè)、牧業(yè)、城建和軍事等,狹義的則是指具體的用途,如用于農(nóng)業(yè)中種植水稻、小麥、玉米等.
農(nóng)業(yè)土地適宜性評價(jià)的算法模型就是根據(jù)樣地相似的程度組成類別,然后將每一樣地正確地歸入某一類別.因此對一樣地的土地評價(jià),實(shí)質(zhì)上是對某樣地進(jìn)行質(zhì)量分類.具體步驟為:在己知大量類別標(biāo)簽樣本集的基礎(chǔ)上進(jìn)行知識(shí)學(xué)習(xí),再根據(jù)學(xué)習(xí)的結(jié)果對新的樣本集做出評價(jià)和推理.
樸素貝葉斯 (Native Bayes)是基于一個(gè)簡單的假設(shè),在給定數(shù)據(jù)樣本,它的各屬性之間相互類條件獨(dú)立.它是實(shí)用性很高的一種貝葉斯學(xué)習(xí)方法,在某些領(lǐng)域它的學(xué)習(xí)算法性能可以與神經(jīng)網(wǎng)絡(luò)和決策樹的分類算法相媲美[2].
樸素貝葉斯分類算法的工作過程如下:[3]
1)每個(gè)數(shù)據(jù)樣本用一個(gè)n維特征向量X={x1,x2,…,xn}表示,分別描述對n個(gè)屬性A1,A2,…,An樣本的n個(gè)度量.
2)假定有m個(gè)類C1,C2,…,Cm.給定一個(gè)未知的數(shù)據(jù)樣本X,分類法將預(yù)測X屬于具有最高后驗(yàn)概率.即是說,樸素貝葉斯分類器將未知的樣本分配給類Ci,當(dāng)且僅當(dāng)
P(Ci|X)>P(Cj|X),1≤j≤m,j≠i
其P(Ci|X)最大的Ci稱為最大后驗(yàn)概率.根據(jù)貝葉斯定理
3)由于P(X)對于所有類為常數(shù),只有P(X|Ci)P(Ci)最大即可.由于實(shí)際問題中,計(jì)算P(X|Ci)的開銷可能非常大,為降低計(jì)算P(X|Ci)的開銷,可以做類條件獨(dú)立的樸素假設(shè).給定樣本的類標(biāo)號,假定屬性值相互獨(dú)立,這樣:
系統(tǒng)使用C#語言開發(fā)樸素貝葉斯核心類N_bys,該類設(shè)計(jì)了3個(gè)私有變量,其中私有字段_aryClassItem為C#ArrayList數(shù)組結(jié)構(gòu),用戶存儲(chǔ)分類對象._tokens和_prob兩個(gè)變量分別為用戶知識(shí)加載和學(xué)習(xí)的中間變量使用,為SortedDictionary二叉搜索樹結(jié)構(gòu),其檢索運(yùn)算復(fù)雜度為O(logn),使用此類型可以大大提高知識(shí)學(xué)習(xí)的速度.
算法實(shí)現(xiàn)過程主要分為知識(shí)加載(LoadKnowledge)、知識(shí)學(xué)習(xí)(StudyKnowledge)和可能性計(jì)算(CalculateProbabilities)3個(gè)步驟,其中LoadKnowledge過程參數(shù)為一條SQL語句,用戶從數(shù)據(jù)庫中加載樣本數(shù)據(jù),SQL的第一個(gè)字段為假定的m個(gè)類C1,C2,…,Cm,SQL的第2,3…,n字段為n維特征向量X={x1,x2,…,xn},其中知識(shí)學(xué)習(xí)和可能性計(jì)算的代碼如下:
public void StudyKnowledge()
{
_prob=new SortedDictionary
string strTag="";
foreach (string token in_tokens.Keys)
{
strTag=token.Substring(0,1);
if (strTag=="r")
_prob[token]=(double)_tokens[token]/(double)_tokens["s"];//得到P(Ci)
else if (strTag!="s")
_prob[token]=(double)_tokens[token]/(double)_tokens["r"+strTag];//得到P(Xk|Ci)
}
}
public string CalculateProbabilities(ArrayList aryCondition)
{
double douMult;
double douMaxProbabilities=0;
string strMaxProbabilityClass="";
foreach (string strClassItem in _aryClassItem)
{
douMult=1;
douMult=douMult * _prob["r" + strClassItem];//douMult=1*P(Ci)
foreach (string strCondition in aryCondition)
{
douMult=douMult * _prob[strClassItem + strCondition];//douMult=P(Ci)*P(Xk|Ci)
}
if (douMult > douMaxProbabilities)//取最大值
{
douMaxProbabilities = douMult;
strMaxProbabilityClass = "最佳評價(jià)結(jié)果為:" + SQLHelper.GetOneFieldBySql("select idx from ClassItem where idx<=" + strClassItem + ")").ToString() + ";最大概率為:" + douMaxProbabilities.ToString("0.00000");
}
}
return strMaxProbabilityClass;
}
3.1 對條件數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理
對農(nóng)田土壤養(yǎng)分、PH值、環(huán)境資源等相關(guān)檢測數(shù)據(jù),根據(jù)農(nóng)業(yè)部門相技術(shù)規(guī)范,進(jìn)行數(shù)據(jù)的分等定級,以1-6之間的數(shù)字從高到低表示各種土壤數(shù)據(jù),如表1所示.
表1 土壤相關(guān)數(shù)據(jù)分級標(biāo)準(zhǔn)
3.2 空間插值
空間插值是根據(jù)一組已知的離散數(shù)據(jù)或分區(qū)數(shù)據(jù),按照某種數(shù)學(xué)關(guān)系推求出其它未知點(diǎn)或未知區(qū)域數(shù)據(jù)的數(shù)學(xué)過程.農(nóng)地適宜性評價(jià)中一般都涉及較多的土壤方面的影響因素,如土壤有機(jī)質(zhì)、土壤速效磷、速效鉀等,根據(jù)土壤采樣點(diǎn)的屬性值推求整個(gè)研究區(qū)域的土壤屬性值,這就需要采用空間數(shù)據(jù)內(nèi)插方法.在此采用克里格插值處理算法.
3.3 建立柵格數(shù)據(jù)集
圖1 柵格數(shù)據(jù)集Fig. 1 Raster data set
一個(gè)柵格數(shù)據(jù)集[4],就像一幅地圖,它描述了某區(qū)域的位置和特征與其在空間上的相對位置.由于單個(gè)柵格數(shù)據(jù)集代表了單一專題,如土地利用、土壤、道路或高程等,因此必須創(chuàng)建多個(gè)柵格數(shù)據(jù)集來完整描述一個(gè)區(qū)域.如圖1所示,系統(tǒng)條件圖層有8個(gè),分別由字段X1,X2……,X8表示,結(jié)果圖層由字段C表示,X字段和C字段在空間上的位置是一一對應(yīng)的.
3.4 建立推理知識(shí)庫
根據(jù)柵格數(shù)據(jù)集,以X字段為推理?xiàng)l件,C字段為推理結(jié)果,按照數(shù)據(jù)集空間位置依次類推,運(yùn)用樸素貝葉斯統(tǒng)計(jì)推理算法,對柵格數(shù)據(jù)集進(jìn)行知識(shí)學(xué)習(xí),生成系統(tǒng)推理需要的知識(shí)庫,為空間數(shù)據(jù)挖掘做準(zhǔn)備.
3.5 空間數(shù)據(jù)挖掘?qū)崿F(xiàn)
建立基于ArcGIS Server空間屬性查詢功能[5],獲取查詢點(diǎn)上所有條件圖層的屬性數(shù)據(jù)存入X字段中,作為推理?xiàng)l件,調(diào)用貝葉斯統(tǒng)計(jì)推理類,進(jìn)行推理,得出C值,實(shí)現(xiàn)空間數(shù)據(jù)挖掘功能.
算法選取浙江省臺(tái)州市黃巖西部山區(qū)現(xiàn)代農(nóng)業(yè)綜合開發(fā)區(qū)和仙居浙江省綠色農(nóng)產(chǎn)品生產(chǎn)基地2個(gè)臺(tái)州市重點(diǎn)農(nóng)業(yè)園區(qū)為研究區(qū)域,進(jìn)行農(nóng)業(yè)土地適宜性算法評價(jià).評價(jià)方法以DEM高程、行政村經(jīng)濟(jì)收入統(tǒng)計(jì)表、行政村農(nóng)業(yè)人力資源統(tǒng)計(jì)表、農(nóng)業(yè)企業(yè)信息表、農(nóng)業(yè)生產(chǎn)合作社信息表、土壤大量元素養(yǎng)分表、土壤中量與微量元素養(yǎng)分表、土壤環(huán)境資源評價(jià)表、氣象數(shù)據(jù)表、土地利用圖等10個(gè)圖層作為分類條件圖層,分別對應(yīng)X1,X2,…,X10,以農(nóng)業(yè)產(chǎn)業(yè)基地分布圖作為分類對象圖層,對應(yīng)C值,隨機(jī)抽取300個(gè)點(diǎn)作為分類樣點(diǎn),再利用樸素貝葉斯統(tǒng)計(jì)推理算法對這300分類樣點(diǎn)進(jìn)行計(jì)算,得出300個(gè)檢驗(yàn)樣點(diǎn),通過對分類樣點(diǎn)和檢驗(yàn)樣點(diǎn)進(jìn)行比較,得出以下驗(yàn)證結(jié)果,如表2所示.
表2 土地適宜性評價(jià)算法精度驗(yàn)證
文章就農(nóng)業(yè)土地利用中,如何針對農(nóng)業(yè)的各類已有條件要素,建立知識(shí)庫,利用樸素貝葉斯算法對新的土地進(jìn)行統(tǒng)計(jì)推理,得出最佳適宜性種植項(xiàng)目.系統(tǒng)實(shí)現(xiàn)簡單,算法速度快,推理精度較高,較好地解決了土地適宜性問題.
[1] 林培.土地資源學(xué)[M].2版.北京:中國農(nóng)業(yè)大學(xué)出版社,1996:61.
[2] 李凡長,錢旭培,謝琳等.機(jī)器學(xué)習(xí)理論及應(yīng)用[M].合肥:中國科學(xué)技術(shù)大學(xué)出版社,2009:121-126.
[3] 朱慧明,韓玉啟.貝葉斯多元統(tǒng)計(jì)推斷理論[M].北京:科學(xué)出版社,2006:69-73.
[4] 馮險(xiǎn)峰,汪閩,孟雪蓮,等.ArcGIS空間分析實(shí)用指南[M].北京:ArcInfo中國技術(shù)咨詢與培訓(xùn)中心,2002:76.
[5] 李航飛,湯小華.福建省縣域經(jīng)濟(jì)格局時(shí)空演變研究[J].杭州師范大學(xué)學(xué)報(bào):自然科學(xué)版,2008(1):50-54.