我在拟合后腌制了一个scikit-learn模型,所以如果重新运行,我可以将它用于预测而不再适合。
在以下代码中:
# Load dataset
iris = datasets.load_iris()
X, y = iris.data, iris.target
rf_feature_imp = RandomForestClassifier(100)
feat_selection = SelectFromModel(rf_feature_imp, threshold=0.5)
clf = RandomForestClassifier(5000)
model = Pipeline([
('fs', feat_selection),
('clf', clf),
])
params = {
'fs__threshold': [0.5, 0.3, 0.7],
'fs__estimator__max_features': ['auto', 'sqrt', 'log2'],
'clf__max_features': ['auto', 'sqrt', 'log2'],
}
gs = GridSearchCV(model, params, ...)
gs.fit(X,y)
model = gs.best_estimator_
with open(path_pickle_model, 'wb') as f:
cPickle.dump(model, f)
该模型已经过网格搜索以减少功能的数量。重新读取模型时,将其应用于数据会导致问题,因为模型和数据中的要素数量不同。
那么,如何从磁盘读取的酸洗模型中获取功能名称?