決策樹代碼java代碼 決策樹代碼matlab

如何使用Java Weka開源項(xiàng)目,實(shí)現(xiàn)J48決策樹、支持向量機(jī)算法,在10個(gè)UCI數(shù)據(jù)集上對(duì)這兩個(gè)算法進(jìn)行性能?

public?static?void?Regular()?throws?Exception?{

站在用戶的角度思考問題,與客戶深入溝通,找到獻(xiàn)縣網(wǎng)站設(shè)計(jì)與獻(xiàn)縣網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站制作、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、主機(jī)域名、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋獻(xiàn)縣地區(qū)。

File?inputfile?=?new?File("F:\\weka\\eucalyptus_Train.arff");

ArffLoader?loader?=?new?ArffLoader();

loader.setFile(inputfile);

Instances?insTrain?=?loader.getDataSet();

insTrain.setClassIndex(insTrain.numAttributes()-1);

inputfile?=?new?File("F:\\weka\\eucalyptus_Test.arff");

loader.setFile(inputfile);

Instances?insTest?=?loader.getDataSet();

insTest.setClassIndex(insTest.numAttributes()-1);

double?sum?=?insTest.numInstances();

int?right?=?0;

Classifier?clas?=?new?J48();

//Classifier?clas?=?new?weka.classifiers.bayes.BayesNet();

clas.buildClassifier(insTrain);

for(int?i?=?0;?i??sum;?i++)?{

if(clas.classifyInstance(insTest.instance(i))?==?insTest.instance(i).classValue())?{

right++;

}

System.out.println(clas.classifyInstance(insTest.instance(i))+"?: "+insTest.instance(i).classValue());

}

System.out.println("分類準(zhǔn)確率:"+right/sum);

}

svm的話,要用一個(gè)wlsvm的包。 代碼是一樣的,就是Classifier class= new J48()這里要用svm的實(shí)例

二分查找法的判定樹有什么特點(diǎn)?能不能用一個(gè)公式直接求出樹的深度?

算法思想:

將數(shù)列按有序化(遞增或遞減)排列,查找過程中采用跳躍式方式查找,即先以有序數(shù)列的中點(diǎn)位置為比較對(duì)象,如果要找的元素值小于該中點(diǎn)元素,則將待查序列縮小為左半部分,否則為右半部分。通過一次比較,將查找區(qū)間縮小一半。

折半查找是一種高效的查找方法。它可以明顯減少比較次數(shù),提高查找效率。但是,折半查找的先決條件是查找表中的數(shù)據(jù)元素必須有序。

算法步驟描述:

step1 首先確定整個(gè)查找區(qū)間的中間位置

mid = ( left + right )/ 2

step2 用待查關(guān)鍵字值與中間位置的關(guān)鍵字值進(jìn)行比較;

若相等,則查找成功

若大于,則在后(右)半個(gè)區(qū)域繼續(xù)進(jìn)行折半查找

若小于,則在前(左)半個(gè)區(qū)域繼續(xù)進(jìn)行折半查找

Step3 對(duì)確定的縮小區(qū)域再按折半公式,重復(fù)上述步驟。最后,得到結(jié)果:要么查找成功, 要么查找失敗。

折半查找的存儲(chǔ)結(jié)構(gòu)采用一維數(shù)組存放。

折半查找算法舉例

對(duì)給定數(shù)列(有序),按折半查找算法,查找關(guān)鍵字值為30的數(shù)據(jù)元素。

折半查找的算法討論:

優(yōu)點(diǎn): ASL≤log2n,即每經(jīng)過一次比較,查找范圍就縮小一半。經(jīng)log2n 次計(jì)較就可以完成查找過程。

缺點(diǎn):因要求有序,所以要求查找數(shù)列必須有序,而對(duì)所有數(shù)據(jù)元素按大小排序是非常費(fèi)時(shí)的操作。另外,順序存儲(chǔ)結(jié)構(gòu)的插入、刪除操作不便利。

