fisher_iris_dataset.cc 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. // Copyright 2018 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "media/learning/impl/fisher_iris_dataset.h"
  5. #include <vector>
  6. namespace {
  7. struct IrisExample : public media::learning::LabelledExample {
  8. IrisExample(float sepal_length,
  9. float sepal_width,
  10. float petal_length,
  11. float petal_width,
  12. const char* class_name) {
  13. target_value = media::learning::TargetValue(class_name);
  14. features.push_back(
  15. media::learning::FeatureValue(static_cast<int>(sepal_length * 10)));
  16. features.push_back(
  17. media::learning::FeatureValue(static_cast<int>(sepal_width * 10)));
  18. features.push_back(
  19. media::learning::FeatureValue(static_cast<int>(petal_length * 10)));
  20. features.push_back(
  21. media::learning::FeatureValue(static_cast<int>(petal_width * 10)));
  22. }
  23. };
  24. std::vector<IrisExample> iris_examples({
  25. {5.1, 3.5, 1.4, 0.2, "Iris-setosa"},
  26. {4.9, 3.0, 1.4, 0.2, "Iris-setosa"},
  27. {4.7, 3.2, 1.3, 0.2, "Iris-setosa"},
  28. {4.6, 3.1, 1.5, 0.2, "Iris-setosa"},
  29. {5.0, 3.6, 1.4, 0.2, "Iris-setosa"},
  30. {5.4, 3.9, 1.7, 0.4, "Iris-setosa"},
  31. {4.6, 3.4, 1.4, 0.3, "Iris-setosa"},
  32. {5.0, 3.4, 1.5, 0.2, "Iris-setosa"},
  33. {4.4, 2.9, 1.4, 0.2, "Iris-setosa"},
  34. {4.9, 3.1, 1.5, 0.1, "Iris-setosa"},
  35. {5.4, 3.7, 1.5, 0.2, "Iris-setosa"},
  36. {4.8, 3.4, 1.6, 0.2, "Iris-setosa"},
  37. {4.8, 3.0, 1.4, 0.1, "Iris-setosa"},
  38. {4.3, 3.0, 1.1, 0.1, "Iris-setosa"},
  39. {5.8, 4.0, 1.2, 0.2, "Iris-setosa"},
  40. {5.7, 4.4, 1.5, 0.4, "Iris-setosa"},
  41. {5.4, 3.9, 1.3, 0.4, "Iris-setosa"},
  42. {5.1, 3.5, 1.4, 0.3, "Iris-setosa"},
  43. {5.7, 3.8, 1.7, 0.3, "Iris-setosa"},
  44. {5.1, 3.8, 1.5, 0.3, "Iris-setosa"},
  45. {5.4, 3.4, 1.7, 0.2, "Iris-setosa"},
  46. {5.1, 3.7, 1.5, 0.4, "Iris-setosa"},
  47. {4.6, 3.6, 1.0, 0.2, "Iris-setosa"},
  48. {5.1, 3.3, 1.7, 0.5, "Iris-setosa"},
  49. {4.8, 3.4, 1.9, 0.2, "Iris-setosa"},
  50. {5.0, 3.0, 1.6, 0.2, "Iris-setosa"},
  51. {5.0, 3.4, 1.6, 0.4, "Iris-setosa"},
  52. {5.2, 3.5, 1.5, 0.2, "Iris-setosa"},
  53. {5.2, 3.4, 1.4, 0.2, "Iris-setosa"},
  54. {4.7, 3.2, 1.6, 0.2, "Iris-setosa"},
  55. {4.8, 3.1, 1.6, 0.2, "Iris-setosa"},
  56. {5.4, 3.4, 1.5, 0.4, "Iris-setosa"},
  57. {5.2, 4.1, 1.5, 0.1, "Iris-setosa"},
  58. {5.5, 4.2, 1.4, 0.2, "Iris-setosa"},
  59. {4.9, 3.1, 1.5, 0.1, "Iris-setosa"},
  60. {5.0, 3.2, 1.2, 0.2, "Iris-setosa"},
  61. {5.5, 3.5, 1.3, 0.2, "Iris-setosa"},
  62. {4.9, 3.1, 1.5, 0.1, "Iris-setosa"},
  63. {4.4, 3.0, 1.3, 0.2, "Iris-setosa"},
  64. {5.1, 3.4, 1.5, 0.2, "Iris-setosa"},
  65. {5.0, 3.5, 1.3, 0.3, "Iris-setosa"},
  66. {4.5, 2.3, 1.3, 0.3, "Iris-setosa"},
  67. {4.4, 3.2, 1.3, 0.2, "Iris-setosa"},
  68. {5.0, 3.5, 1.6, 0.6, "Iris-setosa"},
  69. {5.1, 3.8, 1.9, 0.4, "Iris-setosa"},
  70. {4.8, 3.0, 1.4, 0.3, "Iris-setosa"},
  71. {5.1, 3.8, 1.6, 0.2, "Iris-setosa"},
  72. {4.6, 3.2, 1.4, 0.2, "Iris-setosa"},
  73. {5.3, 3.7, 1.5, 0.2, "Iris-setosa"},
  74. {5.0, 3.3, 1.4, 0.2, "Iris-setosa"},
  75. {7.0, 3.2, 4.7, 1.4, "Iris-versicolor"},
  76. {6.4, 3.2, 4.5, 1.5, "Iris-versicolor"},
  77. {6.9, 3.1, 4.9, 1.5, "Iris-versicolor"},
  78. {5.5, 2.3, 4.0, 1.3, "Iris-versicolor"},
  79. {6.5, 2.8, 4.6, 1.5, "Iris-versicolor"},
  80. {5.7, 2.8, 4.5, 1.3, "Iris-versicolor"},
  81. {6.3, 3.3, 4.7, 1.6, "Iris-versicolor"},
  82. {4.9, 2.4, 3.3, 1.0, "Iris-versicolor"},
  83. {6.6, 2.9, 4.6, 1.3, "Iris-versicolor"},
  84. {5.2, 2.7, 3.9, 1.4, "Iris-versicolor"},
  85. {5.0, 2.0, 3.5, 1.0, "Iris-versicolor"},
  86. {5.9, 3.0, 4.2, 1.5, "Iris-versicolor"},
  87. {6.0, 2.2, 4.0, 1.0, "Iris-versicolor"},
  88. {6.1, 2.9, 4.7, 1.4, "Iris-versicolor"},
  89. {5.6, 2.9, 3.6, 1.3, "Iris-versicolor"},
  90. {6.7, 3.1, 4.4, 1.4, "Iris-versicolor"},
  91. {5.6, 3.0, 4.5, 1.5, "Iris-versicolor"},
  92. {5.8, 2.7, 4.1, 1.0, "Iris-versicolor"},
  93. {6.2, 2.2, 4.5, 1.5, "Iris-versicolor"},
  94. {5.6, 2.5, 3.9, 1.1, "Iris-versicolor"},
  95. {5.9, 3.2, 4.8, 1.8, "Iris-versicolor"},
  96. {6.1, 2.8, 4.0, 1.3, "Iris-versicolor"},
  97. {6.3, 2.5, 4.9, 1.5, "Iris-versicolor"},
  98. {6.1, 2.8, 4.7, 1.2, "Iris-versicolor"},
  99. {6.4, 2.9, 4.3, 1.3, "Iris-versicolor"},
  100. {6.6, 3.0, 4.4, 1.4, "Iris-versicolor"},
  101. {6.8, 2.8, 4.8, 1.4, "Iris-versicolor"},
  102. {6.7, 3.0, 5.0, 1.7, "Iris-versicolor"},
  103. {6.0, 2.9, 4.5, 1.5, "Iris-versicolor"},
  104. {5.7, 2.6, 3.5, 1.0, "Iris-versicolor"},
  105. {5.5, 2.4, 3.8, 1.1, "Iris-versicolor"},
  106. {5.5, 2.4, 3.7, 1.0, "Iris-versicolor"},
  107. {5.8, 2.7, 3.9, 1.2, "Iris-versicolor"},
  108. {6.0, 2.7, 5.1, 1.6, "Iris-versicolor"},
  109. {5.4, 3.0, 4.5, 1.5, "Iris-versicolor"},
  110. {6.0, 3.4, 4.5, 1.6, "Iris-versicolor"},
  111. {6.7, 3.1, 4.7, 1.5, "Iris-versicolor"},
  112. {6.3, 2.3, 4.4, 1.3, "Iris-versicolor"},
  113. {5.6, 3.0, 4.1, 1.3, "Iris-versicolor"},
  114. {5.5, 2.5, 4.0, 1.3, "Iris-versicolor"},
  115. {5.5, 2.6, 4.4, 1.2, "Iris-versicolor"},
  116. {6.1, 3.0, 4.6, 1.4, "Iris-versicolor"},
  117. {5.8, 2.6, 4.0, 1.2, "Iris-versicolor"},
  118. {5.0, 2.3, 3.3, 1.0, "Iris-versicolor"},
  119. {5.6, 2.7, 4.2, 1.3, "Iris-versicolor"},
  120. {5.7, 3.0, 4.2, 1.2, "Iris-versicolor"},
  121. {5.7, 2.9, 4.2, 1.3, "Iris-versicolor"},
  122. {6.2, 2.9, 4.3, 1.3, "Iris-versicolor"},
  123. {5.1, 2.5, 3.0, 1.1, "Iris-versicolor"},
  124. {5.7, 2.8, 4.1, 1.3, "Iris-versicolor"},
  125. {6.3, 3.3, 6.0, 2.5, "Iris-virginica"},
  126. {5.8, 2.7, 5.1, 1.9, "Iris-virginica"},
  127. {7.1, 3.0, 5.9, 2.1, "Iris-virginica"},
  128. {6.3, 2.9, 5.6, 1.8, "Iris-virginica"},
  129. {6.5, 3.0, 5.8, 2.2, "Iris-virginica"},
  130. {7.6, 3.0, 6.6, 2.1, "Iris-virginica"},
  131. {4.9, 2.5, 4.5, 1.7, "Iris-virginica"},
  132. {7.3, 2.9, 6.3, 1.8, "Iris-virginica"},
  133. {6.7, 2.5, 5.8, 1.8, "Iris-virginica"},
  134. {7.2, 3.6, 6.1, 2.5, "Iris-virginica"},
  135. {6.5, 3.2, 5.1, 2.0, "Iris-virginica"},
  136. {6.4, 2.7, 5.3, 1.9, "Iris-virginica"},
  137. {6.8, 3.0, 5.5, 2.1, "Iris-virginica"},
  138. {5.7, 2.5, 5.0, 2.0, "Iris-virginica"},
  139. {5.8, 2.8, 5.1, 2.4, "Iris-virginica"},
  140. {6.4, 3.2, 5.3, 2.3, "Iris-virginica"},
  141. {6.5, 3.0, 5.5, 1.8, "Iris-virginica"},
  142. {7.7, 3.8, 6.7, 2.2, "Iris-virginica"},
  143. {7.7, 2.6, 6.9, 2.3, "Iris-virginica"},
  144. {6.0, 2.2, 5.0, 1.5, "Iris-virginica"},
  145. {6.9, 3.2, 5.7, 2.3, "Iris-virginica"},
  146. {5.6, 2.8, 4.9, 2.0, "Iris-virginica"},
  147. {7.7, 2.8, 6.7, 2.0, "Iris-virginica"},
  148. {6.3, 2.7, 4.9, 1.8, "Iris-virginica"},
  149. {6.7, 3.3, 5.7, 2.1, "Iris-virginica"},
  150. {7.2, 3.2, 6.0, 1.8, "Iris-virginica"},
  151. {6.2, 2.8, 4.8, 1.8, "Iris-virginica"},
  152. {6.1, 3.0, 4.9, 1.8, "Iris-virginica"},
  153. {6.4, 2.8, 5.6, 2.1, "Iris-virginica"},
  154. {7.2, 3.0, 5.8, 1.6, "Iris-virginica"},
  155. {7.4, 2.8, 6.1, 1.9, "Iris-virginica"},
  156. {7.9, 3.8, 6.4, 2.0, "Iris-virginica"},
  157. {6.4, 2.8, 5.6, 2.2, "Iris-virginica"},
  158. {6.3, 2.8, 5.1, 1.5, "Iris-virginica"},
  159. {6.1, 2.6, 5.6, 1.4, "Iris-virginica"},
  160. {7.7, 3.0, 6.1, 2.3, "Iris-virginica"},
  161. {6.3, 3.4, 5.6, 2.4, "Iris-virginica"},
  162. {6.4, 3.1, 5.5, 1.8, "Iris-virginica"},
  163. {6.0, 3.0, 4.8, 1.8, "Iris-virginica"},
  164. {6.9, 3.1, 5.4, 2.1, "Iris-virginica"},
  165. {6.7, 3.1, 5.6, 2.4, "Iris-virginica"},
  166. {6.9, 3.1, 5.1, 2.3, "Iris-virginica"},
  167. {5.8, 2.7, 5.1, 1.9, "Iris-virginica"},
  168. {6.8, 3.2, 5.9, 2.3, "Iris-virginica"},
  169. {6.7, 3.3, 5.7, 2.5, "Iris-virginica"},
  170. {6.7, 3.0, 5.2, 2.3, "Iris-virginica"},
  171. {6.3, 2.5, 5.0, 1.9, "Iris-virginica"},
  172. {6.5, 3.0, 5.2, 2.0, "Iris-virginica"},
  173. {6.2, 3.4, 5.4, 2.3, "Iris-virginica"},
  174. {5.9, 3.0, 5.1, 1.8, "Iris-virginica"},
  175. });
  176. } // namespace
  177. namespace media {
  178. namespace learning {
  179. FisherIrisDataset::FisherIrisDataset() {
  180. for (auto& example : iris_examples)
  181. training_data_.push_back(example);
  182. }
  183. FisherIrisDataset::~FisherIrisDataset() = default;
  184. const TrainingData& FisherIrisDataset::GetTrainingData() const {
  185. return training_data_;
  186. }
  187. } // namespace learning
  188. } // namespace media