예제 #1
0
def test_contextualbanditlabel_one_label():
    df = pd.DataFrame({"a": [1], "c": [-0.5], "p": [0.1], "x": [1]})
    conv = DFtoVW(df=df,
                  label=ContextualbanditLabel("a", "c", "p"),
                  features=Feature("x"))
    first_line = conv.convert_df()[0]
    assert first_line == "1:-0.5:0.1 | x:1"
예제 #2
0
def test_contextualbanditlabel_non_float_proba_error():
    df = pd.DataFrame({"a": [1], "c": [-0.5], "p": [1], "x": [1]})
    with pytest.raises(TypeError) as value_error:
        DFtoVW(
            df=df,
            label=ContextualbanditLabel("a", "c", "p"),
            features=Feature("x"),
        )
    expected = "In argument 'probability' of 'ContextualbanditLabel', column 'p' should be either of the following type(s): 'float'."
    assert expected == str(value_error.value)
예제 #3
0
def test_contextualbanditlabel_negative_proba_error():
    df = pd.DataFrame({"a": [1], "c": [-0.5], "p": [-0.1], "x": [1]})
    with pytest.raises(ValueError) as value_error:
        DFtoVW(
            df=df,
            label=ContextualbanditLabel("a", "c", "p"),
            features=Feature("x"),
        )
    expected = "In argument 'probability' of 'ContextualbanditLabel', column 'p' must be >= 0 and <= 1."
    assert expected == str(value_error.value)
예제 #4
0
def test_contextualbanditlabel_multiple_label():
    df = pd.DataFrame({
        "a1": [1],
        "c1": [-0.5],
        "p1": [0.1],
        "a2": [2],
        "c2": [-1.5],
        "p2": [0.6],
        "x": [1],
    })
    conv = DFtoVW(
        df=df,
        label=[
            ContextualbanditLabel("a1", "c1", "p1"),
            ContextualbanditLabel("a2", "c2", "p2"),
        ],
        features=Feature("x"),
    )
    first_line = conv.convert_df()[0]
    assert first_line == "1:-0.5:0.1 2:-1.5:0.6 | x:1"
예제 #5
0
def test_contextualbanditlabel_non_positive_action():
    df = pd.DataFrame({"a": [0], "c": [-0.5], "p": [0.5], "x": [1]})
    with pytest.raises(ValueError) as value_error:
        DFtoVW(
            df=df,
            label=ContextualbanditLabel("a", "c", "p"),
            features=Feature("x"),
        )
    expected = (
        "In argument 'action' of 'ContextualbanditLabel', column 'a' must be >= 1."
    )
    assert expected == str(value_error.value)
예제 #6
0
def test_listlabel_mixed_label_error():
    with pytest.raises(TypeError) as type_error:
        df = pd.DataFrame({
            "a": [1],
            "c": [-0.5],
            "p": [0.1],
            "b": [2],
            "x": [1]
        })
        conv = DFtoVW(
            df=df,
            label=[ContextualbanditLabel("a", "c", "p"),
                   MultiLabel("b")],
            features=Feature("x"),
        )
    expected = "The list passed in 'label' has mixed label types."
    assert expected == str(type_error.value)