मैं मशीन लर्निंग में एक नौसिखिया हूं और अबालोन डेटासेट के साथ काम करने की कोशिश कर रहा था। मैंने अबालोन की उम्र का अनुमान लगाने की कोशिश की (डेटासेट के लिए यह देखें)। मैंने एक XGBoost रेजिस्टर चलाया और जब मैंने निम्नलिखित को लागू किया तो कोड ने ठीक काम किया:

model=XGBRegressor(n_estimators=500,learning_rate=0.05)
model.fit(X_train,y_train)
X_train_preds = model.predict(X_train)
X_test_preds = model.predict(X_test)

लेकिन जब मैं कुछ शुरुआती स्टॉपिंग राउंड जोड़ता हूं, तो यह काम करना बंद कर देता है:

model=XGBRegressor(n_estimators=500,learning_rate=0.05)
model.fit(X_train,y_train, early_stopping_rounds=5, eval_set=([X_test,y_test]))
X_train_preds = model.predict(X_train)
X_test_preds = model.predict(X_test)

और निम्न त्रुटि देता है:

Traceback (most recent call last):

  File "<ipython-input-55-6cfab6319852>", line 1, in <module>
    runfile('C:/Users/dell/.spyder-py3/Abalone_project.py', wdir='C:/Users/dell/.spyder-py3')

  File "E:\l\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 705, in runfile
    execfile(filename, namespace)

  File "E:\l\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "C:/Users/dell/.spyder-py3/Abalone_project.py", line 47, in <module>
    model.fit(X_train,y_train, early_stopping_rounds=5, eval_set=([X_test,y_test]), verbose=False)

  File "E:\l\Anaconda3\lib\site-packages\xgboost\sklearn.py", line 370, in fit
    for i in range(len(eval_set)))

  File "E:\l\Anaconda3\lib\site-packages\xgboost\sklearn.py", line 370, in <genexpr>
    for i in range(len(eval_set)))

  File "E:\l\Anaconda3\lib\site-packages\pandas\core\frame.py", line 2685, in __getitem__
    return self._getitem_column(key)

  File "E:\l\Anaconda3\lib\site-packages\pandas\core\frame.py", line 2692, in _getitem_column
    return self._get_item_cache(key)

  File "E:\l\Anaconda3\lib\site-packages\pandas\core\generic.py", line 2486, in _get_item_cache
    values = self._data.get(item)

  File "E:\l\Anaconda3\lib\site-packages\pandas\core\internals.py", line 4115, in get
    loc = self.items.get_loc(item)

  File "E:\l\Anaconda3\lib\site-packages\pandas\core\indexes\base.py", line 3065, in get_loc
    return self._engine.get_loc(self._maybe_cast_indexer(key))

  File "pandas\_libs\index.pyx", line 140, in pandas._libs.index.IndexEngine.get_loc

  File "pandas\_libs\index.pyx", line 162, in pandas._libs.index.IndexEngine.get_loc

  File "pandas\_libs\hashtable_class_helper.pxi", line 1492, in pandas._libs.hashtable.PyObjectHashTable.get_item

  File "pandas\_libs\hashtable_class_helper.pxi", line 1500, in pandas._libs.hashtable.PyObjectHashTable.get_item

KeyError: 0

क्या कोई कृपया मुझे बता सकता है कि त्रुटि क्या हो रही है और इसे कैसे ठीक किया जाए?

1
heisenberg737 27 मार्च 2020, 21:45

1 उत्तर

सबसे बढ़िया उत्तर

इस लाइन को बदलने का प्रयास करें

model.fit(X_train,y_train, early_stopping_rounds=5, eval_set=([X_test,y_test]))

प्रति

model.fit(X_train,y_train, early_stopping_rounds=5, eval_set=[(X_test,y_test)]

आपका अद्यतन कोड जो त्रुटि के बिना चलता है:

from xgboost import XGBRegressor

# dummy data

X_train = [[0,1], [1,2], [3,2]]
y_train = [0, 1, 0]

model=XGBRegressor(n_estimators=500,learning_rate=0.05)
model.fit(X_train,y_train, early_stopping_rounds=5, eval_set=[(X_train,y_train)])
X_train_preds = model.predict(X_train)

दस्तावेज़ीकरण से,

 eval_set(evals, iteration=0, feval=None)

    Evaluate a set of data.

    Parameters

            evals (list of tuples (DMatrix, string)) – List of items to be evaluated.

            iteration (int) – Current iteration.

            feval (function) – Custom evaluation function.

    Returns

        result – Evaluation result string.

Evals (टुपल्स की सूची (DMatrix, string)) - मूल्यांकन की जाने वाली वस्तुओं की सूची। तो, यह टुपल्स की एक सूची लेता है, न कि दूसरी तरफ।

1
Zabir Al Nazi 28 मार्च 2020, 15:17