小编Pie*_*chi的帖子

XGBClassifier上的交叉验证,用于python中的多类分类

我正在尝试使用以下代码在XGBClassifier上执行交叉验证以获取多类别分类问题,该代码改编自http://www.analyticsvidhya.com/blog/2016/03/complete-guide-parameter-tuning-xgboost -with码-蟒/

import numpy as np
import pandas as pd
import xgboost as xgb
from xgboost.sklearn import  XGBClassifier
from sklearn.preprocessing import LabelEncoder
from sklearn import cross_validation, metrics
from sklearn.grid_search import GridSearchCV


def modelFit(alg, X, y, useTrainCV=True, cvFolds=5, early_stopping_rounds=50):
    if useTrainCV:
        xgbParams = alg.get_xgb_params()
        xgTrain = xgb.DMatrix(X, label=y)
        cvresult = xgb.cv(xgbParams,
                      xgTrain,
                      num_boost_round=alg.get_params()['n_estimators'],
                      nfold=cvFolds,
                      stratified=True,
                      metrics={'mlogloss'},
                      early_stopping_rounds=early_stopping_rounds,
                      seed=0,
                      callbacks=[xgb.callback.print_evaluation(show_stdv=False),                                                               xgb.callback.early_stop(3)])

        print cvresult
        alg.set_params(n_estimators=cvresult.shape[0])

    # Fit the algorithm
    alg.fit(X, y, eval_metric='mlogloss')

    # Predict
    dtrainPredictions = alg.predict(X)
    dtrainPredProb = alg.predict_proba(X)

    # Print …
Run Code Online (Sandbox Code Playgroud)

python classification cross-validation xgboost

5
推荐指数
1
解决办法
7482
查看次数

犰狳 - 从列向量中的值填充矩阵

我想在arma::mat大小为M x N和arma::vec大小为MN(这是矩阵的列主线性化)之间来回切换.

我可以轻松地从矩阵到矢量使用arma::vectorise,即

arma::vec vector = arma::vectorise(matrix);
Run Code Online (Sandbox Code Playgroud)

但是,我找不到一个简单的方法去反过来.我想在矩阵的第一列中插入向量的前M个值,在第二列中插入第二个M值,依此类推.有没有办法有效地这样做?

c++ vector matrix armadillo column-major-order

3
推荐指数
1
解决办法
2092
查看次数