Predict với Weka

Cho mình hỏi về predict qua cây sinh ra từ ID3.
Mình đã sinh ra cây từ thuật toán ID3 nhưng đến phần predict thì lại ko chạy được. Phần thuộc tính NameIsSecret phải xử lí như thế nào? Đưa vào thì không thể đọc được NameIsSecret do animalname không có giá trị này. Nếu chuyển sang ? thì lại không predict được (5 bộ đều bị lỗi).
Mọi người xử lí như thế nào?

@relation ID3_zoo_predict
@attribute animalname {aardvark, antelope, bear, boar, buffalo, calf, cavy, cheetah, deer, dolphin, elephant, fruitbat, giraffe, girl, goat, gorilla, hamster, hare, leopard, lion, lynx, mink, mole, mongoose, opossum, oryx, platypus, polecat, pony, porpoise, puma, pussycat, raccoon, reindeer, seal, sealion, squirrel, vampire, vole, wallaby, wolf, chicken, crow, dove, duck, flamingo, gull, hawk, kiwi, lark, ostrich, parakeet, penguin, pheasant, rhea, skimmer, skua, sparrow, swan, vulture, wren, pitviper, seasnake, slowworm, tortoise, tuatara, bass, carp, catfish, chub, dogfish, haddock, herring, pike, piranha, seahorse, sole, stingray, tuna, frog, newt, toad, flea, gnat, honeybee, housefly, ladybird, moth, termite, wasp, clam, crab, crayfish, lobster, octopus, scorpion, seawasp, slug, starfish, worm}
@attribute hair {0,1}
@attribute feathers {0,1}
@attribute eggs {0,1}
@attribute milk {0,1}
@attribute airborne {0,1}
@attribute aquatic {0,1}
@attribute predator {0,1}
@attribute toothed {0,1}
@attribute backbone {0,1}
@attribute breathes {0,1}
@attribute venomous {0,1}
@attribute fins {0,1}
@attribute legs {0,2,4,5,6,8}
@attribute tail {0,1}
@attribute domestic {0,1}
@attribute catsize {0,1}
@attribute type {1,2,3,4,5,6,7}
@data
NameIsSecret,1,0,0,1,0,0,0,1,1,1,0,0,4,1,0,1,?
NameIsSecret,0,1,1,0,1,0,0,0,1,1,0,0,2,1,1,0,?
NameIsSecret,0,0,1,0,0,0,1,1,1,1,1,0,0,1,0,0,?
NameIsSecret,0,0,1,0,0,1,1,1,1,0,0,1,0,1,0,0,?
NameIsSecret,0,0,1,0,0,1,1,1,1,1,0,0,4,1,0,0,?

Trước khi bạn sinh cây bạn phải xử lý loại bỏ cột name trước đã, vì cột đó nó mang tính định danh chứ không phải là thuộc tính của dữ liệu.

1 Like

Re-evaluate thì bị error hết, ko predict được. Lỗi predict như này thường là sai chỗ nào vậy anh?

=== Predictions on user test set ===

inst#     actual  predicted error prediction
    1        1:?        1:1       1 
    2        1:?        2:2       1 
    3        1:?        3:3       1 
    4        1:?        4:4       1 
    5        1:?        5:5       1 

Model đã ra.
=== Classifier model (full training set) ===

Id3


legs = 0
|  fins = 0
|  |  toothed = 0: 7
|  |  toothed = 1: 3
|  fins = 1
|  |  eggs = 0: 1
|  |  eggs = 1: 4
legs = 2
|  hair = 0: 2
|  hair = 1: 1
legs = 4
|  hair = 0
|  |  aquatic = 0: 3
|  |  aquatic = 1
|  |  |  toothed = 0: 7
|  |  |  toothed = 1: 5
|  hair = 1: 1
legs = 5: 7
legs = 6
|  aquatic = 0: 6
|  aquatic = 1: 7
legs = 8: 7

Bộ dữ liệu gốc là bộ này phải không bạn https://github.com/renatopp/arff-datasets/blob/master/classification/zoo.arff
Còn test set là lấy phần nào nhỉ :confused:

Mình không xài weka nhiều lắm (hồi trước làm bài tập thì có xài 2 lần thôi), không rõ bạn đang dính chỗ nào lắm :sweat_smile:

Bộ dữ liệu gốc đúng là bộ zoo đó anh.
Test set thì như file trên đầu topic, nhưng đã preprocess trước để bỏ cột animalname đi. Tạo ra cây được rồi nhưng đưa test set vào để predict thì error tất cả.

1 Like

Theo tôi nhé :smiley: training set của ông đâu ?
còn cái NameIsSecret tôi nghĩ là mình tự chọn 5 tên bất kỳ sau đó từ mô hình mà mình đã tạo được nhờ bộ training set + giải thuật ID3. sau khi xong thì ta chỉ cẩn in ra file arff mới thôi sau đó eng bấm vô rule mà nó vừa tạo ra xem phần different error rồi in ra file . File mới sẽ có phần dự đoán . Tôi tự học nên làm thế không biết có đúng ko cũng ko có ai chấm nên có gì sai ông chỉ giúp . Xin cảm ơn

1 Like

Cái này tôi chỉ cần bỏ cái name đi thôi, vì mấy cái này là định danh không thực hiện tiên đoán đươc. Còn các bước sau thì như ông.

Bỏ cái name luôn ah` @@ do tôi xây dựng cây thêm cái name nữa :smiley: không biết có ảnh hưởng gì không ?

Ông thử xem, do predict thì dựa vào các tham số chứ không dựa theo tên.

ahah tôi hiểu rồi ông cảm ơn ông

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?