Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Alain Shakour
clowdflows
Commits
46a455c9
Commit
46a455c9
authored
Nov 08, 2012
by
Anze Vavpetic
Browse files
added select subgroups widget
parent
94122987
Changes
6
Hide whitespace changes
Inline
Side-by-side
workflows/static/css/style.css
View file @
46a455c9
...
...
@@ -233,3 +233,7 @@ html[xmlns] .dataTables_wrapper {
.dataTables_filter
input
{
margin-bottom
:
5px
;
}
.selected_subgroup
{
font-weight
:
bold
;
font-size
:
30pt
;
}
\ No newline at end of file
workflows/subgroup_discovery/interaction.py
View file @
46a455c9
...
...
@@ -22,22 +22,18 @@ def build_subgroups(request, input_dict, output_dict, widget):
'className'
:
className
,
'classValues'
:
classValues
})
def
s
ubgroup_bar_visualization
(
request
,
input_dict
,
output_dict
,
widget
):
def
s
elect_subgroups
(
request
,
input_dict
,
output_dict
,
widget
):
'''
Subgroup
bar visualiza
tion.
Subgroup
selec
tion.
@author: Anze Vavpetic, 2012
'''
sd_rules
=
input_dict
[
'rules'
]
rules
=
sd_rules
.
rules
P
,
N
=
float
(
len
(
sd_rules
.
targetClassRule
.
TP
)),
float
(
len
(
sd_rules
.
targetClassRule
.
FP
))
fpr
=
[
-
len
(
rule
.
FP
)
/
N
for
rule
in
rules
]
tpr
=
[
len
(
rule
.
TP
)
/
P
for
rule
in
rules
]
subgroups
=
[
rule
.
ruleToString
()
for
rule
in
rules
]
return
render
(
request
,
'visualizations/subgroup_bar_visualization.html'
,
{
subgroups
=
[(
rule
.
id
,
rule
.
ruleToString
(),
len
(
rule
.
FP
),
len
(
rule
.
TP
))
for
rule
in
rules
]
return
render
(
request
,
'interactions/select_subgroups.html'
,
{
'widget'
:
widget
,
'model_name'
:
sd_rules
.
algorithmName
,
'fpr'
:
json
.
dumps
(
fpr
),
'tpr'
:
json
.
dumps
(
tpr
),
'subgroups'
:
json
.
dumps
(
subgroups
)
'subgroups'
:
subgroups
})
\ No newline at end of file
workflows/subgroup_discovery/library.py
View file @
46a455c9
...
...
@@ -3,7 +3,9 @@ Subgroup discovery library functions.
@author: Anze Vavpetic <anze.vavpetic@ijs.si>
'''
import
json
from
SubgroupDiscovery.SD_learner_classifier
import
SD_learner
from
SubgroupDiscovery.SDRule
import
SDRules
class
SubgroupDiscovery
:
# Available algorithms and their parameters
...
...
@@ -47,14 +49,23 @@ def build_subgroups_finished(postdata, input_dict, output_dict):
params
[
param
]
=
SubgroupDiscovery
.
parameter_types
[
param
](
value
)
learner
=
SD_learner
(
**
params
)
classifier
=
learner
(
data
)
return
{
'rules'
:
classifier
.
getRules
(
classValue
),
'classifier'
:
learner
}
rules
=
classifier
.
getRules
(
classValue
)
# add id's
for
i
,
rule
in
enumerate
(
rules
.
rules
):
rule
.
id
=
i
return
{
'rules'
:
rules
,
'classifier'
:
learner
}
def
subgroup_bar_visualization
(
input_dict
):
return
{
'rules'
:
None
}
def
subgroup_bar_finished
(
postdata
,
input_dict
,
output_dict
):
# Todo
return
None
def
subgroup_roc_visualization
(
input_dict
):
return
{
'rules'
:
[]}
\ No newline at end of file
return
{
'rules'
:
[]}
def
select_subgroups
(
input_dict
):
return
{
'sel_rules'
:
[]}
def
select_subgroups_finished
(
postdata
,
input_dict
,
output_dict
):
sd_rules
=
input_dict
[
'rules'
]
selected_subgroups
=
[
int
(
i
)
for
i
in
json
.
loads
(
postdata
[
'selected_subgroup_ids'
][
0
])]
rules
=
SDRules
(
filter
(
lambda
r
:
r
.
id
in
selected_subgroups
,
sd_rules
.
rules
),
sd_rules
.
targetClassRule
,
sd_rules
.
algorithmName
)
return
{
'sel_rules'
:
rules
}
\ No newline at end of file
workflows/subgroup_discovery/visualization.py
View file @
46a455c9
...
...
@@ -26,4 +26,25 @@ def subgroup_roc_visualization(request, input_dict, output_dict, widget):
return
render
(
request
,
'visualizations/subgroup_roc_visualization.html'
,
{
'widget'
:
widget
,
'roc_data'
:
json
.
dumps
(
roc_data
),
})
def
subgroup_bar_visualization
(
request
,
input_dict
,
output_dict
,
widget
):
'''
Subgroup bar visualization.
@author: Anze Vavpetic, 2012
'''
sd_rules
=
input_dict
[
'rules'
]
rules
=
sd_rules
.
rules
P
,
N
=
float
(
len
(
sd_rules
.
targetClassRule
.
TP
)),
float
(
len
(
sd_rules
.
targetClassRule
.
FP
))
fpr
=
[
-
len
(
rule
.
FP
)
/
N
for
rule
in
rules
]
tpr
=
[
len
(
rule
.
TP
)
/
P
for
rule
in
rules
]
subgroups
=
[
rule
.
ruleToString
()
for
rule
in
rules
]
return
render
(
request
,
'visualizations/subgroup_bar_visualization.html'
,
{
'widget'
:
widget
,
'model_name'
:
sd_rules
.
algorithmName
,
'fpr'
:
json
.
dumps
(
fpr
),
'tpr'
:
json
.
dumps
(
tpr
),
'subgroups'
:
json
.
dumps
(
subgroups
),
'rules'
:
[(
i
,
descr
)
for
i
,
descr
in
enumerate
(
subgroups
)]
})
\ No newline at end of file
workflows/templates/interactions/select_subgroups.html
0 → 100644
View file @
46a455c9
<div
id=
"widgetinteract-{{widget.pk}}"
rel=
"{{widget.pk}}"
class=
"widgetinteractdialog"
title=
"{{widget.name}} interaction"
width=
"700px"
height=
"670px"
>
<div
style=
"width:620px; margin: 0 auto;"
>
<form>
Model: {{model_name}}
<br/>
Select one or more subgroups to output:
<ol
id=
"selected_subgroups{{widget.pk}}"
>
{% for id, descr, fp, tp in subgroups %}
<li
class=
"ui-widget-content"
id=
"{{id}}"
>
{{ descr }} FP={{fp}}, TP={{tp}}
</li>
{% endfor %}
</ol>
<input
type=
"hidden"
name=
"selected_subgroup_ids"
id=
"selected_subgroup_ids"
value=
""
/>
<input
type=
"hidden"
name=
"widget_id"
value=
"{{widget.pk}}"
/>
</form>
<style>
#selected_subgroups
{
{widget.pk
}
}
.ui-selecting
{
background
:
#FECA40
;
}
#selected_subgroups
{
{widget.pk
}
}
.ui-selected
{
background
:
#F39814
;
color
:
white
;
}
#selected_subgroups
{
{widget.pk
}
}
{
list-style-type
:
none
;
margin
:
0
;
padding
:
0
;
width
:
100%
;
}
#selected_subgroups
{
{widget.pk
}
}
li
{
margin
:
3px
;
padding
:
0.4em
;
font-size
:
1.2em
;
}
</style>
<script
type=
"text/javascript"
>
$
(
function
()
{
// Empty list on load
$
(
'
#selected_subgroup_ids
'
).
val
(
JSON
.
stringify
([]));
$
(
"
#selected_subgroups{{widget.pk}}
"
).
selectable
({
filter
:
"
li
"
},
{
stop
:
function
()
{
var
selected
=
[];
$
(
'
.ui-selected
'
,
this
).
each
(
function
(){
selected
.
push
(
$
(
this
).
attr
(
"
id
"
));
});
$
(
'
#selected_subgroup_ids
'
).
val
(
JSON
.
stringify
(
selected
));
}
}
);
$
(
'
#selected_subgroups{{widget.pk}}
'
).
selectable
().
on
(
'
mousedown
'
,
'
*
'
,
function
(
e
){
if
(
e
.
ctrlKey
)
e
.
metaKey
=
e
.
ctrlKey
;
});
});
</script>
</div>
</div>
\ No newline at end of file
workflows/templates/visualizations/subgroup_bar_visualization.html
View file @
46a455c9
...
...
@@ -7,9 +7,11 @@
</form>
<script
type=
"text/javascript"
>
$
(
function
()
{
$
(
document
).
ready
(
function
(){
plot
();
});
// Plots for the selected attribute.
function
plot
()
{
// Weights barchart
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment