137606a4c63364c56a0834d281023b62d2bda6cd8Vijay Vasudevan# encoding: utf-8
291f0b6c6a4d0f4f9259aac162b1fae5d4b24a0d1A. Unique TensorFlower# Copyright 2016 The TensorFlow Authors. All Rights Reserved.
337606a4c63364c56a0834d281023b62d2bda6cd8Vijay Vasudevan#
491f0b6c6a4d0f4f9259aac162b1fae5d4b24a0d1A. Unique TensorFlower# Licensed under the Apache License, Version 2.0 (the "License");
591f0b6c6a4d0f4f9259aac162b1fae5d4b24a0d1A. Unique TensorFlower# you may not use this file except in compliance with the License.
691f0b6c6a4d0f4f9259aac162b1fae5d4b24a0d1A. Unique TensorFlower# You may obtain a copy of the License at
737606a4c63364c56a0834d281023b62d2bda6cd8Vijay Vasudevan#
891f0b6c6a4d0f4f9259aac162b1fae5d4b24a0d1A. Unique TensorFlower#     http://www.apache.org/licenses/LICENSE-2.0
937606a4c63364c56a0834d281023b62d2bda6cd8Vijay Vasudevan#
1091f0b6c6a4d0f4f9259aac162b1fae5d4b24a0d1A. Unique TensorFlower# Unless required by applicable law or agreed to in writing, software
1191f0b6c6a4d0f4f9259aac162b1fae5d4b24a0d1A. Unique TensorFlower# distributed under the License is distributed on an "AS IS" BASIS,
1291f0b6c6a4d0f4f9259aac162b1fae5d4b24a0d1A. Unique TensorFlower# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1391f0b6c6a4d0f4f9259aac162b1fae5d4b24a0d1A. Unique TensorFlower# See the License for the specific language governing permissions and
1491f0b6c6a4d0f4f9259aac162b1fae5d4b24a0d1A. Unique TensorFlower# limitations under the License.
1591f0b6c6a4d0f4f9259aac162b1fae5d4b24a0d1A. Unique TensorFlower# ==============================================================================
1691f0b6c6a4d0f4f9259aac162b1fae5d4b24a0d1A. Unique TensorFlower"""Categorical tests."""
1791f0b6c6a4d0f4f9259aac162b1fae5d4b24a0d1A. Unique TensorFlower
1837606a4c63364c56a0834d281023b62d2bda6cd8Vijay Vasudevan#  limitations under the License.
19334702e19a920ac21fbbbf5b14f7619cb860c427Martin Wickefrom __future__ import absolute_import
20334702e19a920ac21fbbbf5b14f7619cb860c427Martin Wickefrom __future__ import division
21334702e19a920ac21fbbbf5b14f7619cb860c427Martin Wickefrom __future__ import print_function
2237606a4c63364c56a0834d281023b62d2bda6cd8Vijay Vasudevan
2337606a4c63364c56a0834d281023b62d2bda6cd8Vijay Vasudevanimport numpy as np
2437606a4c63364c56a0834d281023b62d2bda6cd8Vijay Vasudevan
25f30460b9f69bcaf0b5b6721acd3e18d4dcf987d5Martin Wickefrom tensorflow.contrib.learn.python.learn.learn_io import HAS_PANDAS
265c9bc51857bc0c330d3ab976871ee3509647d1e7Illia Polosukhinfrom tensorflow.contrib.learn.python.learn.preprocessing import categorical
27e121667dc609de978a223c56ee906368d2c4ceefJustine Tunneyfrom tensorflow.python.platform import test
2837606a4c63364c56a0834d281023b62d2bda6cd8Vijay Vasudevan
2937606a4c63364c56a0834d281023b62d2bda6cd8Vijay Vasudevan
30e121667dc609de978a223c56ee906368d2c4ceefJustine Tunneyclass CategoricalTest(test.TestCase):
3191f0b6c6a4d0f4f9259aac162b1fae5d4b24a0d1A. Unique TensorFlower  """Categorical tests."""
3237606a4c63364c56a0834d281023b62d2bda6cd8Vijay Vasudevan
33b2bbac7e2220ce4f04fcdb53fc602ccbaf4500a0A. Unique TensorFlower  def testSingleCategoricalProcessor(self):
34b2bbac7e2220ce4f04fcdb53fc602ccbaf4500a0A. Unique TensorFlower    cat_processor = categorical.CategoricalProcessor(min_frequency=1)
3591f0b6c6a4d0f4f9259aac162b1fae5d4b24a0d1A. Unique TensorFlower    x = cat_processor.fit_transform([["0"], [1], [float("nan")], ["C"], ["C"],
36b2bbac7e2220ce4f04fcdb53fc602ccbaf4500a0A. Unique TensorFlower                                     [1], ["0"], [np.nan], [3]])
3791f0b6c6a4d0f4f9259aac162b1fae5d4b24a0d1A. Unique TensorFlower    self.assertAllEqual(list(x), [[2], [1], [0], [3], [3], [1], [2], [0], [0]])
38b2bbac7e2220ce4f04fcdb53fc602ccbaf4500a0A. Unique TensorFlower
39b2bbac7e2220ce4f04fcdb53fc602ccbaf4500a0A. Unique TensorFlower  def testSingleCategoricalProcessorPandasSingleDF(self):
40b2bbac7e2220ce4f04fcdb53fc602ccbaf4500a0A. Unique TensorFlower    if HAS_PANDAS:
41d8c888d23f27a6072fe7e87da95ce8ea51bef3a0Martin Wicke      import pandas as pd  # pylint: disable=g-import-not-at-top
42b2bbac7e2220ce4f04fcdb53fc602ccbaf4500a0A. Unique TensorFlower      cat_processor = categorical.CategoricalProcessor()
43b2bbac7e2220ce4f04fcdb53fc602ccbaf4500a0A. Unique TensorFlower      data = pd.DataFrame({"Gender": ["Male", "Female", "Male"]})
4491f0b6c6a4d0f4f9259aac162b1fae5d4b24a0d1A. Unique TensorFlower      x = list(cat_processor.fit_transform(data))
4591f0b6c6a4d0f4f9259aac162b1fae5d4b24a0d1A. Unique TensorFlower      self.assertAllEqual(list(x), [[1], [2], [1]])
46b2bbac7e2220ce4f04fcdb53fc602ccbaf4500a0A. Unique TensorFlower
47b2bbac7e2220ce4f04fcdb53fc602ccbaf4500a0A. Unique TensorFlower  def testMultiCategoricalProcessor(self):
48e121667dc609de978a223c56ee906368d2c4ceefJustine Tunney    cat_processor = categorical.CategoricalProcessor(
49e121667dc609de978a223c56ee906368d2c4ceefJustine Tunney        min_frequency=0, share=False)
50e121667dc609de978a223c56ee906368d2c4ceefJustine Tunney    x = cat_processor.fit_transform([["0", "Male"], [1, "Female"],
51e121667dc609de978a223c56ee906368d2c4ceefJustine Tunney                                     ["3", "Male"]])
52b2bbac7e2220ce4f04fcdb53fc602ccbaf4500a0A. Unique TensorFlower    self.assertAllEqual(list(x), [[1, 1], [2, 2], [3, 1]])
5337606a4c63364c56a0834d281023b62d2bda6cd8Vijay Vasudevan
5437606a4c63364c56a0834d281023b62d2bda6cd8Vijay Vasudevan
5537606a4c63364c56a0834d281023b62d2bda6cd8Vijay Vasudevanif __name__ == "__main__":
56e121667dc609de978a223c56ee906368d2c4ceefJustine Tunney  test.main()
57