Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit112792c

Browse files
author
minjk-bl
committed
Edit permutation importances and add plot
1 parent8001e7c commit112792c

File tree

3 files changed

+67
-4
lines changed

3 files changed

+67
-4
lines changed

‎visualpython/js/com/component/ModelEditor.js‎

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -479,16 +479,30 @@ define([
479479
name:'permutation_importance',
480480
label:'Permutation importance',
481481
import:'from sklearn.inspection import permutation_importance',
482-
code:'${importance_allocate} =permutation_importance(${model}, ${importance_featureData}, ${importance_targetData}${scoring}${random_state}${etc})',
482+
code:'${importance_allocate} =vp_create_permutation_importances(${model}, ${importance_featureData}, ${importance_targetData}${scoring}${sort})',
483483
description:'Permutation importance for feature evaluation.',
484484
options:[
485485
{name:'importance_featureData',label:'Feature Data',component:['data_select'],var_type:['DataFrame','Series','ndarray','list','dict'],value:'X_train'},
486486
{name:'importance_targetData',label:'Target Data',component:['data_select'],var_type:['DataFrame','Series','ndarray','list','dict'],value:'y_train'},
487487
{name:'scoring',component:['input'],usePair:true},
488-
{name:'random_state',component:['input_number'],placeholder:'123',usePair:true},
488+
{name:'sort',label:'Sort data',component:['bool_checkbox'],value:true,usePair:true},
489489
{name:'importance_allocate',label:'Allocate to',component:['input'],placeholder:'New variable',value:'importances'}
490490
]
491491
},
492+
'plot_permutation_importance':{
493+
name:'plot_permutation_importance',
494+
label:'Plot permutation importance',
495+
import:'from sklearn.inspection import permutation_importance',
496+
code:'vp_plot_permutation_importances(${model}, ${importance_featureData}, ${importance_targetData}${scoring}${sort}${top_count})',
497+
description:'Permutation importance for feature evaluation.',
498+
options:[
499+
{name:'importance_featureData',label:'Feature Data',component:['data_select'],var_type:['DataFrame','Series','ndarray','list','dict'],value:'X_train'},
500+
{name:'importance_targetData',label:'Target Data',component:['data_select'],var_type:['DataFrame','Series','ndarray','list','dict'],value:'y_train'},
501+
{name:'scoring',component:['input'],usePair:true},
502+
{name:'sort',label:'Sort data',component:['bool_checkbox'],value:true,usePair:true},
503+
{name:'top_count',label:'Top count',component:['input_number'],min:0,usePair:true}
504+
]
505+
},
492506
'feature_importances':{
493507
name:'feature_importances',
494508
label:'Feature importances',

‎visualpython/js/m_ml/ModelInfo.js‎

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -409,16 +409,30 @@ define([
409409
name:'permutation_importance',
410410
label:'Permutation importance',
411411
import:'from sklearn.inspection import permutation_importance',
412-
code:'${importance_allocate} =permutation_importance(${model}, ${importance_featureData}, ${importance_targetData}${scoring}${random_state}${etc})',
412+
code:'${importance_allocate} =vp_create_permutation_importances(${model}, ${importance_featureData}, ${importance_targetData}${scoring}${sort})',
413413
description:'Permutation importance for feature evaluation.',
414414
options:[
415415
{name:'importance_featureData',label:'Feature Data',component:['data_select'],var_type:['DataFrame','Series','ndarray','list','dict'],value:'X_train'},
416416
{name:'importance_targetData',label:'Target Data',component:['data_select'],var_type:['DataFrame','Series','ndarray','list','dict'],value:'y_train'},
417417
{name:'scoring',component:['input'],usePair:true},
418-
{name:'random_state',component:['input_number'],placeholder:'123',usePair:true},
418+
{name:'sort',label:'Sort data',component:['bool_checkbox'],value:true,usePair:true},
419419
{name:'importance_allocate',label:'Allocate to',component:['input'],placeholder:'New variable',value:'importances'}
420420
]
421421
},
422+
'plot_permutation_importance':{
423+
name:'plot_permutation_importance',
424+
label:'Plot permutation importance',
425+
import:'from sklearn.inspection import permutation_importance',
426+
code:'vp_plot_permutation_importances(${model}, ${importance_featureData}, ${importance_targetData}${scoring}${sort}${top_count})',
427+
description:'Permutation importance for feature evaluation.',
428+
options:[
429+
{name:'importance_featureData',label:'Feature Data',component:['data_select'],var_type:['DataFrame','Series','ndarray','list','dict'],value:'X_train'},
430+
{name:'importance_targetData',label:'Target Data',component:['data_select'],var_type:['DataFrame','Series','ndarray','list','dict'],value:'y_train'},
431+
{name:'scoring',component:['input'],usePair:true},
432+
{name:'sort',label:'Sort data',component:['bool_checkbox'],value:true,usePair:true},
433+
{name:'top_count',label:'Top count',component:['input_number'],min:0,usePair:true}
434+
]
435+
},
422436
'feature_importances':{
423437
name:'feature_importances',
424438
label:'Feature importances',

‎visualpython/python/userCommand.py‎

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,41 @@ def vp_plot_feature_importances(model, X_train=None, sort=False, top_count=0):
123123

124124
_vp_plt.show()
125125
######
126+
# Visual Python: Machine Learning > Model Info
127+
######
128+
defvp_create_permutation_importances(model,X_train,y_train,scoring=None,sort=False):
129+
fromsklearn.inspectionimportpermutation_importance
130+
ifisinstance(X_train,_vp_pd.core.frame.DataFrame):
131+
feature_names=X_train.columns
132+
else:
133+
feature_names= ['X{}'.format(i)foriinrange(len(model.feature_importances_)) ]
134+
135+
imp=permutation_importance(model,X_train,y_train,scoring)
136+
137+
df_i=_vp_pd.DataFrame(imp['importances_mean'],index=feature_names,columns=['Feature_importance'])
138+
df_i['Percentage']=100*df_i['Feature_importance']
139+
ifsort:df_i.sort_values(by='Feature_importance',ascending=False,inplace=True)
140+
df_i=df_i.round(2)
141+
142+
returndf_i
143+
######
144+
# Visual Python: Machine Learning > Model Info
145+
######
146+
defvp_plot_permutation_importances(model,X_train,y_train,scoring=None,sort=False,top_count=0):
147+
df_i=vp_create_permutation_importances(model,X_train,y_train,scoring,sort)
148+
149+
ifsort:
150+
iftop_count>0:
151+
df_i['Percentage'].sort_values().tail(top_count).plot(kind='barh')
152+
else:
153+
df_i['Percentage'].sort_values().plot(kind='barh')
154+
else:
155+
df_i['Percentage'].plot(kind='barh')
156+
_vp_plt.xlabel('Feature importance Percentage')
157+
_vp_plt.ylabel('Features')
158+
159+
_vp_plt.show()
160+
######
126161
# Visual Python: Visualization > Seaborn
127162
######
128163
defvp_seaborn_show_values(axs,precision=1,space=0.01):

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp