ich auf Textklassifikation arbeite und nach der Merkmalsextraktion Schritt bekam ich ziemlich Matrizen, aus diesem Grund inkrementelles Lernen zu verwenden, habe ich versucht, wie folgt:Probleme beim Versuch, ein Cross-validiertes Out-of-Core-Lernmodell zu implementieren?
import xgboost as xgb
from sklearn.model_selection import ShuffleSplit, train_test_split
from sklearn.metrics import accuracy_score as acc
def incremental_learning2(X, y):
# split data into training and testing sets
# then split training set in half
X_train, X_test, y_train, y_test = train_test_split(X,
y, test_size=0.1,
random_state=0)
X_train_1, X_train_2, y_train_1, y_train_2 = train_test_split(X_train,
y_train,
test_size=0.5,
random_state=0)
xg_train_1 = xgb.DMatrix(X_train_1, label=y_train_1)
xg_train_2 = xgb.DMatrix(X_train_2, label=y_train_2)
xg_test = xgb.DMatrix(X_test, label=y_test)
#params = {'objective': 'reg:linear', 'verbose': False}
params = {}
model_1 = xgb.train(params, xg_train_1, 30)
model_1.save_model('model_1.model')
# ================= train two versions of the model =====================#
model_2_v1 = xgb.train(params, xg_train_2, 30)
model_2_v2 = xgb.train(params, xg_train_2, 30, xgb_model='model_1.model')
#Predictions
y_pred = model_2_v2.predict(X_test)
kfold = StratifiedKFold(n_splits=10, random_state=1).split(X_train, y_train)
scores = []
for k, (train, test) in enumerate(kfold):
model_2_v2.fit(X_train[train], y_train[train])
score = model_2_v2.score(X_train[test], y_train[test])
scores.append(score)
print('Fold: %s, Class dist.: %s, Acc: %.3f' % (k+1, np.bincount(y_train[train]), score))
print('\nCV accuracy: %.3f +/- %.3f' % (np.mean(scores), np.std(scores)))
In Bezug auf die oben genannten Code. Ich habe versucht, eine Kreuzvalidierung durchzuführen und einige Instanzen vorherzusagen. Es funktioniert jedoch nicht. Wie kann ich den obigen Code reparieren, um nach der Anpassung und Aktualisierung des GBM-Modells in einem sehr großen Datensatz übergreifend validierte Metriken und Vorhersagen zu erhalten?
Können Sie näher auf "es funktioniert nicht"? Außerdem werden Sie wahrscheinlich mehr auf die Frage werfen, wenn Sie das 'python'-Tag hinzufügen. – Tchotchke
Ja ... Wenn ich sage "funktioniert nicht" möchte ich sagen, dass der obige Code nicht funktioniert. @Tchotchke – tumbleweed
Es gibt viele Möglichkeiten, in denen etwas nicht funktionieren kann. Sie erhalten einen Fehler, und wenn ja - wo? Sie erhalten keine Ergebnisse wie erwartet usw.Je mehr Details du gibst, desto einfacher ist es für die Menschen, dir zu helfen. – Tchotchke