j48演算法
1. 請問如何能夠讓weka支持中文如何讓id3演算法可視化
hi,
weka支持中文的話,可以在weka安裝目錄下,打開RunWeka.ini文件,把其中fileEncoding=utf-8設為utf-8即可支持中文,id3可視化搞定了。。詳搜「csdn 天澤28 weka中ID3演算法及可視化」博客里介紹了。。不好意思沒法放鏈接,網路不讓放。。
2. 如何使用java Weka開源項目,實現J48決策樹、支持向量機演算法,在10個UCI數據集上對這兩個演算法進行性能
publicstaticvoidRegular()throwsException{
Fileinputfile=newFile("F:\weka\eucalyptus_Train.arff");
ArffLoaderloader=newArffLoader();
loader.setFile(inputfile);
InstancesinsTrain=loader.getDataSet();
insTrain.setClassIndex(insTrain.numAttributes()-1);
inputfile=newFile("F:\weka\eucalyptus_Test.arff");
loader.setFile(inputfile);
InstancesinsTest=loader.getDataSet();
insTest.setClassIndex(insTest.numAttributes()-1);
doublesum=insTest.numInstances();
intright=0;
Classifierclas=newJ48();
//Classifierclas=newweka.classifiers.bayes.BayesNet();
clas.buildClassifier(insTrain);
for(inti=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("分類准確率:"+right/sum);
}
svm的話,要用一個wlsvm的包。 代碼是一樣的,就是Classifier class= new J48()這里要用svm的實例
3. 誰知道OVERFITTING程度在WEKA里用J48演算法得到的結果中是怎麼看出來的,或者通過什麼方法可以看出來
如果你將數據集分成兩半A和B,用A來建模,再用A去測試,得到的精度很高,用B測試,得到的精度很低,則是overfitting。
可以手動分,也可以用cross-validation直接看
4. weka的explorer運行j48演算法後,輸出如下類容,各是什麼含義
這就是決策樹分類演算法的准確度細節表。第三列是准確率,也就是查准率,第四列是召回率,也就是查全率,第五列是F值,是根據准確率跟召回率算出來的。下面是權重應該。
5. 信息增益准則為什麼對可取值數目較多的屬性有所偏好
從公式出發,信息增益是整個數據集的經驗熵與特徵A對整個數據集的經驗條件熵的差值,信息增益越大即經驗條件熵越小,那什麼情況下的屬性會有極小的的經驗條件熵呢?舉個極端的例子,如果將身份證號作為一個屬性,那麼,其實每個人的身份證號都是不相同的,也就是說,有多少個人,就有多少種取值,如果用身份證號這個屬性去劃分原數據集,那麼,原數據集中有多少個樣本,就會被劃分為多少個子集,這樣的話,會導致信息增益公式的第二項整體為0,雖然這種劃分毫無意義,但是從信息增益准則來講,這就是最好的劃分屬性。其實從概念來講,就一句話,信息增益表示由於特徵A而使得數據集的分類不確定性減少的程度,信息增益大的特徵具有更強的分類能力。
6. weka 代碼 演算法 j48 決策樹 c4.5
我想你應該是想通過這個頁面的url來得到這個網頁裡面的某些數據把。用HttpClient 。
下面我這個方法是得到搜狗頁面命中多少條記錄的代碼。
public static void main (String args[]){
String sRequestUrlString="http://www.sogou.com/web?query=ondblclick
%3D%22%22";
GetMethod getMethod = new GetMethod(sRequestUrlString);
HttpClient client = new HttpClient();
client.setConnectionTimeout(1000 * 60);
int status=0;
try {
status = client.executeMethod(getMethod);
} catch (HttpException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String sResponse="";
if(status==HttpStatus.SC_OK) {
sResponse=(getMethod.getResponseBodyAsString());
} else {
System.out.println("檢索失敗");
}
getMethod.releaseConnection();
String regExData = "找到 ([,\\d]*) 個網頁";
if(sResponse!=null && sResponse.trim().length()>0) {
Pattern pattern = Pattern.compile(regExData);
Matcher matcher = pattern.matcher(sResponse);
if(matcher.find()) {
if(matcher.groupCount()>=1) {
int iTmpInteger =
Integer.parseInt(matcher.group(1).replaceAll(",",""),10);
System.out.println("找到"+iTmpInteger+"個網頁");
}
}
}
}
這段測試代碼是來測試搜狗的,String sRequestUrlString="http://www.sogou.com/web?
query=ondblclick%3D%22%22";
這里是拼寫好的檢索的url,
sResponse=(getMethod.getResponseBodyAsString());這個是得到本頁面的源文件,然後通過
String regExData = "找到 ([,\\d]*) 個網頁";正則表達式來獲取([,\\d]*) ,得到命中的條數。
7. weka中用J48(即C4.5)演算法對數據集進行訓練建模與測試,結果不是很理想,
weka 對數據進行操作的時候沒有要求必須使用arff文件類型的,可以選擇,一般都是將表格數據轉換為.csv格式的數據進行導入。
8. 數據挖掘軟體 Weka 中將 C4.5 演算法命名為 J48,C4.5 和 J48 名稱的含義和來由是什麼
C4.5的作者把演算法升級到C4.8,然後Weka的作者用Java 語言實現了C4.8,並把它命名為J4.8
最新的版本已經是 C5.0
9. 數據挖掘j48演算法和randomtree 演算法的異同
不同演算法的結果當然會不一樣
J48是簡單演算法,按照樹枝分類法來分析數據。假如a=3,b=4,在j48做training的時候就會記錄:x<=3為a,x>3為b
可能你的數據不適合j48這種演算法
個人推薦在function中的svm演算法,很靈活