"IndexError: टपल सूचकांक सीमा से बाहर" पर train_test_split ट्रेन डेटा एक बार करने के लिए प्रयास करने के लिए फिट preprocessing

0

सवाल

मैं कोशिश कर रहा था करने के लिए प्रक्रिया पूर्व अपने डेटा का उपयोग कर सामान्य बनाने.

# preprocessing
import tensorflow as tf
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from tensorflow.keras import layers
from sklearn.compose import make_column_transformer
from sklearn.preprocessing import MinMaxScaler, OneHotEncoder
from sklearn.model_selection import train_test_split

np.set_printoptions(precision=3, suppress=True)
btc_data = pd.read_csv(
    "output.csv",
    names=["Time", "Open"])

ct = make_column_transformer(
    (MinMaxScaler(), ["Time", "Open"]),
    (OneHotEncoder(handle_unknown="ignore"), ["Time", "Open"])
)

X_btc = btc_data["Time"]
y_btc = btc_data["Open"]

X_train, X_test, y_train, y_test = train_test_split(X_btc, y_btc, test_size=0.2, random_state=62)

ct.fit(X_train)
X_train_normal = ct.transform(X_train)
X_test_normal = ct.transform(X_test)

कोड चलाता है पर एक Colab नोटबुक है । डाटासेट से है Kaple है और यह संशोधित किया जा करने के लिए का पूरा यूनिक्स टाइमस्टैम्प और एक और स्तंभ के लिए कीमतों Bitcoin के खुले पर उन समय पर. के बाद spliting डेटा और बनाने के एक स्तंभ ट्रांसफार्मर, मैं करने की कोशिश की फिटिंग डेटा. हालांकि, मैं निम्नलिखित त्रुटि मिलती है:

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-44-f73622372111> in <module>()
     27 print(X_train.shape)
     28 
---> 29 ct.fit(X_train)
     30 X_train_normal = ct.transform(X_train)
     31 X_test_normal = ct.transform(X_test)

3 frames
/usr/local/lib/python3.7/dist-packages/sklearn/utils/__init__.py in _get_column_indices(X, key)
    387     :func:`_safe_indexing_column`.
    388     """
--> 389     n_columns = X.shape[1]
    390 
    391     key_dtype = _determine_key_type(key)

IndexError: tuple index out of range

मैं सोच रहा हूँ अगर यह है एक आकार मुद्दा है, लेकिन एक नोट के रूप में, के X_train डेटा के आकार (2020896,).

वहाँ कुछ है मैं के साथ क्या करना है अपने डेटा को ठीक करने के लिए इस त्रुटि है?

numpy pandas python scikit-learn
2021-11-23 19:01:34
1

सबसे अच्छा जवाब

1

आप निकाले X_btc के रूप में एक पांडा श्रृंखला की तरह है जो 1D सरणी, आप की आवश्यकता को निकालने के लिए DataFrame (2 डी सरणी के लिए/मैट्रिक्स). बदलें:

X_btc = btc_data["Time"]

के साथ:

X_btc = btc_data[["Time"]]

निकालने के लिए DataFrame

संपादित करने के लिए नए त्रुटि:

KeyError होता है क्योंकि इस ट्रांसफार्मर:

ct = make_column_transformer(
    (MinMaxScaler(), ["Time", "Open"]),
    (OneHotEncoder(handle_unknown="ignore"), ["Time", "Open"])
)

आप उपयोग कर रहे हैं ["Time", "Open"] कॉलम. हालांकि, X_btc कोई स्तंभ "Open" (के रूप में आप केवल चयनित स्तंभ "Time"). के "Open" लक्ष्य है लेबल (y_btcहै ) और आप शामिल नहीं होना चाहिए में X_btc. उस मामले में, आप को दूर कर सकते हैं "Open" से make_column_transformer:

ct = make_column_transformer(
    (MinMaxScaler(), ["Time"]),
    (OneHotEncoder(handle_unknown="ignore"), ["Time"])
)
2021-11-23 19:54:17

था कि यह परिवर्तन की एक 2D सरणी, लेकिन यह की वजह से एक अलग त्रुटि: pastebin.com/dVRqu7ir
Khosraw Azizi

देखें में संपादित जवाब
Bartosz Mikulski

विवरण के लिए धन्यवाद!
Khosraw Azizi

मैं कर रहा हूँ एक बिट खो दिया है । कृपया स्पष्ट @KhosrawAzizi , क्या आप को प्राप्त करने की कोशिश के साथ इस स्तंभ ट्रांसफार्मर? OneHotEncode (OHE) के लिए है, स्पष्ट डेटा, और के रूप में मैं समझता हूँ समय होता है timestamps, और खुला होता है कीमतों. दोनों चर निरंतर कर रहे हैं, लेकिन OHE डिज़ाइन किया गया है के साथ काम करने के लिए स्पष्ट है डेटा. MinMaxScaler है कुछ हद तक ठीक है, के रूप में यह काम करता है के साथ सतत चर. हालांकि, मैं यह संदेह नहीं है इस्तेमाल किया जाना चाहिए के लिए timestamps और कीमतों. एक और बात यह है कि इस समस्या का निरूपण. क्या आप चाहते हैं की भविष्यवाणी करने के लिए कीमत के आधार पर टाइमस्टैम्प? क्या आप चाहते हैं की भविष्यवाणी करने के लिए भविष्य की कीमतों?
Bartosz Mikulski

बस स्पष्ट करने के लिए, मैं सीख रहा हूँ के माध्यम से अपने रास्ते ... बदलेगी देश के लिए एक विज्ञान मेले परियोजना के लिए. चूंकि अभी मैं खेल रहा हूँ के माध्यम से रेखीय प्रतिगमन, मैं कोशिश करना चाहता था सामान्य उपयोग करने के लिए कन्वर्ट करने के लिए अपने डेटा के बीच 0s और 1s. मैं समझता हूँ कि मैं शायद करने की जरूरत नहीं होगी OneHotEncode के बाद से डेटा को शामिल नहीं करता है किसी भी स्ट्रिंग डेटा. मैं शायद होगा को हटाने है कि बाद में । अभी के लिए, मैं कोशिश कर रहा हूँ में कमी करने के लिए अपने रन-बार और झड़ने सामान्य है, क्योंकि मैं योजना पर प्रशिक्षण के मॉडल की भविष्यवाणी करने के लिए भविष्य में कीमतों में और उसके बाद की पुष्टि के लिए उन्हें दिए गए नव उपलब्ध डेटा याहू वित्त एपीआई.
Khosraw Azizi

अभी के लिए, मैं कोशिश कर रहा हूँ बाहर आंकड़ा करने के लिए कैसे कन्वर्ट करने के लिए मेरे X_train_normal करने के लिए एक सरणी का उपयोग कर numpy, लेकिन मेरी चलाने के लिए समय का उपयोग कर रहा है स्मृति का एक बहुत कोशिश कर रहा है जब इसे बदलने के लिए. अंत में होने के लिए खुला एक और सवाल है कि एक के लिए अगर मैं नहीं कर सकते एक तरह से बाहर आंकड़ा ।
Khosraw Azizi

अद्यतन: हटाने OneHotEncode स्तंभ से ट्रांसफार्मर तय है कि इस मुद्दे के रूप में अच्छी तरह से.
Khosraw Azizi

संपादित करें: मैं प्रस्तुत प्रतिक्रिया में 40 सेकंड के बाद अपने अद्यतन :) अपने क्रम का उपयोग कर रहा है स्मृति का एक बहुत की वजह से OHE (शायद). क्या आकार है द्वारा रिपोर्ट चल रहा है X_train_normal.shape? यदि यह एक बड़ी संख्या में दूसरे स्थान पर तो यह होना चाहिए OHE की गलती है । अन्य कि तुलना में, स्तंभ ट्रांसफार्मर transform विधि रिटर्न NumPy सरणी (या विरल SciPy मैट्रिक्स), लेकिन नहीं DataFrame
Bartosz Mikulski

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................