首页 文章

在fastICA中提取特征(Matlab)

提问于
浏览
0

我是机器学习初学者,我非常感谢你的帮助 .

我正在尝试使用FastICA MATLAB工具箱,经过大量的谷歌搜索和阅读文档后,我变得越来越困惑 .

我正在使用Car Data Set并且我正在使用1000张100x40图像(500辆汽车,500辆非汽车) . 我正在使用fastica来寻找独立的组件(我将在稍后使用它们来构建汽车检测系统) .

我在我的火车数据集上运行以下代码:

[icasig, A, W] = fastica(Training_Set);

A和W是1000x1000矩阵,icasig是1000x4000矩阵,据我所知,icasig的行包含独立的组件,A是混合矩阵 .

如何绘制独立组件?有人能用简单的英语向我解释什么是W?

还有一件令我困惑的事情是,如果我在icasig中删除一些行并获得例如300x4000矩阵我是否正在进行特征压缩?

如果我使用分类算法(例如SVM),我如何改变我用来训练它的独立组件的数量?我认为rica是完美的,但不幸的是我没有统计和机器学习工具箱 .

1 回答

  • 1

    有人可以用简单的英语向我解释什么是W?

    ICA中的 w 通常表示分离矩阵 . 给定一个混合图像, X ,可以通过计算 wX 得到独立的组件 . 结果 S 通常是另一个矩阵,其大小与 X 相同 . S 的每一行都包含代表一个独立组件的数据 .

    使用ICA算法的主要目的之一是找到分离矩阵 w . 如果您对此一无所知,我建议您在继续阅读之前阅读更多文献 . 甚至fast ICA's Wikipedia页面也会告诉你 w .

    我如何绘制独立组件?

    如果 icasigS ,您可以尝试以下操作:

    icasig = abs(icasig) % take the absolute
    
    % you can add a for loop here to plot all components
    component=icasig(1,:) % take the first component
    im = reshape(component,[h,w,3]); % h being the height of the image of the component and w being the width
    im=uint8 (round(im)); 
    figure; imshow(im); 
    % end of the for loop. Be prepared to have a lot of pictures poping up.
    

    如果我在icasig中删除一些行并获得例如300x4000矩阵,那么我在进行特征压缩吗?

    如果删除某些单独的组件意味着功能压缩,那么是 .

相关问题