@@ -118,7 +118,7 @@ <h1 class="modulename">
118118< span class ="sd "> Utility functions for teaching data science.</ span >
119119< span class ="sd "> """</ span >
120120
121- < span class ="kn "> from</ span > < span class ="nn "> typing</ span > < span class ="kn "> import</ span > < span class ="n "> Iterable</ span > < span class ="p "> ,</ span > < span class ="n "> Tuple</ span >
121+ < span class ="kn "> from</ span > < span class ="nn "> typing</ span > < span class ="kn "> import</ span > < span class ="n "> Iterable</ span > < span class ="p "> ,</ span > < span class ="n "> List </ span > < span class =" p " > , </ span > < span class =" n " > Tuple</ span >
122122
123123< span class ="kn "> import</ span > < span class ="nn "> re</ span >
124124< span class ="kn "> import</ span > < span class ="nn "> numpy</ span >
@@ -132,7 +132,7 @@ <h1 class="modulename">
132132< span class ="kn "> import</ span > < span class ="nn "> itertools</ span >
133133< span class ="kn "> import</ span > < span class ="nn "> pandas</ span >
134134< span class ="kn "> import</ span > < span class ="nn "> math</ span >
135- < span class ="kn "> from</ span > < span class ="nn "> data_algebra.cdata</ span > < span class ="kn "> import</ span > < span class ="o " > * </ span >
135+ < span class ="kn "> from</ span > < span class ="nn "> data_algebra.cdata</ span > < span class ="kn "> import</ span > < span class ="n " > RecordMap </ span > < span class =" p " > , </ span > < span class =" n " > RecordSpecification </ span >
136136
137137
138138< span class ="c1 "> # noinspection PyPep8Naming</ span >
@@ -262,8 +262,8 @@ <h1 class="modulename">
262262 < span class ="n "> step</ span > < span class ="o "> =</ span > < span class ="mf "> 0.01</ span >
263263 < span class ="n "> eval_pts</ span > < span class ="o "> =</ span > < span class ="n "> numpy</ span > < span class ="o "> .</ span > < span class ="n "> arange</ span > < span class ="p "> (</ span > < span class ="mi "> 0</ span > < span class ="p "> ,</ span > < span class ="mi "> 1</ span > < span class ="o "> +</ span > < span class ="n "> step</ span > < span class ="p "> ,</ span > < span class ="n "> step</ span > < span class ="p "> )</ span >
264264 < span class ="n "> q_eps</ span > < span class ="o "> =</ span > < span class ="mf "> 1e-6</ span >
265- < span class ="n "> q_low</ span > < span class ="o "> =</ span > < span class ="mi " > 0</ span >
266- < span class ="n "> q_high</ span > < span class ="o "> =</ span > < span class ="mi "> 1</ span >
265+ < span class ="n "> q_low</ span > < span class ="o "> =</ span > < span class ="mf " > 0. 0</ span >
266+ < span class ="n "> q_high</ span > < span class ="o "> =</ span > < span class ="mf "> 1.0 </ span >
267267 < span class ="k "> while</ span > < span class ="n "> q_low</ span > < span class ="o "> +</ span > < span class ="n "> q_eps</ span > < span class ="o "> <</ span > < span class ="n "> q_high</ span > < span class ="p "> :</ span >
268268 < span class ="n "> q_mid</ span > < span class ="o "> =</ span > < span class ="p "> (</ span > < span class ="n "> q_low</ span > < span class ="o "> +</ span > < span class ="n "> q_high</ span > < span class ="p "> )</ span > < span class ="o "> /</ span > < span class ="mf "> 2.0</ span >
269269 < span class ="n "> q_mid_area</ span > < span class ="o "> =</ span > < span class ="n "> numpy</ span > < span class ="o "> .</ span > < span class ="n "> mean</ span > < span class ="p "> (</ span > < span class ="mi "> 1</ span > < span class ="o "> -</ span > < span class ="p "> (</ span > < span class ="mi "> 1</ span > < span class ="o "> -</ span > < span class ="p "> (</ span > < span class ="mi "> 1</ span > < span class ="o "> -</ span > < span class ="n "> eval_pts</ span > < span class ="p "> )</ span > < span class ="o "> **</ span > < span class ="n "> q_mid</ span > < span class ="p "> )</ span > < span class ="o "> **</ span > < span class ="p "> (</ span > < span class ="mi "> 1</ span > < span class ="o "> /</ span > < span class ="n "> q_mid</ span > < span class ="p "> ))</ span >
@@ -894,8 +894,8 @@ <h1 class="modulename">
894894 < span class ="n "> pred_var</ span > < span class ="p "> :</ span > < span class ="nb "> str</ span > < span class ="p "> ,</ span >
895895 < span class ="n "> truth_var</ span > < span class ="p "> :</ span > < span class ="nb "> str</ span > < span class ="p "> ,</ span >
896896 < span class ="n "> truth_target</ span > < span class ="p "> :</ span > < span class ="nb "> bool</ span > < span class ="o "> =</ span > < span class ="kc "> True</ span > < span class ="p "> ,</ span >
897- < span class ="n "> threshold_range</ span > < span class ="p "> :</ span > < span class ="n "> Tuple </ span > < span class ="p "> [</ span > < span class =" nb " > float </ span > < span class =" p " > , </ span > < span class ="nb "> float</ span > < span class ="p "> ]</ span > < span class ="o "> =</ span > < span class ="p "> (</ span > < span class ="o "> -</ span > < span class ="n "> math</ span > < span class ="o "> .</ span > < span class ="n "> inf</ span > < span class ="p "> ,</ span > < span class ="n "> math</ span > < span class ="o "> .</ span > < span class ="n "> inf</ span > < span class ="p "> ),</ span >
898- < span class ="n "> plotvars</ span > < span class ="p "> :</ span > < span class ="n "> Tuple </ span > < span class ="o "> =</ span > < span class ="p "> (</ span > < span class ="s2 "> "precision"</ span > < span class ="p "> ,</ span > < span class ="s2 "> "recall"</ span > < span class ="p "> ),</ span >
897+ < span class ="n "> threshold_range</ span > < span class ="p "> :</ span > < span class ="n "> Iterable </ span > < span class ="p "> [</ span > < span class ="nb "> float</ span > < span class ="p "> ]</ span > < span class ="o "> =</ span > < span class ="p "> (</ span > < span class ="o "> -</ span > < span class ="n "> math</ span > < span class ="o "> .</ span > < span class ="n "> inf</ span > < span class ="p "> ,</ span > < span class ="n "> math</ span > < span class ="o "> .</ span > < span class ="n "> inf</ span > < span class ="p "> ),</ span >
898+ < span class ="n "> plotvars</ span > < span class ="p "> :</ span > < span class ="n "> Iterable </ span > < span class =" p " > [ </ span > < span class =" nb " > str </ span > < span class =" p " > ] </ span > < span class ="o "> =</ span > < span class ="p "> (</ span > < span class ="s2 "> "precision"</ span > < span class ="p "> ,</ span > < span class ="s2 "> "recall"</ span > < span class ="p "> ),</ span >
899899 < span class ="n "> title</ span > < span class ="p "> :</ span > < span class ="nb "> str</ span > < span class ="o "> =</ span > < span class ="s2 "> "Measures as a function of threshold"</ span > < span class ="p "> ,</ span >
900900 < span class ="o "> *</ span > < span class ="p "> ,</ span >
901901 < span class ="n "> show</ span > < span class ="p "> :</ span > < span class ="nb "> bool</ span > < span class ="o "> =</ span > < span class ="kc "> True</ span > < span class ="p "> ,</ span >
@@ -936,10 +936,12 @@ <h1 class="modulename">
936936 < span class ="k "> if</ span > < span class ="nb "> isinstance</ span > < span class ="p "> (</ span > < span class ="n "> plotvars</ span > < span class ="p "> ,</ span > < span class ="nb "> str</ span > < span class ="p "> ):</ span >
937937 < span class ="n "> plotvars</ span > < span class ="o "> =</ span > < span class ="p "> [</ span > < span class ="n "> plotvars</ span > < span class ="p "> ]</ span >
938938 < span class ="k "> else</ span > < span class ="p "> :</ span >
939- < span class ="n "> plotvars</ span > < span class ="o "> =</ span > < span class ="p " > [ </ span > < span class ="n " > v </ span > < span class ="k " > for </ span > < span class =" n "> v </ span > < span class =" ow " > in </ span > < span class =" n " > plotvars</ span > < span class ="p "> ] </ span >
939+ < span class ="n "> plotvars</ span > < span class ="o "> =</ span > < span class ="nb " > list </ span > < span class ="p " > ( </ span > < span class ="n "> plotvars</ span > < span class ="p "> ) </ span >
940940 < span class ="k "> assert</ span > < span class ="nb "> isinstance</ span > < span class ="p "> (</ span > < span class ="n "> plotvars</ span > < span class ="p "> ,</ span > < span class ="nb "> list</ span > < span class ="p "> )</ span >
941941 < span class ="k "> assert</ span > < span class ="nb "> len</ span > < span class ="p "> (</ span > < span class ="n "> plotvars</ span > < span class ="p "> )</ span > < span class ="o "> ></ span > < span class ="mi "> 0</ span >
942942 < span class ="k "> assert</ span > < span class ="nb "> all</ span > < span class ="p "> ([</ span > < span class ="nb "> isinstance</ span > < span class ="p "> (</ span > < span class ="n "> v</ span > < span class ="p "> ,</ span > < span class ="nb "> str</ span > < span class ="p "> )</ span > < span class ="k "> for</ span > < span class ="n "> v</ span > < span class ="ow "> in</ span > < span class ="n "> plotvars</ span > < span class ="p "> ])</ span >
943+ < span class ="n "> threshold_range</ span > < span class ="o "> =</ span > < span class ="nb "> list</ span > < span class ="p "> (</ span > < span class ="n "> threshold_range</ span > < span class ="p "> )</ span >
944+ < span class ="k "> assert</ span > < span class ="nb "> len</ span > < span class ="p "> (</ span > < span class ="n "> threshold_range</ span > < span class ="p "> )</ span > < span class ="o "> ==</ span > < span class ="mi "> 2</ span >
943945 < span class ="n "> frame</ span > < span class ="o "> =</ span > < span class ="n "> d</ span > < span class ="p "> [[</ span > < span class ="n "> pred_var</ span > < span class ="p "> ,</ span > < span class ="n "> truth_var</ span > < span class ="p "> ]]</ span > < span class ="o "> .</ span > < span class ="n "> copy</ span > < span class ="p "> ()</ span >
944946 < span class ="n "> frame</ span > < span class ="o "> .</ span > < span class ="n "> reset_index</ span > < span class ="p "> (</ span > < span class ="n "> inplace</ span > < span class ="o "> =</ span > < span class ="kc "> True</ span > < span class ="p "> ,</ span > < span class ="n "> drop</ span > < span class ="o "> =</ span > < span class ="kc "> True</ span > < span class ="p "> )</ span >
945947 < span class ="n "> frame</ span > < span class ="p "> [</ span > < span class ="s2 "> "outcol"</ span > < span class ="p "> ]</ span > < span class ="o "> =</ span > < span class ="n "> frame</ span > < span class ="p "> [</ span > < span class ="n "> truth_var</ span > < span class ="p "> ]</ span > < span class ="o "> ==</ span > < span class ="n "> truth_target</ span >
@@ -1317,8 +1319,8 @@ <h1 class="modulename">
13171319 < span class ="n "> step</ span > < span class ="o "> =</ span > < span class ="mf "> 0.01</ span >
13181320 < span class ="n "> eval_pts</ span > < span class ="o "> =</ span > < span class ="n "> numpy</ span > < span class ="o "> .</ span > < span class ="n "> arange</ span > < span class ="p "> (</ span > < span class ="mi "> 0</ span > < span class ="p "> ,</ span > < span class ="mi "> 1</ span > < span class ="o "> +</ span > < span class ="n "> step</ span > < span class ="p "> ,</ span > < span class ="n "> step</ span > < span class ="p "> )</ span >
13191321 < span class ="n "> q_eps</ span > < span class ="o "> =</ span > < span class ="mf "> 1e-6</ span >
1320- < span class ="n "> q_low</ span > < span class ="o "> =</ span > < span class ="mi " > 0</ span >
1321- < span class ="n "> q_high</ span > < span class ="o "> =</ span > < span class ="mi "> 1</ span >
1322+ < span class ="n "> q_low</ span > < span class ="o "> =</ span > < span class ="mf " > 0. 0</ span >
1323+ < span class ="n "> q_high</ span > < span class ="o "> =</ span > < span class ="mf "> 1.0 </ span >
13221324 < span class ="k "> while</ span > < span class ="n "> q_low</ span > < span class ="o "> +</ span > < span class ="n "> q_eps</ span > < span class ="o "> <</ span > < span class ="n "> q_high</ span > < span class ="p "> :</ span >
13231325 < span class ="n "> q_mid</ span > < span class ="o "> =</ span > < span class ="p "> (</ span > < span class ="n "> q_low</ span > < span class ="o "> +</ span > < span class ="n "> q_high</ span > < span class ="p "> )</ span > < span class ="o "> /</ span > < span class ="mf "> 2.0</ span >
13241326 < span class ="n "> q_mid_area</ span > < span class ="o "> =</ span > < span class ="n "> numpy</ span > < span class ="o "> .</ span > < span class ="n "> mean</ span > < span class ="p "> (</ span > < span class ="mi "> 1</ span > < span class ="o "> -</ span > < span class ="p "> (</ span > < span class ="mi "> 1</ span > < span class ="o "> -</ span > < span class ="p "> (</ span > < span class ="mi "> 1</ span > < span class ="o "> -</ span > < span class ="n "> eval_pts</ span > < span class ="p "> )</ span > < span class ="o "> **</ span > < span class ="n "> q_mid</ span > < span class ="p "> )</ span > < span class ="o "> **</ span > < span class ="p "> (</ span > < span class ="mi "> 1</ span > < span class ="o "> /</ span > < span class ="n "> q_mid</ span > < span class ="p "> ))</ span >
@@ -2420,8 +2422,8 @@ <h1 class="modulename">
24202422 pred_var: str,
24212423 truth_var: str,
24222424 truth_target: bool = True,
2423- threshold_range: Tuple[float, float] = (-inf, inf),
2424- plotvars: Tuple = ('precision', 'recall'),
2425+ threshold_range: Iterable[ float] = (-inf, inf),
2426+ plotvars: Iterable[str] = ('precision', 'recall'),
24252427 title: str = 'Measures as a function of threshold',
24262428 *,
24272429 show: bool = True
@@ -2435,8 +2437,8 @@ <h1 class="modulename">
24352437 < span class ="n "> pred_var</ span > < span class ="p "> :</ span > < span class ="nb "> str</ span > < span class ="p "> ,</ span >
24362438 < span class ="n "> truth_var</ span > < span class ="p "> :</ span > < span class ="nb "> str</ span > < span class ="p "> ,</ span >
24372439 < span class ="n "> truth_target</ span > < span class ="p "> :</ span > < span class ="nb "> bool</ span > < span class ="o "> =</ span > < span class ="kc "> True</ span > < span class ="p "> ,</ span >
2438- < span class ="n "> threshold_range</ span > < span class ="p "> :</ span > < span class ="n "> Tuple </ span > < span class ="p "> [</ span > < span class =" nb " > float </ span > < span class =" p " > , </ span > < span class ="nb "> float</ span > < span class ="p "> ]</ span > < span class ="o "> =</ span > < span class ="p "> (</ span > < span class ="o "> -</ span > < span class ="n "> math</ span > < span class ="o "> .</ span > < span class ="n "> inf</ span > < span class ="p "> ,</ span > < span class ="n "> math</ span > < span class ="o "> .</ span > < span class ="n "> inf</ span > < span class ="p "> ),</ span >
2439- < span class ="n "> plotvars</ span > < span class ="p "> :</ span > < span class ="n "> Tuple </ span > < span class ="o "> =</ span > < span class ="p "> (</ span > < span class ="s2 "> "precision"</ span > < span class ="p "> ,</ span > < span class ="s2 "> "recall"</ span > < span class ="p "> ),</ span >
2440+ < span class ="n "> threshold_range</ span > < span class ="p "> :</ span > < span class ="n "> Iterable </ span > < span class ="p "> [</ span > < span class ="nb "> float</ span > < span class ="p "> ]</ span > < span class ="o "> =</ span > < span class ="p "> (</ span > < span class ="o "> -</ span > < span class ="n "> math</ span > < span class ="o "> .</ span > < span class ="n "> inf</ span > < span class ="p "> ,</ span > < span class ="n "> math</ span > < span class ="o "> .</ span > < span class ="n "> inf</ span > < span class ="p "> ),</ span >
2441+ < span class ="n "> plotvars</ span > < span class ="p "> :</ span > < span class ="n "> Iterable </ span > < span class =" p " > [ </ span > < span class =" nb " > str </ span > < span class =" p " > ] </ span > < span class ="o "> =</ span > < span class ="p "> (</ span > < span class ="s2 "> "precision"</ span > < span class ="p "> ,</ span > < span class ="s2 "> "recall"</ span > < span class ="p "> ),</ span >
24402442 < span class ="n "> title</ span > < span class ="p "> :</ span > < span class ="nb "> str</ span > < span class ="o "> =</ span > < span class ="s2 "> "Measures as a function of threshold"</ span > < span class ="p "> ,</ span >
24412443 < span class ="o "> *</ span > < span class ="p "> ,</ span >
24422444 < span class ="n "> show</ span > < span class ="p "> :</ span > < span class ="nb "> bool</ span > < span class ="o "> =</ span > < span class ="kc "> True</ span > < span class ="p "> ,</ span >
@@ -2477,10 +2479,12 @@ <h1 class="modulename">
24772479 < span class ="k "> if</ span > < span class ="nb "> isinstance</ span > < span class ="p "> (</ span > < span class ="n "> plotvars</ span > < span class ="p "> ,</ span > < span class ="nb "> str</ span > < span class ="p "> ):</ span >
24782480 < span class ="n "> plotvars</ span > < span class ="o "> =</ span > < span class ="p "> [</ span > < span class ="n "> plotvars</ span > < span class ="p "> ]</ span >
24792481 < span class ="k "> else</ span > < span class ="p "> :</ span >
2480- < span class ="n "> plotvars</ span > < span class ="o "> =</ span > < span class ="p " > [ </ span > < span class ="n " > v </ span > < span class ="k " > for </ span > < span class =" n "> v </ span > < span class =" ow " > in </ span > < span class =" n " > plotvars</ span > < span class ="p "> ] </ span >
2482+ < span class ="n "> plotvars</ span > < span class ="o "> =</ span > < span class ="nb " > list </ span > < span class ="p " > ( </ span > < span class ="n "> plotvars</ span > < span class ="p "> ) </ span >
24812483 < span class ="k "> assert</ span > < span class ="nb "> isinstance</ span > < span class ="p "> (</ span > < span class ="n "> plotvars</ span > < span class ="p "> ,</ span > < span class ="nb "> list</ span > < span class ="p "> )</ span >
24822484 < span class ="k "> assert</ span > < span class ="nb "> len</ span > < span class ="p "> (</ span > < span class ="n "> plotvars</ span > < span class ="p "> )</ span > < span class ="o "> ></ span > < span class ="mi "> 0</ span >
24832485 < span class ="k "> assert</ span > < span class ="nb "> all</ span > < span class ="p "> ([</ span > < span class ="nb "> isinstance</ span > < span class ="p "> (</ span > < span class ="n "> v</ span > < span class ="p "> ,</ span > < span class ="nb "> str</ span > < span class ="p "> )</ span > < span class ="k "> for</ span > < span class ="n "> v</ span > < span class ="ow "> in</ span > < span class ="n "> plotvars</ span > < span class ="p "> ])</ span >
2486+ < span class ="n "> threshold_range</ span > < span class ="o "> =</ span > < span class ="nb "> list</ span > < span class ="p "> (</ span > < span class ="n "> threshold_range</ span > < span class ="p "> )</ span >
2487+ < span class ="k "> assert</ span > < span class ="nb "> len</ span > < span class ="p "> (</ span > < span class ="n "> threshold_range</ span > < span class ="p "> )</ span > < span class ="o "> ==</ span > < span class ="mi "> 2</ span >
24842488 < span class ="n "> frame</ span > < span class ="o "> =</ span > < span class ="n "> d</ span > < span class ="p "> [[</ span > < span class ="n "> pred_var</ span > < span class ="p "> ,</ span > < span class ="n "> truth_var</ span > < span class ="p "> ]]</ span > < span class ="o "> .</ span > < span class ="n "> copy</ span > < span class ="p "> ()</ span >
24852489 < span class ="n "> frame</ span > < span class ="o "> .</ span > < span class ="n "> reset_index</ span > < span class ="p "> (</ span > < span class ="n "> inplace</ span > < span class ="o "> =</ span > < span class ="kc "> True</ span > < span class ="p "> ,</ span > < span class ="n "> drop</ span > < span class ="o "> =</ span > < span class ="kc "> True</ span > < span class ="p "> )</ span >
24862490 < span class ="n "> frame</ span > < span class ="p "> [</ span > < span class ="s2 "> "outcol"</ span > < span class ="p "> ]</ span > < span class ="o "> =</ span > < span class ="n "> frame</ span > < span class ="p "> [</ span > < span class ="n "> truth_var</ span > < span class ="p "> ]</ span > < span class ="o "> ==</ span > < span class ="n "> truth_target</ span >
0 commit comments