help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: generate polynomial features given a vector X and degree


From: aliko
Subject: Re: generate polynomial features given a vector X and degree
Date: Tue, 20 Dec 2011 13:42:34 +0400
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20111105 Thunderbird/8.0

Yes,
multinom.m (specfun package)
http://octave.sourceforge.net/specfun/function/multinom.html


Thats looks exactly like what I was looking for!
Thank you very much! Unfortunatley while waiting for approving of my question on the list I've managed to write quick and dirty for-loop based code that do job for 2<=degree<=3 and for X with more then 3 rows that fits my current needs. But anyway function suggested by you is more general and will be usefull for future applications.

By the way for you to have a smile my dirty loop-based code as follows :)

function out = mapFeature(X, degree)

out = X;

degrees = {
        [2 zeros(1, size(X,2)-1); 1 1 zeros(1, size(X,2)-2)],
[3 zeros(1, size(X,2)-1); 2 1 zeros(1, size(X,2)-2); 1 1 1 zeros(1, size(X,2)-3)]};

for i = 2:degree
    for j = 1:size(degrees{i - 1},1)
        % calculate permutations
        perms_all = perms(degrees{i - 1}(j,:));
        perms_cur = perms_all(1,:);
        % eliminate duplicates
        for k = 2:size(perms_all, 1)
            is_uinque = true;
            for m = 1:size(perms_cur, 1)
                if perms_all(k,:) == perms_cur(m, :)
                    is_uinque = false;
                    break;
                end
            end
            if is_uinque
                perms_cur = [perms_cur; perms_all(k, :)];
            end
        end
        perms_cur;
        % for every permutation
        for k = 1:size(perms_cur, 1)
            X_col = ones(size(X,1), 1);
            for m = 1:size(X,2)
                X_col = X_col .* X(:, m) .^ perms_cur(k, m);
            end
            out = [out X_col];
        end
    end
end



reply via email to

[Prev in Thread] Current Thread [Next in Thread]