【正文】
t set”。右邊顯示結(jié)果的區(qū)域中會(huì)增加一些內(nèi)容,告訴你該模型應(yīng)用在這個(gè)數(shù)據(jù)集上表現(xiàn)將如何。如果你的Class屬性都是些缺失值,那這些內(nèi)容是無(wú)意義的,我們關(guān)注的是模型在新數(shù)據(jù)集上的預(yù)測(cè)值?,F(xiàn)在點(diǎn)擊右鍵菜單中的“Visualize classifier errors”,將彈出一個(gè)新窗口顯示一些有關(guān)預(yù)測(cè)誤差的散點(diǎn)圖。點(diǎn)擊這個(gè)新窗口中的“Save”按鈕,保存一個(gè)Arff文件。打開這個(gè)文件可以看到在倒數(shù)第二個(gè)位置多了一個(gè)屬性(predictedpep),這個(gè)屬性上的值就是模型對(duì)每個(gè)實(shí)例的預(yù)測(cè)值。使用命令行(推薦) 雖然使用圖形界面查看結(jié)果和設(shè)置參數(shù)很方便,但是最直接最靈活的建模及應(yīng)用的辦法仍是使用命令行。 打開“Simple CLI”模塊,像上面那樣使用“J48”算法的命令格式為: java C M 2 t directorypath\ d directorypath \其中參數(shù)“ C ”和“M 2”是和圖形界面中所設(shè)的一樣的?!皌 ”后面跟著的是訓(xùn)練數(shù)據(jù)集的完整路徑(包括目錄和文件名),“d ”后面跟著的是保存模型的完整路徑。注意!這里我們可以把模型保存下來(lái)。輸入上述命令后,所得到樹模型和誤差分析會(huì)在“Simple CLI”上方顯示,可以復(fù)制下來(lái)保存在文本文件里。誤差是把模型應(yīng)用到訓(xùn)練集上給出的。把這個(gè)模型應(yīng)用到“”所用命令的格式為: java p 9 l directorypath\ T directorypath \其中“p 9”說(shuō)的是模型中的待預(yù)測(cè)屬性的真實(shí)值存在第9個(gè)(也就是“pep”)屬性中,這里它們?nèi)课粗虼巳坑萌笔е荡妗!發(fā)”后面是模型的完整路徑?!癟”后面是待預(yù)測(cè)數(shù)據(jù)集的完整路徑。輸入上述命令后,在“Simple CLI”上方會(huì)有這樣一些結(jié)果: 0 YES ? 1 NO ? 2 YES ? 3 YES ? 4 NO ? ... 這里的第一列就是我們提到過(guò)的“Instance_number”,第二列就是剛才的“predictedpep”,第四列則是“”中原來(lái)的“pep”值(這里都是“?”缺失值)。第三列對(duì)預(yù)測(cè)結(jié)果的置信度(confidence )。比如說(shuō)對(duì)于實(shí)例0,我們有75%的把握說(shuō)它的“pep”的值會(huì)是“YES”,%的把握說(shuō)它的“pep”值會(huì)是“NO”。我們看到,使用命令行至少有兩個(gè)好處。一個(gè)是可以把模型保存下來(lái),這樣有新的待預(yù)測(cè)數(shù)據(jù)出現(xiàn)時(shí),不用每次重新建模,直接應(yīng)用保存好的模型即可。另一個(gè)是對(duì)預(yù)測(cè)結(jié)果給出了置信度,我們可以有選擇的采納預(yù)測(cè)結(jié)果,例如,只考慮那些置信度在85%以上的結(jié)果。6. 聚類分析原理與實(shí)現(xiàn) 聚類分析中的“類”(cluster)和前面分類的“類”(class)是不同的,對(duì)cluster更加準(zhǔn)確的翻譯應(yīng)該是“簇”。聚類的任務(wù)是把所有的實(shí)例分配到若干的簇,使得同一個(gè)簇的實(shí)例聚集在一個(gè)簇中心的周圍,它們之間距離的比較近;而不同簇實(shí)例之間的距離比較遠(yuǎn)。對(duì)于由數(shù)值型屬性刻畫的實(shí)例來(lái)說(shuō),這個(gè)距離通常指歐氏距離?,F(xiàn)在我們對(duì)前面的“bank data”作聚類分析,使用最常見的K均值(Kmeans)算法。下面我們簡(jiǎn)單描述一下K均值聚類的步驟。K均值算法首先隨機(jī)的指定K個(gè)簇中心。然后:1)將每個(gè)實(shí)例分配到距它最近的簇中心,得到K個(gè)簇;2)計(jì)分別計(jì)算各簇中所有實(shí)例的均值,把它們作為各簇新的簇中心。重復(fù)1)和2),直到K個(gè)簇中心的位置都固定,簇的分配也固定。上述K均值算法只能處理數(shù)值型的屬性,遇到分類型的屬性時(shí)要把它變?yōu)槿舾蓚€(gè)取值0和1的屬性。WEKA將自動(dòng)實(shí)施這個(gè)分類型到數(shù)值型的變換,而且WEKA會(huì)自動(dòng)對(duì)數(shù)值型的數(shù)據(jù)作標(biāo)準(zhǔn)化。因此,對(duì)于原始數(shù)據(jù)“”,我們所做的預(yù)處理只是刪去屬性“id”,保存為ARFF格式后,修改屬性“children”為分類型。這樣得到的數(shù)據(jù)文件為“”,含600條實(shí)例。用“Explorer”打開剛才得到的“”,并切換到“Cluster”。點(diǎn)“Choose”按鈕選擇“SimpleKMeans”,這是WEKA中實(shí)現(xiàn)K均值的算法。點(diǎn)擊旁邊的文本框,修改“numClusters”為6,說(shuō)明我們希望把這600條實(shí)例聚成6類,即K=6。下面的“seed”參數(shù)是要設(shè)置一個(gè)隨機(jī)種子,依此產(chǎn)生一個(gè)隨機(jī)數(shù),用來(lái)得到K均值算法中第一次給出的K個(gè)簇中心的位置。我們不妨?xí)簳r(shí)讓它就為10。選中“Cluster Mode”的“Use training set”,點(diǎn)擊“Start”按鈕,觀察右邊“Clusterer output”給出的聚類結(jié)果。也可以在左下角“Result list”中這次產(chǎn)生的結(jié)果上點(diǎn)右鍵,“View in separate window”在新窗口中瀏覽結(jié)果。結(jié)果解釋 首先我們注意到結(jié)果中有這么一行: Within cluster sum of squared errors: 這是評(píng)價(jià)聚類好壞的標(biāo)準(zhǔn),數(shù)值越小說(shuō)明同一簇實(shí)例之間的距離越小。也許你得到的數(shù)值會(huì)不一樣;實(shí)際上如果把“seed”參數(shù)改一下,得到的這個(gè)數(shù)值就可能會(huì)不一樣。我們應(yīng)該多嘗試幾個(gè)seed,并采納這個(gè)數(shù)值最小的那個(gè)結(jié)果。例如我讓“seed”取100,就得到Within cluster sum of squared errors: 我該取后面這個(gè)。當(dāng)然再嘗試幾個(gè)seed,這個(gè)數(shù)值可能會(huì)更小。 接下來(lái)“Cluster centroids:”之后列出了各個(gè)簇中心的位置。對(duì)于數(shù)值型的屬性,簇中心就是它的均值(Mean);分類型的就是它的眾數(shù)(Mode),也就是說(shuō)這個(gè)屬性上取值為眾數(shù)值的實(shí)例最多。對(duì)于數(shù)值型的屬性,還給出了它在各個(gè)簇里的標(biāo)準(zhǔn)差(Std Devs)。 最后的“Clustered Instances”是各個(gè)簇中實(shí)例的數(shù)目及百分比。 為了觀察可視化的聚類結(jié)果,我們?cè)谧笙路健癛esult list”列出的結(jié)果上右擊,點(diǎn)“Visualize cluster assignments”。彈出的窗口給出了各實(shí)例的散點(diǎn)圖。最上方的兩個(gè)框是選擇橫坐標(biāo)和縱坐標(biāo),第二行的“color”是散點(diǎn)圖著色的依據(jù),默認(rèn)是根據(jù)不同的簇“Cluster”給實(shí)例標(biāo)上不同的顏色??梢栽谶@里點(diǎn)“Save”把聚類結(jié)果保存成ARFF文件。在這個(gè)新的ARFF文件中,“instance_number”屬性表示某實(shí)例的編號(hào),“Cluster”屬性表示聚類算法給出的該實(shí)例所在的簇