मेरे पास एक डेटासेट है। जहां मैं कोड की निम्नलिखित पंक्तियों के साथ श्रेणीबद्ध वस्तुओं को संख्याओं में परिवर्तित करके फीचर इंजीनियरिंग का अभ्यास कर रहा था:

import pandas as pd 
import numpy as np
from sklearn import preprocessing
df = pd.read_csv(r'train.csv',index_col='Id')
print(df.shape)
df.head()
colsNum = df.select_dtypes(np.number).columns
colsObj = df.columns.difference(colsNum)

df[colsNum] = df[colsNum].fillna(df[colsNum].mean()//1)
df[colsObj] = df[colsObj].fillna(df[colsObj].mode().iloc[0])

label_encoder = preprocessing.LabelEncoder() 
for col in colsObj:
    df[col] = label_encoder.fit_transform(df[col])
df.head()
for col in colsObj:
    df[col] = label_encoder.inverse_transform(df[col])
df.head()

लेकिन यहां inverse_tranform() मूल डेटासेट नहीं लौटा रहा था। कृपया मेरी मदद करें!

0
Samar Pratap Singh 5 अक्टूबर 2020, 10:41

1 उत्तर

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

आपको प्रति कॉलम एक एन्कोडर चाहिए - आप एक ही एन्कोडर के साथ सभी कॉलम एन्कोड नहीं कर सकते हैं:

import pandas as pd
import numpy as np
from sklearn import preprocessing
df = pd.read_csv(r'train.csv', index_col='Id')
print(df.shape)

colsNum = df.select_dtypes(np.number).columns
colsObj = df.columns.difference(colsNum)

df[colsNum] = df[colsNum].fillna(df[colsNum].mean()//1)
df[colsObj] = df[colsObj].fillna(df[colsObj].mode().iloc[0])
print(df.head())

encoder = {}

for col in colsObj:
    encoder[col] = preprocessing.LabelEncoder()
    df[col] = encoder[col].fit_transform(df[col])
print(df.head())

for col in colsObj:
    df[col] = encoder[col].inverse_transform(df[col])
print(df.head())

अधिक जानकारी के लिए आप यह उत्तर भी देख सकते हैं।

1
David M. 17 जिंदा 2021, 00:58