Python:Skater显示了一个特性重要性错误。FeatureImportanceError:出了问题。重要性总和不等于正值
我试图通过使用Skater作为库来发现模特训练后的全球特征重要性。 我得到一个错误,其状态如下: 功能重要错误:出现了问题。重要性总和不等于正值这可能是由于:1)0或无限除法2)扰动值==原始值3)特征为常数。Python:Skater显示了一个特性重要性错误。FeatureImportanceError:出了问题。重要性总和不等于正值,python,python-3.x,machine-learning,feature-selection,Python,Python 3.x,Machine Learning,Feature Selection,我试图通过使用Skater作为库来发现模特训练后的全球特征重要性。 我得到一个错误,其状态如下: 功能重要错误:出现了问题。重要性总和不等于正值这可能是由于:1)0或无限除法2)扰动值==原始值3)特征为常数。 My X_permut Dataframe is as follows: X_permut(34,857,5) Out[78]: Distance BuildingArea Lattitude Longtitude YearBuilt 0 2
My X_permut Dataframe is as follows:
X_permut(34,857,5)
Out[78]:
Distance BuildingArea Lattitude Longtitude YearBuilt
0 2.0 160.0 -38.0 145.0 0
1 2.0 160.0 -38.0 145.0 0
2 2.0 79.0 -38.0 145.0 41
3 2.0 160.0 -38.0 145.0 0
4 2.0 150.0 -38.0 145.0 41
5 2.0 160.0 -38.0 145.0 0
6 2.0 142.0 -38.0 145.0 154
7 2.0 220.0 -38.0 145.0 146
8 2.0 160.0 -38.0 145.0 41
Y(34857,)
Out[79]:
0 1050173.0
1 1480000.0
2 1035000.0
3 1050173.0
4 1465000.0
5 850000.0
6 1600000.0
7 1050173.0
8 1050173.0
9 1050173.0
10 941000.0
我已经找出了错误。
My X变量包含一列,其中包含几个0,因此这就是显示错误的原因
model_rfr = random_search_CV(model_rfr,X_permut,Y,params_rfr,folds,
n_iter,scoring,n_jobs) #####THIS IS A CUSTOM RANDOM CV SEARCH FUNCTION THAT IS USED
estimator_rfr=model_rfr.best_estimator_ ###TAKING THE BEST MODEL OUT FROM HERE
estimator_rfr
Out[84]:
RandomForestRegressor(bootstrap=True, criterion='mse', max_depth=3,
max_features='auto', max_leaf_nodes=None,
min_impurity_decrease=0.0, min_impurity_split=None,
min_samples_leaf=0.5, min_samples_split=0.2,
min_weight_fraction_leaf=0.0, n_estimators=200, n_jobs=None,
oob_score=False, random_state=None, verbose=0, warm_start=False)
type(estimator_rfr)
Out[85]: sklearn.ensemble.forest.RandomForestRegressor
####The above part is working flawlessly
from skater import Interpretation
interpreter_rfr = Interpretation(X_permut, feature_names=np.asarray(X_permut.columns)) ###X_permut is my Dataframe
from skater.model import InMemoryModel
model1_rfr = InMemoryModel(estimator_rfr.predict,examples=X_permut, unique_values=list(X_permut.columns))
plots_2_rfr = interpreter_rfr.feature_importance.plot_feature_importance(model1_rfr, ascending=True)
plots2_Series_rfr=interpreter_rfr.feature_importance.feature_importance(model1_rfr)
功能重要错误:出现了问题。重要性总和不等于正值这可能是由于:1)0或无限除法2)扰动值==原始值3)特征为常数。
My X_permut Dataframe is as follows:
X_permut(34,857,5)
Out[78]:
Distance BuildingArea Lattitude Longtitude YearBuilt
0 2.0 160.0 -38.0 145.0 0
1 2.0 160.0 -38.0 145.0 0
2 2.0 79.0 -38.0 145.0 41
3 2.0 160.0 -38.0 145.0 0
4 2.0 150.0 -38.0 145.0 41
5 2.0 160.0 -38.0 145.0 0
6 2.0 142.0 -38.0 145.0 154
7 2.0 220.0 -38.0 145.0 146
8 2.0 160.0 -38.0 145.0 41
Y(34857,)
Out[79]:
0 1050173.0
1 1480000.0
2 1035000.0
3 1050173.0
4 1465000.0
5 850000.0
6 1600000.0
7 1050173.0
8 1050173.0
9 1050173.0
10 941000.0
我想到了一个解决方案,即在对分类值进行编码时,我可能从1开始编码,但这是不可能的,因为有许多组件连接在一起,并且需要大量返工。
有人能帮我做一个选择吗???因此,对于这个。我使用了一种快速修复方法。要么我们规范化X_permut的数据,要么我使用了X_permut=X_permut.replace(0,0.00001),后者有更多的机会平稳运行。因此。我使用了一种快速修复方法。要么我们规范化X_permut的数据,要么我使用X_permut=X_permut.replace(0,0.00001),后者有更多的机会平稳运行。