1

catboost について、ばかげた質問があります。

catboost のドキュメントから、カテゴリ データ変換のために、行間にいくつかの順列/シャッフルがあることがわかりました。 to-numberic-docpage/#algorithm-main-stages_cat-to-numberic )

モデルが機能するかどうかを確認するために 1 つの観測で予測しようとしましたが、エラーが発生しました。ただし、2 つの観測では、正常に動作します。

私の質問は、catboost 分類子の予測のために、順列のために少なくとも 2 つの観測値を与える必要があるかということです。はいの場合、最初の観察は出力に影響を与えますか?

4

1 に答える 1

2

Catboost には確かにそのような制限があります。ただし、順列は適合段階でのみ適用されるため、順列とは関係ありません。

問題は、同じ方法がと同様catboost.Pool._check_data_emptyに前に適用されることです。フィッティングのためには、複数の観測値を持つことが非常に重要です。predictfit

現在、チェック機能には が必要ですが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。元の行の出力には影響しません。

于 2017-10-31T17:10:02.513 に答える