コード例 #1
0
ファイル: model_util_test.py プロジェクト: google/pwlfit
class PWLCurveModelTest(test_util.PWLFitTest, parameterized.TestCase):

  def test_simple_properties(self):
    model = model_util.PWLCurveModel('x', [(1, 10.0), (2, 20.0)])
    self.assertEqual('x', model.feature_name)
    self.assertEqual('f_x', model.name)
    self.assertEqual('f_x', model.clean_name)

  @parameterized.named_parameters((
      'not too sensitive',
      model_util.PWLCurveModel('x', [(1, 10.0), (2, 20.0)]),
      model_util.PWLCurveModel('x', ((1, 10), (2, 20))),
      True,
  ), (
      'not a PWLCurveModel',
      model_util.PWLCurveModel('x', [(1, 10.0), (2, 20.0)]),
      's',
      False,
  ), (
      'different points',
      model_util.PWLCurveModel('x', [(1, 10.0), (2, 20.0)]),
      model_util.PWLCurveModel('x', [(1, 11.0), (2, 21.0)]),
      False,
  ))
  def test_eq(self, m1, m2, expected):
    self.assertEqual(expected, m1 == m2)

  def test_str_for_fx(self):
    self.assertEqual(
        model_util.PWLCurveModel('x', [(1, 10.0), (2, 20.0)], np.log),
        model_util.PWLCurveModel('x', [(1, 10.0), (2, 20.0)], 'log'))

  def test_eval(self):
    model = model_util.PWLCurveModel('x', [(1, 10.0), (2, 20.0)])
    self.assert_allclose(np.array([10.0, 15.0, 20.0]), model.eval([1, 1.5, 2]))
    self.assert_allclose(
        np.array([10.0, 15.0, 20.0]),
        model.eval(pd.DataFrame({'x': [1, 1.5, 2]})))

  def test_expr(self):
    model = model_util.PWLCurveModel('x', [(1, 10.0), (2, 20.0)])
    self.assertEqual('PWLCurve("x", [(1, 10), (2, 20)])', model.expr())

  @parameterized.named_parameters((
      'simple',
      'PWLCurve("x", [(1, 10.0), (2, 20.0)])',
      transform.identity,
  ), (
      'fx',
      'PWLCurve("x", [(1, 10.0), (2, 20.0)], fx="log")',
      np.log,
  ), (
      'extra spaces',
      'PWLCurve(  "x",   [(1,  10.0), (2, 20.0)])',
      transform.identity,
  ))
  def test_from_expr(self, s, fx):
    model = model_util.PWLCurveModel('x', [(1, 10.0), (2, 20.0)], fx)
    self.assertEqual(model, model_util.PWLCurveModel.from_expr(s))
コード例 #2
0
ファイル: model_util_test.py プロジェクト: purplebleed/pwlfit
 def test_from_expr(self, expr):
     model = model_util.AdditiveModel([
         model_util.PWLCurveModel('x1', [(1, 1), (2, 2)]),
         model_util.EnumCurveModel('x2', {
             1: 1,
             2: 2
         }),
         model_util.ColumnModel('x3')
     ], 'my_model')
     self.assertEqual(model,
                      model_util.AdditiveModel.from_expr(expr, 'my_model'))
コード例 #3
0
ファイル: model_util_test.py プロジェクト: purplebleed/pwlfit
 def test_eval(self):
     model = model_util.AdditiveModel([
         model_util.PWLCurveModel('x1', [(1, 1), (2, 2)]),
         model_util.EnumCurveModel('x2', {
             1: 10,
             2: 20
         }),
         model_util.ColumnModel('x3')
     ], 'my_model')
     df = pd.DataFrame({'x1': [1, 1, 2], 'x2': [1, 1, 2], 'x3': [3, 3, 3]})
     self.assert_allclose(np.array([14, 14, 25]), model.eval(df))
コード例 #4
0
ファイル: model_util_test.py プロジェクト: purplebleed/pwlfit
 def test_simple_properties(self):
     model = model_util.AdditiveModel([
         model_util.PWLCurveModel('x1', [(1, 1), (2, 2)]),
         model_util.EnumCurveModel('x2', {
             1: 1,
             2: 2
         }),
         model_util.ColumnModel('x3')
     ], 'my_model')
     self.assertEqual('my_model', model.name)
     self.assertEqual(['x1', 'x2', 'x3'], model.feature_names)
コード例 #5
0
ファイル: model_util_test.py プロジェクト: purplebleed/pwlfit
    def test_expr(self):
        model = model_util.AdditiveModel([
            model_util.PWLCurveModel('x1', [(1, 1), (2, 2)]),
            model_util.EnumCurveModel('x2', {
                1: 1,
                2: 2
            }),
            model_util.ColumnModel('x3')
        ], 'my_model')
        expr = """score = sum([
  PWLCurve("x1", [(1, 1), (2, 2)]),
  EnumCurve("x2", {1: 1, 2: 2}),
  Column("x3"),
])"""
        self.assertEqual(expr, model.expr())
コード例 #6
0
ファイル: model_util_test.py プロジェクト: purplebleed/pwlfit
 def test_simple_properties(self):
     model = model_util.PWLCurveModel('x', [(1, 10.0), (2, 20.0)])
     self.assertEqual('x', model.feature_name)
     self.assertEqual('f_x', model.name)
     self.assertEqual('f_x', model.clean_name)
コード例 #7
0
ファイル: model_util_test.py プロジェクト: purplebleed/pwlfit
 def test_no_duplicate_features_allowed(self):
     with self.assertRaisesRegex(ValueError, 'Duplicate submodels'):
         model_util.AdditiveModel([
             model_util.ColumnModel('x1'),
             model_util.PWLCurveModel('x1', [(1, 1), (2, 2)])
         ], 'my_model')
コード例 #8
0
ファイル: model_util_test.py プロジェクト: purplebleed/pwlfit
 def test_from_expr(self, s, fx):
     model = model_util.PWLCurveModel('x', [(1, 10.0), (2, 20.0)], fx)
     self.assertEqual(model, model_util.PWLCurveModel.from_expr(s))
コード例 #9
0
ファイル: model_util_test.py プロジェクト: purplebleed/pwlfit
 def test_expr(self):
     model = model_util.PWLCurveModel('x', [(1, 10.0), (2, 20.0)])
     self.assertEqual('PWLCurve("x", [(1, 10), (2, 20)])', model.expr())
コード例 #10
0
ファイル: model_util_test.py プロジェクト: purplebleed/pwlfit
 def test_eval(self):
     model = model_util.PWLCurveModel('x', [(1, 10.0), (2, 20.0)])
     self.assert_allclose(np.array([10.0, 15.0, 20.0]),
                          model.eval([1, 1.5, 2]))
     self.assert_allclose(np.array([10.0, 15.0, 20.0]),
                          model.eval(pd.DataFrame({'x': [1, 1.5, 2]})))
コード例 #11
0
ファイル: model_util_test.py プロジェクト: google/pwlfit
 def test_str_for_fx(self):
   self.assertEqual(
       model_util.PWLCurveModel('x', [(1, 10.0), (2, 20.0)], np.log),
       model_util.PWLCurveModel('x', [(1, 10.0), (2, 20.0)], 'log'))