AIUnlimited
🌳

AI की नींव

🌱
AI Seeds

शून्य से शुरू करें

🌿
AI Sprouts

नींव बनाएं

🌳
AI Branches

व्यवहार में लागू करें

🏕️
AI Canopy

गहराई में जाएं

🌲
AI Forest

AI में महारत हासिल करें

🔨

AI में महारत

✏️
AI Sketch

शून्य से शुरू करें

🪨
AI Chisel

नींव बनाएं

⚒️
AI Craft

व्यवहार में लागू करें

💎
AI Polish

गहराई में जाएं

🏆
AI Masterpiece

AI में महारत हासिल करें

📘

AI व्यावहारिक

📖
ओपन-सोर्स मॉडल को समझना

ओपन-सोर्स मॉडल की बुनियादी बातें और संसाधन

🎯
समस्या से मॉडल कार्य तक

व्यावसायिक समस्याओं को मॉडल कार्यों में बदलना

⚡
अपना पहला मॉडल चलाना

30 मिनट में अपने पहले परिणाम देखें

🔧
फाइन-ट्यूनिंग और मूल्यांकन

मॉडल फाइन-ट्यून करें और प्रदर्शन का मूल्यांकन करें

🚀
अनुप्रयोग प्रणालियाँ

वास्तविक AI अनुप्रयोग बनाएं

🎨
जनरेटिव AI

ओपन-सोर्स AIGC मॉडल का अन्वेषण करें

🤖
एजेंट

एजेंट फ्रेमवर्क और MCP टूल सीखें

📐
पूरक बुनियादी बातें

LLM की बुनियादी बातें और मूल्यांकन

🎓

क्लाउड अकादमी

🤖
Claude 101

Learn AI basics with Claude

💻
Claude Code 101

Code with Claude as your pair programmer

🤝
Introduction to Claude Cowork

Collaborate with Claude on complex projects

⚙️
Claude Platform 101

Build apps with the Claude API

लैब

7 प्रयोग लोड हुए
🧬Neural Network Playground🤖AI या इंसान?🥋Prompt Engineering Dojo🏁Algorithm Race🧠AI ट्रिविया चैलेंज🏗️सिस्टम डिज़ाइन कैनवस
🎯मॉक इंटरव्यूलैब में जाएँ→
🚀

करियर विकास

🚀
इंटरव्यू लॉन्चपैड

अपनी यात्रा शुरू करें

🌟
व्यवहारिक इंटरव्यू में महारत

सॉफ्ट स्किल्स में महारत

💻
तकनीकी इंटरव्यू

कोडिंग राउंड में सफल हों

🤖
AI और ML इंटरव्यू

ML इंटरव्यू में महारत

🏆
ऑफर और उससे आगे

सबसे अच्छा ऑफर पाएं

सीखना शुरू करें - यह बुनियादी है
AIUnlimited

MIT लाइसेंस

沪ICP备18025655号-11

सीखें

  • AI बुनियादी बातें
  • AI व्यावहारिक
  • क्लाउड अकादमी
  • लैब
  • करियर विकास

समुदाय

  • हमारे बारे में
  • सामान्य प्रश्न

सहायता

  • footer.terms
  • footer.privacy
  • footer.contact
AI और इंजीनियरिंग प्रोग्राम›🌿 AI Sprouts›पाठ›Feature Engineering: मशीनों को महत्वपूर्ण बातें सिखाना
⚙️
AI Sprouts • मध्यम⏱️ 30 मिनट पढ़ने का समय

Feature Engineering: मशीनों को महत्वपूर्ण बातें सिखाना

फ़ीचर इंजीनियरिंग: शिक्षण मशीनें जो मायने रखती हैं

मशीन लर्निंग में एक कहावत है: कचरा अंदर, कचरा बाहर। आपके पास दुनिया का सबसे परिष्कृत एल्गोरिदम हो सकता है, लेकिन यदि आप इसे खराब तरीके से तैयार किया गया डेटा खिलाते हैं, तो परिणाम खराब होंगे। इसके विपरीत, उत्कृष्ट, सोच-समझकर तैयार किया गया डेटा दिया गया एक सरल एल्गोरिदम कच्चे, अव्यवस्थित डेटा दिए गए जटिल एल्गोरिदम से बेहतर प्रदर्शन कर सकता है।

फ़ीचर इंजीनियरिंग कच्चे डेटा को अभ्यावेदन में बदलने की कला है जिसे मशीन लर्निंग एल्गोरिदम प्रभावी ढंग से सीख सकते हैं। यह संभवतः व्यावहारिक मशीन लर्निंग में सबसे प्रभावशाली कौशल है - और यह वह जगह है जहां गहन डोमेन ज्ञान डेटा विज्ञान से मिलता है।

🧩 विशेषताएं क्या हैं?

मशीन लर्निंग में, फ़ीचर उस चीज़ की कोई मापने योग्य संपत्ति या विशेषता है जिसका आप अनुमान लगाने की कोशिश कर रहे हैं। विशेषताएँ आपके मॉडल के इनपुट हैं; लेबल (या लक्ष्य) आउटपुट है।

घर की कीमत पूर्वानुमान मॉडल के लिए:

  • विशेषताएं: वर्गाकार फ़ुटेज, शयनकक्षों की संख्या, पोस्टकोड, निर्माण का वर्ष, निकटतम स्कूल से दूरी
  • लेबल: बिक्री मूल्य

ईमेल स्पैम क्लासिफायरियर के लिए:

  • विशेषताएं: शब्द आवृत्तियों, प्रेषक डोमेन, कुछ वाक्यांशों की उपस्थिति, ईमेल की लंबाई
  • लेबल: स्पैम (1) या स्पैम नहीं (0)

आपकी सुविधाओं की गुणवत्ता, मात्रा और प्रासंगिकता अक्सर आपके द्वारा चुने गए एल्गोरिदम से अधिक महत्वपूर्ण होती है।

🗃️ कच्चा डेटा शायद ही कभी मॉडल-तैयार होता है

वास्तविक दुनिया का डेटा गड़बड़ है। मशीन लर्निंग एल्गोरिदम की विशिष्ट आवश्यकताएं होती हैं जिन्हें कच्चा डेटा लगभग कभी भी संतुष्ट नहीं करता है:

  • केवल संख्यात्मक: अधिकांश एल्गोरिदम सीधे पाठ, श्रेणियों या तिथियों को संसाधित नहीं कर सकते हैं
  • कोई लुप्त मान नहीं: अधिकांश एल्गोरिदम NaN या शून्य मानों को संभाल नहीं सकते हैं
  • समान पैमाने: बहुत भिन्न मूल्य श्रेणियों वाली विशेषताएं ग्रेडिएंट-आधारित शिक्षा को विकृत कर सकती हैं
  • सार्थक प्रतिनिधित्व: कच्चे टाइमस्टैम्प या पोस्टकोड उन पैटर्न को एन्कोड नहीं करते हैं जो मायने रखते हैं (क्या यह सप्ताहांत है? क्या यह एक समृद्ध क्षेत्र है?)

फ़ीचर इंजीनियरिंग कच्चे डेटा और मॉडल-तैयार इनपुट के बीच अंतर को पाटने की प्रक्रिया है।

📏 सामान्यीकरण एवं मानकीकरण

जब सुविधाओं के पैमाने बहुत भिन्न होते हैं, तो मॉडल को गुमराह किया जा सकता है। हजारों में मान वाला एक फीचर 0 और 1 के बीच मान वाले फीचर पर हावी हो सकता है।

न्यूनतम-अधिकतम सामान्यीकरण ([0, 1] तक स्केलिंग)

पाठ 13 / 160% पूर्ण
←Overfitting और Underfitting: ML मॉडल क्यों विफल होते हैं

चर्चा

साइन इन करें चर्चा में शामिल हों

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
X_scaled = scaler.fit_transform(X_train)

# Before: age=[22, 65, 34], income=[18000, 95000, 42000]
# After:  age=[0.0, 1.0, 0.27], income=[0.0, 1.0, 0.31]

मानकीकरण (जेड-स्कोर, माध्य=0, कक्षा=1)

न्यूनतम-अधिकतम स्केलिंग की तुलना में आउटलेर्स के लिए अधिक मजबूत:

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X_train)

# Transforms each feature to have mean=0, standard deviation=1
# Feature value → (value - mean) / std_dev

सामान्य नियम: डिफ़ॉल्ट रूप से मानकीकरण का उपयोग करें। जब आपको किसी विशिष्ट सीमाबद्ध सीमा (उदाहरण के लिए, तंत्रिका नेटवर्क इनपुट) में मानों की आवश्यकता हो तो न्यूनतम-अधिकतम का उपयोग करें।

🏷️ श्रेणीबद्ध चर को एन्कोड करना

"लाल/हरा/नीला" या "लंदन/मैनचेस्टर/बर्मिंघम" जैसी श्रेणियों में कोई प्राकृतिक संख्यात्मक क्रम नहीं है। अधिकांश एल्गोरिदम में उन्हें फीड करने से पहले आपको उन्हें एनकोड करना होगा।

वन-हॉट एन्कोडिंग

प्रत्येक श्रेणी के लिए एक बाइनरी कॉलम बनाता है। सर्वोत्तम तब जब श्रेणियों का कोई अंतर्निहित क्रम न हो:

import pandas as pd

# Original: colour = ['red', 'green', 'blue', 'red']
df = pd.DataFrame({'colour': ['red', 'green', 'blue', 'red']})

encoded = pd.get_dummies(df['colour'], prefix='colour')
print(encoded)

#    colour_blue  colour_green  colour_red
# 0            0             0           1
# 1            0             1           0
# 2            1             0           0
# 3            0             0           1

लेबल एन्कोडिंग

प्रत्येक श्रेणी को एक पूर्णांक में मैप करता है। केवल तभी उपयोग करें जब श्रेणियों का प्राकृतिक क्रम हो:

from sklearn.preprocessing import LabelEncoder

# Works for: ['low', 'medium', 'high'] → [0, 1, 2]
# DANGER: Don't use for unordered categories like cities —
# the model will incorrectly assume London(0) < Paris(1) < Tokyo(2)

le = LabelEncoder()
df['education_level'] = le.fit_transform(df['education_level'])
# 'school' → 0, 'undergraduate' → 1, 'postgraduate' → 2
🤯
एक सामान्य शुरुआती गलती शहर के नामों को लेबल-एनकोड करना है, गलती से मॉडल को यह बताना कि टोक्यो "लंदन से अधिक" है, जिससे विचित्र भविष्यवाणियां होती हैं। अव्यवस्थित श्रेणियों के लिए हमेशा वन-हॉट एन्कोडिंग का उपयोग करें।

🕳️ लुप्त मूल्यों को संभालना

वास्तविक दुनिया के डेटासेट में गुम डेटा लगभग सार्वभौमिक है। आपके पास कई विकल्प हैं:

लांछन

लुप्त मानों को परिकलित विकल्प से भरें:

from sklearn.impute import SimpleImputer
import numpy as np

# Strategy options: 'mean', 'median', 'most_frequent', 'constant'
imputer = SimpleImputer(strategy='median')
X_imputed = imputer.fit_transform(X)

# For numerical data: median is robust to outliers
# For categorical data: use 'most_frequent'

एक गुमशुदगी सूचक जोड़ना

कभी-कभी यह तथ्य कि डेटा गायब है, अपने आप में जानकारीपूर्ण होता है:

# Create a binary flag: 1 if income was missing, 0 if present
df['income_missing'] = df['income'].isna().astype(int)

# Then impute the original column
df['income'].fillna(df['income'].median(), inplace=True)

कब गिराना है

यदि किसी कॉलम में ~70-80% से अधिक गुम मान हैं (शायद ही जानकारीपूर्ण) तो उसे हटा दें। किसी पंक्ति को केवल तभी छोड़ें जब आपके पास पर्याप्त डेटा हो और पंक्ति अनियमित रूप से गायब हो (व्यवस्थित रूप से नहीं)।

🛠️ नई सुविधाएँ बनाना

यहीं पर फीचर इंजीनियरिंग एक कला बन जाती है। आप ऐसे फीचर्स बनाने के लिए डोमेन ज्ञान का उपयोग करते हैं जो कच्चे डेटा में दिखाई न देने वाले पैटर्न को कैप्चर करते हैं।

दिनांक/समय अपघटन

df['purchase_datetime'] = pd.to_datetime(df['purchase_datetime'])

# Extract meaningful components
df['hour_of_day']   = df['purchase_datetime'].dt.hour
df['day_of_week']   = df['purchase_datetime'].dt.dayofweek
df['is_weekend']    = (df['day_of_week'] >= 5).astype(int)
df['month']         = df['purchase_datetime'].dt.month
df['is_holiday']    = df['purchase_datetime'].isin(uk_holidays).astype(int)

एक अपरिष्कृत टाइमस्टैम्प मॉडल को सीधे तौर पर कुछ नहीं बताता; ये व्युत्पन्न विशेषताएं "धोखाधड़ी सुबह 3 बजे चरम पर" या "सप्ताहांत में बिक्री स्पाइक" जैसे पैटर्न को उजागर करती हैं।

इंटरेक्शन सुविधाएँ

# Square footage × number of bathrooms might be more predictive
# than either feature alone for house prices
df['size_per_bathroom'] = df['sqft'] / df['bathrooms']

# Ratio of income to loan amount — a classic credit risk feature
df['debt_to_income'] = df['loan_amount'] / df['annual_income']

टेक्स्ट की विशेषताएं

from sklearn.feature_extraction.text import TfidfVectorizer

# Convert raw text to numerical feature matrix
vectorizer = TfidfVectorizer(max_features=1000, stop_words='english')
text_features = vectorizer.fit_transform(df['review_text'])

