我有4个变量作为随机森林的输入。也就是说。“超级类型2”,“超级类型3”。其中前3列是Wikidata项id,最后一列是probability列。我使用GridSearchCV来选择最佳参数。然而,尽管使用了所有可能的选择,这个模型非常适合。“超类型概率”的特点在这里过了头。但是,我想使用这个特性,因为这是唯一可以提高射频性能的参数。在
roc_auc_score_train:0.994399847095
roc_auc_score_validation:0.402392359246
仅使用“超类型概率”特征和逻辑回归得出ROC如下:
^{pr2}$仅使用前3个功能,RF提供ROC:
^{3}$我的射频代码如下:
def train_model(self):
logger.info("Using random forest classifier......")
train = self.feature_preprocessing(self.train)
X_train = pd.DataFrame(data=train, columns=['superType1', 'superType2', 'superType3'])
logger.info("Using features: %s", X_train.columns)
y_train = train['ROLLBACK_REVERTED']
rfc = RandomForestClassifier(n_jobs=-1, max_features=None, n_estimators=1000, oob_score=True,
random_state=50, min_samples_leaf=1, max_depth=9)
param_grid = {
'n_estimators': [500, 600, 700, 800],
'max_depth': [8, 9, 10, 11],
'min_samples_leaf': [1],
}
search = sklearn.grid_search.GridSearchCV(rfc, param_grid, n_jobs=-1, verbose=0, scoring='roc_auc', cv=3)
search.fit(X_train, y_train)
logger.info("All Scores: %s", search.grid_scores_)
logger.info("Best Score: %s", search.best_score_)
logger.info("Best Params: %s", search.best_params_)
predictedProbVal = search.predict_proba(X_train)
roc_auc_score_train = metrics.roc_auc_score(y_train, predictedProbVal[:, 1])
logger.info("roc_auc_score_train:%s", roc_auc_score_train)
validationProb = self.predict_probabilities(search)
return validationProb
def predict_probabilities(self, rfModel):
validation = self.feature_preprocessing(self.validation)
X_val = pd.DataFrame(data=validation, columns=['superType1', 'superType2', 'superType3', 'superTypeProbability'])
y_val = validation['ROLLBACK_REVERTED']
# Predict the result for test data
predictedProbVal = rfModel.predict_proba(X_val)
validation['vandalismScore'] = pd.DataFrame(predictedProbVal[:, 1])
roc_auc_score_val = metrics.roc_auc_score(y_val, predictedProbVal[:, 1])
logger.info("roc_auc_score_validation:%s", roc_auc_score_val)
return validation
问题在}都存在,则将更高的值赋给
superTypeProbability
中。我通过对superTypeProbability
特性进行一些更改来解决这个问题。现在ROC=0.82。在计算superTypeProbability
之前,我正在计算typeProbability
特性。在随机森林中使用typeProbability
时,ROC=0.74。我想改进这个结果。这个特性有两个NaN
值,比如500是1000中的NaN
。为了减少这个数字,我衍生了新特性superTypeProbability
。如果typeProbability
和{superTypeProbability
。这样,superTypeProbability的NaN
值就更少了,比如说1000中有300个。现在,为了填充这个NaN
值,我用平均超类型概率值来代替,这个值小于平均类型概率值。这就是问题的起因。所以我现在使用 平均类型概率填充NaN
相关问题 更多 >
编程相关推荐