41 #ifndef SHARK_DATA_SPARSEDATA_H 42 #define SHARK_DATA_SPARSEDATA_H 52 typedef std::pair< unsigned int, size_t > LabelSortPair;
53 static inline bool cmpLabelSortPair(
const LabelSortPair& left,
const LabelSortPair& right) {
54 return left.first > right.first;
74 LabeledData<RealVector, unsigned int>& dataset,
76 unsigned int highestIndex = 0,
77 std::size_t batchSize = LabeledData<RealVector, unsigned int>::DefaultBatchSize
87 LabeledData<CompressedRealVector, unsigned int>& dataset,
89 unsigned int highestIndex = 0,
90 std::size_t batchSize = LabeledData<RealVector, unsigned int>::DefaultBatchSize
100 LabeledData<RealVector, unsigned int>& dataset,
102 unsigned int highestIndex = 0,
103 std::size_t batchSize = LabeledData<RealVector, unsigned int>::DefaultBatchSize
113 LabeledData<CompressedRealVector, unsigned int>& dataset,
115 unsigned int highestIndex = 0,
116 std::size_t batchSize = LabeledData<RealVector, unsigned int>::DefaultBatchSize
128 template<
typename InputType>
134 if (append ==
true) {
135 ofs.open (fn.c_str(), std::fstream::out | std::fstream::app );
137 ofs.open (fn.c_str());
141 throw(
SHARKEXCEPTION(
"[exportSparseData] file can not be opened for writing" ) );
147 std::vector<detail::LabelSortPair> L;
149 for(std::size_t i = 0; i < elements; i++)
150 L.push_back(detail::LabelSortPair(dataset.
element(i).label, i));
151 std::sort (L.begin(), L.end(), detail::cmpLabelSortPair);
154 for(std::size_t ii = 0; ii < elements; ii++) {
157 if(sortLabels) i = L[ii].second;
160 if(oneMinusOne) ofs << 2*int(dataset.
element(i).label)-1 <<
" ";
162 else ofs << dataset.
element(i).label+1 <<
" ";
164 for(std::size_t j=0; j<dim; j++) {
166 ofs <<
" " << j+1 <<
":" <<dataset.
element(i).input(j);
167 else if(dataset.
element(i).input(j) != 0)
168 ofs <<
" " << j+1 <<
":" << dataset.
element(i).input(j);