考慮:能否通過一次比較拋棄更多的部分(即經(jīng)過一次比較,使查找范圍縮得更?。?,以達(dá)到提高效率的目的。……?

可以考慮把兩種方法(順序查找和折半查找)結(jié)合起來,即取順序查找簡(jiǎn)單和折半查找高效之所長,來達(dá)到提高效率的目的?實(shí)際上這就是分塊查找的算法思想。

例如:[問題分析] 由于數(shù)據(jù)按升序排列,故用折半查找最快捷.

program binsearch;

const max=10;

var num:array[1..max] of integer;

i,n:integer;

procedure search(x,a,b:integer);

var mid:integer;

begin

if a=b then

if x=num[a] then writeln('Found:',a) else writeln('Number not found')

else begin

mid:=(a+b) div 2;

if xnum[mid] then search(x,mid,b);

if xnum[mid] then search(x,a,mid);

if x=num[mid] then writeln('Found:',mid);

end;

end;

begin

write('Please input 10 numbers in order:');

for i:=1 to max do read(num);

write('Please input the number to search:');

readln(n);

search(n,1,max);

end.

Java風(fēng)格的代碼舉例:

//使用折半法進(jìn)行查找

int getIndex(int[] nList, int nCount, int nCode) {

int nIndex = -1;

int jMin = 0;

int jMax = nCount - 1;

int jCur = (jMin+jMax)/2;

do

{

if(nList[jCur] nCode) {

jMax--;

} else if(nList[jCur] nCode) {

jMin++;

} else if(nList[jCur] == nCode) {

nIndex = jCur;

break;

}

jCur = (jMin + jMax)/2;

} while(jMin jMax);

return nIndex;

}

二分查找的性能說明

雖然二分查找的效率高,但是要將表按關(guān)鍵字排序。而排序本身是一種很費(fèi)時(shí)的運(yùn)算。既使采用高效率的排序方法也要花費(fèi) O(n lg n) 的時(shí)間。

二分查找只適用順序存儲(chǔ)結(jié)構(gòu)。為保持表的有序性,在順序結(jié)構(gòu)里插入和刪除都必須移動(dòng)大量的結(jié)點(diǎn)。因此,二分查找特別適用于那種一經(jīng)建立就很少改動(dòng)、而又經(jīng)常需要查找的線性表。

對(duì)那些查找少而又經(jīng)常需要改動(dòng)的線性表,可采用鏈表作存儲(chǔ)結(jié)構(gòu),進(jìn)行順序查找。鏈表上無法實(shí)現(xiàn)二分查找

二分查找的C#實(shí)現(xiàn)代碼:

using System;

using System.Collections.Generic;

using System.Text;

namespace BinschDemo

{

public class BinschDemo

{

public static int Binsch(int[] a, int key)

{

int low = 1;

int high = a.Length;

while (low = high)

{

int mid = (low + high) / 2;

if (key == a[mid])

{

return mid; //返回找到的索引值

}

else

{

if (key a[mid])

high = mid - 1;

else

low = mid + 1;

}

}

return -1; //查找失敗

}

static void Main(string[] args)

{

Console.WriteLine("請(qǐng)輸入10個(gè)遞增數(shù)字: ");

int[] list = new int[10];

for (int i = 0; i 10; i++)

{

Console.Write("數(shù)字 : ", i);

list = Convert.ToInt32(Console.ReadLine());

}

Console.Write("請(qǐng)輸入一個(gè)你要查找的數(shù)字:");

int find = Convert.ToInt32(Console.ReadLine());

int result = Binsch(list, find);

Console.WriteLine(result);

}

}

}

分塊查找又索引查找,它主要用于“分塊有序”表的查找。所謂“分塊有序”是指將線性表L(一維數(shù)組)分成m個(gè)子表(要求每個(gè)子表的長度相等),且第i+1個(gè)子表中的每一個(gè)項(xiàng)目均大于第i個(gè)子表中的所有項(xiàng)目。“分塊有序”表應(yīng)該包括線性表L本身和分塊的索引表A。因此,分塊查找的關(guān)鍵在于建立索引表A。

(1)建立索引表A(二維數(shù)組)

索引表包括兩部分:關(guān)鍵字項(xiàng)(子表中的最大值)和指針項(xiàng)(子表的第一項(xiàng)在線性表L中位置)

索引表按關(guān)鍵字有序的。

例如:線性表L(有序)為:1 2 3 4 5 6 7 8 9 10 11 12

分成m=3個(gè)子表:

索引表A:二維數(shù)組:第一列為每個(gè)子表的最大值 ,第二列為每個(gè)子表的起始地址

即: 4 0

8 4

12 8

(2)利用索引表A,確定待查項(xiàng)X所在的子表(塊)。

(3)在所確定的子表中可以用“折半查找”法搜索待查項(xiàng)X;若找到則輸出X;否則輸出未找到信息。

java 兩個(gè)類相同 但是里面的屬性不同,這是為什么

n1和n2本身就指向兩個(gè)完全不同的對(duì)象,因此其成員對(duì)象的地址不同也是很自然的

做了這么多年Java開發(fā),如何快速轉(zhuǎn)行大數(shù)據(jù)

java轉(zhuǎn)大數(shù)據(jù)是非常有優(yōu)勢(shì)的,如果想轉(zhuǎn)入大數(shù)據(jù)開發(fā)領(lǐng)域,選擇數(shù)倉開發(fā)是個(gè)捷徑。千鋒教育擁有線上免費(fèi)Java線上公開課。如果特別想做更底層的開發(fā),也可以選擇從數(shù)倉開發(fā)切入,先接觸,再曲線救國。那么數(shù)倉開發(fā)需要學(xué)啥? 1、會(huì)一門基礎(chǔ)語言:java/python/scala:如果是java相關(guān)開發(fā)轉(zhuǎn)大數(shù)據(jù),那實(shí)在是太容易了,這一項(xiàng)就可以略過了。2、分布式存儲(chǔ)及調(diào)度理論:hdfs、yarn的理論要理解且熟記,這些對(duì)于學(xué)習(xí)spark 或者h(yuǎn)ive 以及sql的優(yōu)化是最最基礎(chǔ)的知識(shí)。

3、sql 框架要會(huì)一個(gè):spark sql/hive sql :如果對(duì)hive和spark都不懂的話,那就選擇學(xué)spark,現(xiàn)在離線數(shù)倉越來越多的公司切spark了。Spark 相關(guān)主要學(xué)習(xí)spark core 和spark sql;要求sql要寫的熟練,調(diào)優(yōu)參數(shù)及原理,能懂一些源碼就更好了。4、數(shù)倉建模、分層理論:這個(gè)是數(shù)倉的方法論,是一定要掌握的,理論都在《維度建模權(quán)威指南-kimball》這本書里,好書是好書,看起來比較枯燥,在看的時(shí)候多思考,結(jié)合自己正在做的業(yè)務(wù),想象一下如果要為現(xiàn)在的業(yè)務(wù)劃分主題該怎么劃、業(yè)務(wù)矩陣該怎么設(shè)計(jì)等等,大膽想象就ok。5、其它需要了解:大數(shù)據(jù)相關(guān)的架構(gòu)理論、olap、數(shù)據(jù)湖等等,知道越多越好,不需要太深入,主要作用是幫助理解大數(shù)據(jù)的那一套東西;網(wǎng)上的其它公司數(shù)倉的架構(gòu)是啥樣子,要知道架構(gòu)里每個(gè)組件的作用是啥。還有一些其它的框架組件:kafka、presto、druid、flink 等了解,寫個(gè)demo跑跑,知道流程就可。如果想了解更多相關(guān)知識(shí),建議到千鋒教育了解一下。千鋒教育目前在18個(gè)城市擁有22個(gè)校區(qū),年培養(yǎng)優(yōu)質(zhì)人才20000余人,與國內(nèi)20000余家企業(yè)建立人才輸送合作關(guān)系,院校合作超600所。

本文題目:決策樹代碼java代碼 決策樹代碼matlab
本文地址:http://muchs.cn/article0/docoooo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、App設(shè)計(jì)網(wǎng)站收錄、云服務(wù)器Google、靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司