我正在尝试使用以下代码在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) 我想在arma::mat大小为M x N和arma::vec大小为MN(这是矩阵的列主线性化)之间来回切换.
我可以轻松地从矩阵到矢量使用arma::vectorise,即
arma::vec vector = arma::vectorise(matrix);
Run Code Online (Sandbox Code Playgroud)
但是,我找不到一个简单的方法去反过来.我想在矩阵的第一列中插入向量的前M个值,在第二列中插入第二个M值,依此类推.有没有办法有效地这样做?