# Each word becomes a feature; its value reflects how important
# the word is in that document relative to the whole corpus
🤔
Think about it:यदि आप रेस्तरां स्वास्थ्य निरीक्षण विफलताओं की भविष्यवाणी करने के लिए एक मॉडल का निर्माण कर रहे थे, तो आपके पास किस कच्चे डेटा तक पहुंच हो सकती है, और आप इससे कौन सी नई सुविधाएँ इंजीनियर कर सकते हैं जो अकेले कच्चे डेटा से अधिक उपयोगी होंगी?

📊 फीचर महत्व

एक बार जब आप एक मॉडल बना लेते हैं, तो आप माप सकते हैं कि इसमें कौन सी सुविधाएँ सबसे उपयोगी लगीं। यह आपके मॉडल को समझने और यह तय करने के लिए कि कौन सी सुविधाएँ रखनी हैं या हटानी हैं, दोनों के लिए मूल्यवान है:

from sklearn.ensemble import RandomForestClassifier
import matplotlib.pyplot as plt

model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

# Get feature importances
importances = pd.Series(
    model.feature_importances_,
    index=feature_names
).sort_values(ascending=False)

print(importances.head(10))

# income_to_debt_ratio     0.187
# days_since_last_payment  0.143
# credit_utilisation       0.121
# ...

लगभग-शून्य महत्व वाली सुविधाओं को आमतौर पर प्रदर्शन को प्रभावित किए बिना हटाया जा सकता है - और उन्हें हटाने से मॉडल सरल हो जाता है, प्रशिक्षण का समय कम हो जाता है और सामान्यीकरण में सुधार हो सकता है।

🗜️ आयामीता में कमी: एक संक्षिप्त परिचय

जब आपके पास सैकड़ों या हजारों विशेषताएं होती हैं, तो मॉडल संघर्ष कर सकते हैं - इसे आयामीता का अभिशाप कहा जाता है। आयामीता में कमी की तकनीकें सबसे महत्वपूर्ण पैटर्न को संरक्षित करते हुए सुविधाओं को संपीड़ित करती हैं:

from sklearn.decomposition import PCA

# Reduce 100 features to 10 components that capture 95% of variance
pca = PCA(n_components=10)
X_reduced = pca.fit_transform(X_scaled)

print(f"Variance explained: {pca.explained_variance_ratio_.sum():.2%}")
# Variance explained: 94.7%

पीसीए (प्रिंसिपल कंपोनेंट एनालिसिस) सबसे आम दृष्टिकोण है, लेकिन अन्य में टी-एसएनई (विज़ुअलाइज़ेशन के लिए) और यूएमएपी (स्थानीय संरचना को संरक्षित करने के लिए) शामिल हैं।

🧠त्वरित जांच

आपके पास 'शहर' कॉलम वाला एक डेटासेट है जिसमें 50 अलग-अलग शहरों के नाम हैं। आपको किस एन्कोडिंग दृष्टिकोण का उपयोग करना चाहिए?

चाबी छीनना

  • विशेषताएं आपके मॉडल के इनपुट हैं; फ़ीचर गुणवत्ता अक्सर एल्गोरिथम पसंद से अधिक मायने रखती है
  • कच्चा डेटा लगभग कभी भी मॉडल-तैयार नहीं होता है - इसे सफाई, परिवर्तन और संवर्धन की आवश्यकता होती है
  • सामान्यीकरण/मानकीकरण सुविधाओं को तुलनीय पैमाने पर रखता है; डिफ़ॉल्ट रूप से मानकीकरण का उपयोग करें
  • वन-हॉट एन्कोडिंग अव्यवस्थित श्रेणीबद्ध चर के लिए सही है; लेबल एन्कोडिंग केवल ऑर्डर किए गए लोगों के लिए
  • लापता मान को आरोपण (माध्यिका/माध्य/मोड) और एक गुमशुदा संकेतक ध्वज जोड़कर नियंत्रित किया जा सकता है
  • डोमेन ज्ञान से नई सुविधाएँ बनाना - समय अपघटन, अनुपात, इंटरैक्शन - अक्सर सबसे बड़ा प्रदर्शन लाभ पैदा करता है
  • सुविधा महत्व स्कोर आपको यह समझने में मदद करते हैं कि आपका मॉडल किन इनपुट पर निर्भर करता है और किसे हटाया जा सकता है
  • आयामीता में कमी (उदाहरण के लिए, पीसीए) अधिकांश उपयोगी भिन्नता को संरक्षित करते हुए उच्च-आयामी डेटा को संपीड़ित करता है