Validate features for inplace predict. (#8359)
This commit is contained in:
@@ -2,6 +2,7 @@ import collections
|
||||
import importlib.util
|
||||
import json
|
||||
import os
|
||||
import random
|
||||
import tempfile
|
||||
from typing import Callable, Optional
|
||||
|
||||
@@ -998,34 +999,40 @@ def test_deprecate_position_arg():
|
||||
def test_pandas_input():
|
||||
import pandas as pd
|
||||
from sklearn.calibration import CalibratedClassifierCV
|
||||
|
||||
rng = np.random.RandomState(1994)
|
||||
|
||||
kRows = 100
|
||||
kCols = 6
|
||||
|
||||
X = rng.randint(low=0, high=2, size=kRows*kCols)
|
||||
X = rng.randint(low=0, high=2, size=kRows * kCols)
|
||||
X = X.reshape(kRows, kCols)
|
||||
|
||||
df = pd.DataFrame(X)
|
||||
feature_names = []
|
||||
for i in range(1, kCols):
|
||||
feature_names += ['k'+str(i)]
|
||||
feature_names += ["k" + str(i)]
|
||||
|
||||
df.columns = ['status'] + feature_names
|
||||
df.columns = ["status"] + feature_names
|
||||
|
||||
target = df['status']
|
||||
train = df.drop(columns=['status'])
|
||||
target = df["status"]
|
||||
train = df.drop(columns=["status"])
|
||||
model = xgb.XGBClassifier()
|
||||
model.fit(train, target)
|
||||
np.testing.assert_equal(model.feature_names_in_, np.array(feature_names))
|
||||
|
||||
clf_isotonic = CalibratedClassifierCV(model,
|
||||
cv='prefit', method='isotonic')
|
||||
columns = list(train.columns)
|
||||
random.shuffle(columns, lambda: 0.1)
|
||||
df_incorrect = df[columns]
|
||||
with pytest.raises(ValueError):
|
||||
model.predict(df_incorrect)
|
||||
|
||||
clf_isotonic = CalibratedClassifierCV(model, cv="prefit", method="isotonic")
|
||||
clf_isotonic.fit(train, target)
|
||||
assert isinstance(clf_isotonic.calibrated_classifiers_[0].base_estimator,
|
||||
xgb.XGBClassifier)
|
||||
np.testing.assert_allclose(np.array(clf_isotonic.classes_),
|
||||
np.array([0, 1]))
|
||||
assert isinstance(
|
||||
clf_isotonic.calibrated_classifiers_[0].base_estimator, xgb.XGBClassifier
|
||||
)
|
||||
np.testing.assert_allclose(np.array(clf_isotonic.classes_), np.array([0, 1]))
|
||||
|
||||
|
||||
def run_feature_weights(X, y, fw, tree_method, model=xgb.XGBRegressor):
|
||||
|
||||
Reference in New Issue
Block a user