85 const std::size_t d,
const std::size_t zstride,
const std::vector<DIMTYPE> &index,
86 std::vector<REALTYPE> &Z, std::vector<REALTYPE> &mean, std::vector<REALTYPE> &scale,
87 AFTERPATTERN after_pattern)
89 const DIMTYPE stride=da->getNoOfFeatures();
90 mean.assign(d,0.0); scale.assign(d,0.0);
92 typename DATAACCESSOR::PPattern p;
95 for(DIMTYPE c=0;c<classes;c++)
98 for(
const auto &blk : da->blocks(
TRAIN))
for(i=0,p=blk.data,s=blk.size;i<s;i++)
100 const auto *pat=&p[(std::size_t)i*stride];
101 for(std::size_t f=0;f<d;f++) {
102 const REALTYPE v=(REALTYPE)pat[index[f]];
106 after_pattern(pat,c);
111 for(std::size_t f=0;f<d;f++) mean[f]/=(REALTYPE)N;
116 for(std::size_t n=0;n<N;n++)
117 for(std::size_t f=0;f<d;f++) {
const REALTYPE dev=Z[n*zstride+f]-mean[f]; scale[f]+=dev*dev;}
118 for(std::size_t f=0;f<d;f++)
120 const REALTYPE var=scale[f]/(REALTYPE)N;
121 scale[f]=(var>0.0)?std::sqrt(var):1.0;
123 for(std::size_t n=0;n<N;n++)
124 for(std::size_t f=0;f<d;f++) Z[n*zstride+f]=(Z[n*zstride+f]-mean[f])/scale[f];
135 for(std::size_t j=0;j<m;j++)
137 REALTYPE diag=A[j*m+j];
138 for(std::size_t k=0;k<j;k++) diag-=A[j*m+k]*A[j*m+k];
139 if(!(diag>0.0) || !std::isfinite(diag))
return false;
140 diag=std::sqrt(diag);
142 for(std::size_t i=j+1;i<m;i++)
145 for(std::size_t k=0;k<j;k++) v-=A[i*m+k]*A[j*m+k];
157 const REALTYPE *rhs,
const bool negate_rhs, REALTYPE *out)
159 for(std::size_t i=0;i<m;i++)
161 REALTYPE v=negate_rhs?-rhs[i]:rhs[i];
162 for(std::size_t k=0;k<i;k++) v-=A[i*m+k]*out[k];
165 for(std::size_t ii=m;ii>0;ii--)
167 const std::size_t i=ii-1;
169 for(std::size_t k=i+1;k<m;k++) v-=A[k*m+i]*out[k];
The Feature Selection Toolbox 4 library: every library component – data access, criteria and classifi...
Definition data_accessor.hpp:80
std::size_t standardize_design(const std::shared_ptr< DATAACCESSOR > &da, const DIMTYPE classes, const std::size_t d, const std::size_t zstride, const std::vector< DIMTYPE > &index, std::vector< REALTYPE > &Z, std::vector< REALTYPE > &mean, std::vector< REALTYPE > &scale, AFTERPATTERN after_pattern)
Definition dense_train_tools.hpp:84
void cholesky_solve(const std::vector< REALTYPE > &A, const std::size_t m, const REALTYPE *rhs, const bool negate_rhs, REALTYPE *out)
Definition dense_train_tools.hpp:156