www.gusucode.com > stats 源码程序 matlab案例代码 > stats/FeatureTransformationExample.m
%% Feature Transformation % This example shows how to use feature transformation methods to create % data models. % Copyright 2015 The MathWorks, Inc. %% Load Data load moore X = moore(:,1:5); rng('default'); % For reproducibility %% Compute Rank-Two Approximation Using Multiplicative Update Algorithm opt = statset('MaxIter',10,'Display','final'); [W0,H0] = nnmf(X,2,'replicates',5,'options',opt,'algorithm','mult'); %% Perform Factorization Using Alternating Least-Squares Algorithm opt = statset('Maxiter',1000,'Display','final'); [W,H] = nnmf(X,2,'w0',W0,'h0',H0,'options',opt,'algorithm','als'); %% Display H H %% Visualize Relative Contribution of Predictors in X biplot(H','scores',W,'varlabels',{'','','v3','','v5'}); axis([0 1.1 0 1.1]) xlabel('Column 1') ylabel('Column 2') %% Load Factor Analysis Data load stockreturns [Loadings,specificVar,T,stats] = factoran(stocks,3,'rotate','none'); %% Display Loadings Loadings %% Display Estimated Specific Variances specificVar %% Display p-value stats.p %% Fit Model with Two Common Factors [Loadings2,specificVar2,T2,stats2] = factoran(stocks, 2,'rotate','none'); stats2.p %% Use Promax Rotation Criterion [LoadingsPM,specVarPM] = factoran(stocks,3,'rotate','promax'); LoadingsPM %% Plot Using Factor Loadings as Coordinates biplot(LoadingsPM,'varlabels',num2str((1:10)')); axis square view(155,27); %% Plot Estimated Scores [LoadingsPM,specVarPM,TPM,stats,F] = factoran(stocks, 3,'rotate','promax'); plot3(F(:,1),F(:,2),F(:,3),'b.') line([-4 4 NaN 0 0 NaN 0 0], [0 0 NaN -4 4 NaN 0 0],[0 0 NaN 0 0 NaN -4 4], 'Color','black') xlabel('Financial Sector') ylabel('Retail Sector') zlabel('Technology Sector') grid on axis square view(-22.5, 8) %% Compute Estimated Factor Correlation Matrix inv(TPM'*TPM) %% Visualize Results biplot(LoadingsPM,'scores',F,'varlabels',num2str((1:10)')) xlabel('Financial Sector') ylabel('Retail Sector') zlabel('Technology Sector') axis square view(155,27)