<s> """<STR_LIT>""" <EOL> __author__ = { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' <EOL> } <EOL> __version__ = <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> <EOL> __since__ = <NUM_LIT:20> , <NUM_LIT:1> , <NUM_LIT> <EOL> import pandas as pd <EOL> import testfm <EOL> from testfm . settings import USER , ITEM , DATE <EOL> from pandas . util . testing import assert_frame_equal <EOL> class TestSplitters ( object ) : <EOL> """<STR_LIT:U+0020>""" <EOL> @ classmethod <EOL> def setup_class ( cls ) : <EOL> cls . data = pd . DataFrame ( { <EOL> USER : [ <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:3> , <NUM_LIT:1> , <NUM_LIT:3> , <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:5> , <NUM_LIT:5> , <NUM_LIT:4> , <NUM_LIT:6> , <NUM_LIT:5> , <NUM_LIT:6> ] , <EOL> ITEM : [ <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:1> , <NUM_LIT:4> , <NUM_LIT:2> , <NUM_LIT:1> , <NUM_LIT:3> , <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:1> , <NUM_LIT:3> , <NUM_LIT:2> ] , <EOL> DATE : [ <EOL> <NUM_LIT> , <EOL> <NUM_LIT> , <EOL> <NUM_LIT> , <EOL> <NUM_LIT> , <EOL> <NUM_LIT> , <EOL> <NUM_LIT> , <EOL> <NUM_LIT> , <EOL> <NUM_LIT> , <EOL> <NUM_LIT> , <EOL> <NUM_LIT> , <EOL> <NUM_LIT> , <EOL> <NUM_LIT> , <EOL> <NUM_LIT> , <EOL> <NUM_LIT> <EOL> ] <EOL> } ) <EOL> cls . fractions = [ <NUM_LIT> , <NUM_LIT> ] <EOL> cls . holdout_results = [ <EOL> ( <EOL> { DATE : [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> ITEM : [ <NUM_LIT:2> , <NUM_LIT:1> , <NUM_LIT:1> ] , <EOL> USER : [ <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:5> ] } , <EOL> { DATE : [ <NUM_LIT> ] , <EOL> ITEM : [ <NUM_LIT:2> ] , <EOL> USER : [ <NUM_LIT:6> ] } <EOL> ) , <EOL> ( <EOL> { DATE : [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <EOL> <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <EOL> <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> ITEM : [ <NUM_LIT:2> , <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:4> , <NUM_LIT:1> , <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:1> , <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:1> , <NUM_LIT:3> ] , <EOL> USER : [ <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:5> , <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:5> , <NUM_LIT:1> , <NUM_LIT:3> , <NUM_LIT:1> , <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:4> , <NUM_LIT:3> ] } , <EOL> { DATE : [ <NUM_LIT> ] , <EOL> ITEM : [ <NUM_LIT:2> ] , <EOL> USER : [ <NUM_LIT:6> ] } <EOL> ) <EOL> ] <EOL> def test_holdout ( self ) : <EOL> """<STR_LIT>""" <EOL> fractions = self . __class__ . fractions <EOL> data = self . __class__ . data <EOL> results = self . __class__ . holdout_results <EOL> for i , fraction in enumerate ( fractions ) : <EOL> train , test = testfm . split . holdout ( data , fraction ) <EOL> print '<STR_LIT>' , fraction , '<STR_LIT:U+0020>' , <EOL> assert ( ( train . to_dict ( outtype = '<STR_LIT:list>' ) , test . to_dict ( outtype = '<STR_LIT:list>' ) ) <EOL> == results [ i ] ) <EOL> print '<STR_LIT>' <EOL> def test_random ( self ) : <EOL> fractions = self . __class__ . fractions <EOL> data = self . __class__ . data <EOL> rows = len ( data [ USER ] ) <EOL> for fraction in fractions : <EOL> train , test = testfm . split . holdoutByRandom ( data , fraction , <EOL> clean_not_seen = False ) <EOL> i = int ( rows * fraction ) <EOL> print '<STR_LIT>' , fraction , '<STR_LIT:U+0020>' , <EOL> print ( ( train . shape [ <NUM_LIT:0> ] , test . shape [ <NUM_LIT:0> ] ) , ( i , rows - i ) ) <EOL> assert ( ( train . shape [ <NUM_LIT:0> ] , test . shape [ <NUM_LIT:0> ] ) == ( i , rows - i ) ) , "<STR_LIT>" <EOL> assert_frame_equal ( <EOL> pd . concat ( ( train , test ) ) . sort ( [ DATE ] ) . set_index ( [ DATE ] ) , <EOL> data . sort ( [ DATE ] ) . set_index ( [ DATE ] ) ) <EOL> print '<STR_LIT>' </s>
