void CharacterData::calculateStats() { if (train_size == 0) return; CharacterData::resetStats(); for (const auto &it : train_data) { char x = it.first; size_t it_size = it.second.size(); vector<int> sum(16, 0); vector<double> sumDifference(16, 0); for (int i = 0; i < it_size; i++) for (int j = 0; j < it.second[i].size(); j++) sum[j] += it.second[i][j]; for (const auto &s : sum) stats.mean[x].push_back((double) s / it_size); for (int i = 0; i < it_size; i++) for (int j = 0; j < it.second[i].size(); j++) sumDifference[j] += (it.second[i][j] - stats.mean[x][j]) * (it.second[i][j] - stats.mean[x][j]); for (const auto &s : sumDifference) stats.variance[x].push_back((double) s / it_size); stats.frequence[x] = (double) it_size / train_size; } }
int main(int argc, char *argv[]) { std::cout<<sumDifference(100)<<std::endl; }