Catboost には確かにそのような制限があります。ただし、順列は適合段階でのみ適用されるため、順列とは関係ありません。
問題は、同じ方法がと同様catboost.Pool._check_data_empty
に前に適用されることです。フィッティングのためには、複数の観測値を持つことが非常に重要です。predict
fit
現在、チェック機能には が必要ですがsum(x.shape)>2
、これは確かに奇妙です。次のコードは、問題を示しています。
import catboost
import numpy as np
x_train3 = np.array([[1,2,3,], [2,3,4], [3,4,5]])
x_train1 = np.array([[1], [2], [3]])
y_train = np.array([1,2,3])
x_test3_2 = np.array([[4,5,6], [5,6,7]])
x_test3_1 = np.array([[4,5,6,]])
x_test1_2 = np.array([[4], [5]])
x_test1_1 = np.array([[4]])
model3 = catboost.CatBoostRegressor().fit(x_train3, y_train)
model1 = catboost.CatBoostRegressor().fit(x_train1, y_train)
print(model3.predict(x_test3_2)) # OK
print(model3.predict(x_test3_1)) # OK
print(model1.predict(x_test1_2)) # OK
print(model1.predict(x_test1_1)) # Throws an error!
現時点では、 を呼び出す前に 1 つまたは 2 つの疑似行を追加することでうまくいく可能性がありますpredict
。元の行の出力には影響しません。