2017-01-25 27 views
8

Tôi đang cố gắng sử dụng thuật toán di truyền cho vấn đề phân loại. Tuy nhiên, tôi đã không thành công để có được một bản tóm tắt cho mô hình cũng như dự đoán cho một khung dữ liệu mới. Làm thế nào tôi có thể nhận được bản tóm tắt và dự đoán cho tập dữ liệu mới? Dưới đây là ví dụ đồ chơi của tôi:Cách sử dụng thuật toán di truyền để dự đoán chính xác

library(genalg) 
dat <- read.table(text = " cats birds wolfs  snakes 
        0  3  9   7 
        1  3  8   7 
        1  1  2   3 
        0  1  2   3 
        0  1  2   3 
        1  6  1   1 
        0  6  1   1 
        1  6  1   1 ", header = TRUE) 
evalFunc <- function(x) { 
     if (dat$cats < 1) 
     return(0) else return(1) 
} 
iter = 100 
GAmodel <- rbga.bin(size = 7, popSize = 200, iters = iter, mutationChance = 0.01, 
        elitism = T, evalFunc = evalFunc) 

###########summary try############# 

cat(summary.rbga(GAmodel)) 
# Error in cat(summary.rbga(GAmodel)) : 
# could not find function "summary.rbga" 

############# prediction try########### 

dat$pred<-predict(GAmodel,newdata=dat) 
# Error in UseMethod("predict") : 
# no applicable method for 'predict' applied to an object of class "rbga" 

Cập nhật: Sau khi đọc câu trả lời nhất định và đọc liên kết này: Pattern prediction using Genetic Algorithm Tôi tự hỏi làm thế nào tôi có thể lập trình sử dụng GA như một phần của một cơ chế dự đoán? Theo văn bản của liên kết, người ta có thể sử dụng GA để tối ưu hóa hồi quy hoặc NN và sau đó sử dụng chức năng dự đoán do họ cung cấp/

+1

Đối với câu hỏi đầu tiên của bạn: 'cat (summary (GAmodel))' sẽ hoạt động. Nhưng những gì bạn đang cố gắng làm là không rõ ràng, bạn có thể cung cấp thêm ngữ cảnh không? – Scarabee

+0

Và 'evalFunc' phải làm gì? Nó không sử dụng 'x' ... – Scarabee

+0

Ý tưởng là sử dụng thuật toán cho vấn đề phân loại. Tôi không quen thuộc với loại thuật toán này vì vậy tôi đoán rằng evalFunc là để xác định vấn đề tối ưu hóa - phân biệt giữa" 0 " và 1". – mql4beginner

Trả lời

4

Genetic Algorithms để tối ưu hóa, không phải để phân loại. Do đó, có không có phương pháp dự đoán. Tuyên bố tóm tắt của bạn gần như hoạt động.

cat(summary(GAmodel)) 
GA Settings 
    Type     = binary chromosome 
    Population size  = 200 
    Number of Generations = 100 
    Elitism    = TRUE 
    Mutation Chance  = 0.01 

Search Domain 
    Var 1 = [,] 
    Var 0 = [,] 

GA Results 
    Best Solution : 1 1 0 0 0 0 1 

Một số thông tin bổ sung có sẵn từ Imperial College London

Cập nhật để đáp lại câu hỏi Cập nhật:

tôi nhìn thấy từ giấy mà bạn đề cập đến cách này có ý nghĩa. Ý tưởng là sử dụng thuật toán di truyền để tối ưu hóa trọng số cho mạng nơron, sau đó sử dụng mạng nơron để phân loại. Đây sẽ là một nhiệm vụ lớn, quá lớn để trả lời ở đây.

+0

Cảm ơn sự giúp đỡ của bạn @ G5W, tôi đã cập nhật câu hỏi của mình vì tôi đang tìm giải pháp dự đoán như được mô tả trong liên kết được cung cấp. – mql4beginner

Các vấn đề liên quan