@@ -121,85 +121,6 @@ TEST(ParallelGHistBuilder, Reset) { ParallelGHistBuilderReset(); }
121121
122122TEST (ParallelGHistBuilder, ReduceHist) { ParallelGHistBuilderReduceHist (); }
123123
124- TEST (HistUtil, DenseCutsCategorical) {
125- Context ctx;
126- int categorical_sizes[] = {2 , 6 , 8 , 12 };
127- int num_bins = 256 ;
128- int sizes[] = {25 , 100 , 1000 };
129- for (auto n : sizes) {
130- for (auto num_categories : categorical_sizes) {
131- auto x = GenerateRandomCategoricalSingleColumn (n, num_categories);
132- std::vector<float > x_sorted (x);
133- std::sort (x_sorted.begin (), x_sorted.end ());
134- auto dmat = GetDMatrixFromData (x, n, 1 );
135- HistogramCuts cuts = SketchOnDMatrix (&ctx, dmat.get (), num_bins);
136- auto cuts_from_sketch = cuts.Values ();
137- EXPECT_GT (cuts_from_sketch.front (), x_sorted.front ());
138- EXPECT_GE (cuts_from_sketch.back (), x_sorted.back ());
139- EXPECT_EQ (cuts_from_sketch.size (), static_cast <size_t >(num_categories));
140- }
141- }
142- }
143-
144- TEST (HistUtil, DenseCutsAccuracyTest) {
145- Context ctx;
146- int bin_sizes[] = {2 , 16 , 256 , 512 };
147- int sizes[] = {100 };
148- int num_columns = 5 ;
149- for (auto num_rows : sizes) {
150- auto x = GenerateRandom (num_rows, num_columns);
151- auto dmat = GetDMatrixFromData (x, num_rows, num_columns);
152- for (auto num_bins : bin_sizes) {
153- HistogramCuts cuts = SketchOnDMatrix (&ctx, dmat.get (), num_bins);
154- ValidateCuts (cuts, dmat.get (), num_bins);
155- }
156- }
157- }
158-
159- TEST (HistUtil, DenseCutsAccuracyTestWeights) {
160- int bin_sizes[] = {2 , 16 , 256 , 512 };
161- int sizes[] = {100 , 1000 , 1500 };
162- int num_columns = 5 ;
163- Context ctx;
164- for (auto num_rows : sizes) {
165- auto x = GenerateRandom (num_rows, num_columns);
166- auto dmat = GetDMatrixFromData (x, num_rows, num_columns);
167- auto w = GenerateRandomWeights (num_rows);
168- dmat->Info ().weights_ .HostVector () = w;
169- for (auto num_bins : bin_sizes) {
170- {
171- HistogramCuts cuts = SketchOnDMatrix (&ctx, dmat.get (), num_bins, true );
172- ValidateCuts (cuts, dmat.get (), num_bins);
173- }
174- {
175- HistogramCuts cuts = SketchOnDMatrix (&ctx, dmat.get (), num_bins, false );
176- ValidateCuts (cuts, dmat.get (), num_bins);
177- }
178- }
179- }
180- }
181-
182- TEST (HistUtil, SortedWeightedExactCuts) {
183- Context ctx;
184- std::vector<float > x{0 .0f , 1 .0f , 2 .0f , 3 .0f , 4 .0f , 5 .0f };
185- std::vector<float > weights{3 .0f , 0 .25f , 7 .0f , 2 .0f , 0 .5f , 4 .0f };
186- auto dmat = GetDMatrixFromData (x, x.size (), 1 );
187- dmat->Info ().weights_ .HostVector () = weights;
188-
189- auto sorted_cuts = SketchOnDMatrix (&ctx, dmat.get (), x.size (), true );
190- auto row_cuts = SketchOnDMatrix (&ctx, dmat.get (), x.size (), false );
191-
192- ASSERT_EQ (sorted_cuts.Ptrs (), row_cuts.Ptrs ());
193- ASSERT_EQ (sorted_cuts.Values ().size (), row_cuts.Values ().size ());
194- ASSERT_EQ (sorted_cuts.Values ().size (), x.size ());
195- for (std::size_t i = 1 ; i < x.size (); ++i) {
196- EXPECT_FLOAT_EQ (sorted_cuts.Values ()[i - 1 ], x[i]);
197- EXPECT_FLOAT_EQ (sorted_cuts.Values ()[i - 1 ], row_cuts.Values ()[i - 1 ]);
198- }
199- EXPECT_GT (sorted_cuts.Values ().back (), x.back ());
200- EXPECT_FLOAT_EQ (sorted_cuts.Values ().back (), row_cuts.Values ().back ());
201- }
202-
203124void TestQuantileWithHessian (bool use_sorted) {
204125 int bin_sizes[] = {2 , 16 , 256 , 512 };
205126 int sizes[] = {1000 , 1500 };
@@ -424,13 +345,4 @@ TEST(HistUtil, GroupWeightsEquivalentToRowWeights) {
424345 TestGroupWeightsEquivalentToRowWeights (false );
425346}
426347
427- TEST (HistUtil, SketchCategoricalFeatures) {
428- Context ctx;
429- TestCategoricalSketch (1000 , 256 , 32 , false , [&ctx](DMatrix* p_fmat, int32_t num_bins) {
430- return SketchOnDMatrix (&ctx, p_fmat, num_bins);
431- });
432- TestCategoricalSketch (1000 , 256 , 32 , true , [&ctx](DMatrix* p_fmat, int32_t num_bins) {
433- return SketchOnDMatrix (&ctx, p_fmat, num_bins);
434- });
435- }
436348} // namespace xgboost::common
0 commit comments