Python: Skater показывает ошибку важности функции.FeatureImportanceError: Что-то пошло не так.Значения не суммируются с положительным значением - PullRequest
2 голосов
/ 24 апреля 2019

Я пытаюсь выяснить глобальную особенность важности модели пост-тренинга, используя Skater в качестве библиотеки.Я получаю ошибку, которая гласит следующее:

FeatureImportanceError: Что-то пошло не так.Значения не суммируются с положительным значением. Это может быть связано с: 1) 0 или бесконечными делениями2) возмущенные значения == исходные значения3) свойство является константой.

Я обнаружил ошибку.Моя переменная X содержит столбец, который содержит несколько нулей, поэтому ошибка появляется.


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)

FeatureImportanceError: Что-то пошло не так.Значения не суммируются с положительным значением. Это может быть связано с: 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, но это невозможно, поскольку подключено много компонентов и потребуется много доработок.Может кто-нибудь помочь мне с этим с альтернативой ??

...