| 761 | } |
| 762 | |
| 763 | void Dataset::DumpTextFile(const char* text_filename) { |
| 764 | FILE* file = NULL; |
| 765 | #if _MSC_VER |
| 766 | fopen_s(&file, text_filename, "wt"); |
| 767 | #else |
| 768 | file = fopen(text_filename, "wt"); |
| 769 | #endif |
| 770 | fprintf(file, "num_features: %d\n", num_features_); |
| 771 | fprintf(file, "num_total_features: %d\n", num_total_features_); |
| 772 | fprintf(file, "num_groups: %d\n", num_groups_); |
| 773 | fprintf(file, "num_data: %d\n", num_data_); |
| 774 | fprintf(file, "feature_names: "); |
| 775 | for (auto n : feature_names_) { |
| 776 | fprintf(file, "%s, ", n.c_str()); |
| 777 | } |
| 778 | fprintf(file, "\nmonotone_constraints: "); |
| 779 | for (auto i : monotone_types_) { |
| 780 | fprintf(file, "%d, ", i); |
| 781 | } |
| 782 | fprintf(file, "\nfeature_penalty: "); |
| 783 | for (auto i : feature_penalty_) { |
| 784 | fprintf(file, "%lf, ", i); |
| 785 | } |
| 786 | fprintf(file, "\nmax_bin_by_feature: "); |
| 787 | for (auto i : max_bin_by_feature_) { |
| 788 | fprintf(file, "%d, ", i); |
| 789 | } |
| 790 | fprintf(file, "\n"); |
| 791 | for (auto n : feature_names_) { |
| 792 | fprintf(file, "%s, ", n.c_str()); |
| 793 | } |
| 794 | fprintf(file, "\nforced_bins: "); |
| 795 | for (int i = 0; i < num_total_features_; ++i) { |
| 796 | fprintf(file, "\nfeature %d: ", i); |
| 797 | for (size_t j = 0; j < forced_bin_bounds_[i].size(); ++j) { |
| 798 | fprintf(file, "%lf, ", forced_bin_bounds_[i][j]); |
| 799 | } |
| 800 | } |
| 801 | std::vector<std::unique_ptr<BinIterator>> iterators; |
| 802 | iterators.reserve(num_features_); |
| 803 | for (int j = 0; j < num_features_; ++j) { |
| 804 | auto group_idx = feature2group_[j]; |
| 805 | auto sub_idx = feature2subfeature_[j]; |
| 806 | iterators.emplace_back(feature_groups_[group_idx]->SubFeatureIterator(sub_idx)); |
| 807 | } |
| 808 | for (data_size_t i = 0; i < num_data_; ++i) { |
| 809 | fprintf(file, "\n"); |
| 810 | for (int j = 0; j < num_total_features_; ++j) { |
| 811 | auto inner_feature_idx = used_feature_map_[j]; |
| 812 | if (inner_feature_idx < 0) { |
| 813 | fprintf(file, "NA, "); |
| 814 | } else { |
| 815 | fprintf(file, "%d, ", iterators[inner_feature_idx]->RawGet(i)); |
| 816 | } |
| 817 | } |
| 818 | } |
| 819 | fclose(file); |
| 820 | } |
no test coverage detected