Table of Contents
Toggle
लॉजिस्टिक रिग्रेशन एक सांख्यिकीय तकनीक है जो विशेष रूप से बाइनरी (दो विकल्पों वाले) परिणामों की भविष्यवाणी के लिए उपयोग की जाती है। इसका उपयोग यह निर्धारित करने के लिए किया जाता है कि किसी घटना का परिणाम 0 होगा या 1, यानी “नहीं” या “हां”।
उदाहरण के लिए:
क्या कोई व्यक्ति लोन चुका पाएगा?
क्या कोई ईमेल स्पैम है?
क्या कोई मरीज किसी विशेष बीमारी से पीड़ित है?
इन सभी सवालों के जवाब में हमें “हाँ” या “नहीं” में से एक ही जवाब मिलेगा। लॉजिस्टिक रिग्रेशन का उपयोग करके हम इन सवालों के जवाब देने के लिए एक मॉडल बना सकते हैं।
मान लीजिए हम यह जानना चाहते हैं कि कोई छात्र किसी परीक्षा में पास होगा या फेल। हमारे पास छात्र के बारे में कई जानकारियां हैं जैसे कि उसकी उम्र, पढ़ाई के घंटे, पिछले परीक्षाओं के अंक, आदि।
लॉजिस्टिक रिग्रेशन इस काम को निम्नलिखित चरणों में करता है:
मान लीजिए हमारे मॉडल ने एक छात्र के लिए 0.8 की संभावना निकाली। इसका मतलब है कि 80% संभावना है कि वह छात्र परीक्षा में पास होगा।
आइए, हम इस विषय को और विस्तार से समझते हैं, ताकि आप मशीन लर्निंग के इस महत्वपूर्ण पहलू के बारे में और अधिक गहराई से जान सकें।
मॉडल प्रशिक्षण एक ऐसी प्रक्रिया है जिसमें हम एक मॉडल को डेटा के एक सेट पर प्रशिक्षित करते हैं ताकि वह भविष्य में नए डेटा पर सटीक भविष्यवाणियां कर सके। यह प्रक्रिया मॉडल को डेटा में मौजूद पैटर्नों को पहचानने और उन पैटर्नों के आधार पर निर्णय लेने में सक्षम बनाती है।
वजन: वजन यह दर्शाते हैं कि प्रत्येक स्वतंत्र चर का निर्भर चर पर कितना प्रभाव पड़ता है। उदाहरण के लिए, एक मॉडल जो यह भविष्यवाणी करता है कि कोई व्यक्ति घर खरीदेगा या नहीं, में आय का वजन अधिक हो सकता है क्योंकि उच्च आय वाले लोगों के घर खरीदने की संभावना अधिक होती है।
मान लीजिए हम एक मॉडल बनाना चाहते हैं जो यह भविष्यवाणी करे कि कोई व्यक्ति डायबिटीज से पीड़ित है या नहीं। हमारे पास डेटा में विभिन्न कारक होंगे जैसे कि उम्र, वजन, ब्लड शुगर लेवल आदि। मॉडल प्रशिक्षण के दौरान, मॉडल इन कारकों के बीच संबंधों की पहचान करेगा और यह निर्धारित करेगा कि कौन से कारक डायबिटीज होने की संभावना को अधिक प्रभावित करते हैं।
मॉडल प्रशिक्षण एक इटरेटिव प्रक्रिया है। इसका मतलब है कि मॉडल को बार-बार प्रशिक्षित किया जाता है और हर बार वजन और बायस को समायोजित किया जाता है ताकि मॉडल की भविष्यवाणियां अधिक सटीक हो सकें।
लॉजिस्टिक रिग्रेशन और लीनियर रिग्रेशन दोनों ही रिग्रेशन विश्लेषण की तकनीकें हैं, लेकिन इनका उपयोग अलग-अलग प्रकार के समस्याओं को हल करने के लिए किया जाता है।
उपयोग: लीनियर रिग्रेशन का उपयोग तब किया जाता है जब हम किसी निरंतर चर (continuous variable) का पूर्वानुमान लगाना चाहते हैं। उदाहरण के लिए, किसी व्यक्ति की उम्र के आधार पर उसकी आय का अनुमान लगाना।
आउटपुट: लीनियर रिग्रेशन एक निरंतर संख्या के रूप में आउटपुट देता है।
समीकरण: y = mx + c (जहां y निर्भर चर, x स्वतंत्र चर, m ढलान और c अंतःखंड है)
विज़ुअलाइज़ेशन: लीनियर रिग्रेशन का आलेख एक सीधी रेखा के रूप में होता है।
उदाहरण: किसी घर का क्षेत्रफल और उसके मूल्य के बीच संबंध का अध्ययन करना।
उपयोग: लॉजिस्टिक रिग्रेशन का उपयोग तब किया जाता है जब हम किसी द्विआधारी (binary) परिणाम का पूर्वानुमान लगाना चाहते हैं। उदाहरण के लिए, कोई व्यक्ति किसी उत्पाद को खरीदेगा या नहीं, कोई रोगी किसी बीमारी से पीड़ित है या नहीं।
आउटपुट: लॉजिस्टिक रिग्रेशन 0 और 1 के बीच एक संख्या देता है, जो एक घटना की होने की संभावना को दर्शाता है।
समीकरण: लॉजिस्टिक फ़ंक्शन का उपयोग किया जाता है जो आउटपुट को 0 और 1 के बीच सीमित करता है।
विज़ुअलाइज़ेशन: लॉजिस्टिक रिग्रेशन का आलेख एक S-आकार के वक्र (सिग्मॉइड फ़ंक्शन) के रूप में होता है।
उदाहरण: किसी व्यक्ति के डेटा के आधार पर यह भविष्यवाणी करना कि वह कैंसर से पीड़ित होगा या नहीं।
| विशेषता | लीनियर रिग्रेशन | लॉजिस्टिक रिग्रेशन |
| आउटपुट | निरंतर संख्या | 0 और 1 के बीच की संख्या (संभावना) |
| उपयोग | निरंतर चर का पूर्वानुमान | द्विआधारी परिणाम का पूर्वानुमान |
| समीकरण | y = mx + c | लॉजिस्टिक फ़ंक्शन |
| विज़ुअलाइज़ेशन | सीधी रेखा | S-आकार का वक्र |
| उदाहरण | घर का मूल्य, आय | उत्पाद खरीदना, बीमारी होना |
कब कौन सा उपयोग करें?
यदि आप किसी संख्यात्मक मान का पूर्वानुमान लगाना चाहते हैं, तो लीनियर रिग्रेशन का उपयोग करें।
यदि आप किसी घटना के होने या न होने की संभावना का पूर्वानुमान लगाना चाहते हैं, तो लॉजिस्टिक रिग्रेशन का उपयोग करें।
सारांश में:
लीनियर रिग्रेशन संख्याओं के बीच संबंधों का अध्ययन करता है, जबकि लॉजिस्टिक रिग्रेशन घटनाओं के होने या न होने की संभावना का अध्ययन करता है।
लीनियर रिग्रेशन एक सीधी रेखा का उपयोग करता है, जबकि लॉजिस्टिक रिग्रेशन एक S-आकार का वक्र (सिग्मॉइड फ़ंक्शन) का उपयोग करता है।
लॉजिस्टिक रिग्रेशन एक शक्तिशाली सांख्यिकीय तकनीक है जिसका उपयोग द्विआधारी परिणामों का पूर्वानुमान लगाने के लिए किया जाता है। उदाहरण के लिए, यह भविष्यवाणी करने के लिए इस्तेमाल किया जा सकता है कि कोई ग्राहक किसी उत्पाद को खरीदेगा या नहीं, कोई ईमेल स्पैम है या नहीं, या कोई व्यक्ति किसी बीमारी से पीड़ित है या नहीं।
1. डेटा का कलेक्शन और तैयारी
डेटा का कलेक्शन आपको उस डेटा को इकट्ठा करना होगा जिसका उपयोग आप अपने मॉडल को प्रशिक्षित करने के लिए करेंगे। यह डेटा विभिन्न स्रोतों से आ सकता है, जैसे कि डेटाबेस, फाइलें या वेबसाइट्स।
डेटा की सफाई: डेटा में त्रुटियों, असंगतियों या खाली मानों को हटाना या ठीक करना।
फीचर इंजीनियरिंग: डेटा को ऐसे रूप में बदलना जो मॉडल के लिए उपयोगी हो। इसमें नए फीचर्स बनाना, मौजूदा फीचर्स को स्केल करना या उन्हें श्रेणीबद्ध करना शामिल हो सकता है।
2. डेटा को प्रशिक्षण और परीक्षण सेट में विभाजित करना
प्रशिक्षण सेट: डेटा का एक हिस्सा जिसका उपयोग मॉडल को प्रशिक्षित करने के लिए किया जाता है।
परीक्षण सेट: डेटा का एक हिस्सा जिसका उपयोग मॉडल के प्रदर्शन का मूल्यांकन करने के लिए किया जाता है।
3. मॉडल का चयन लॉजिस्टिक रिग्रेशन: चूंकि हम बाइनरी रिजल्ट का पूर्वानुमान लगा रहे हैं, इसलिए लॉजिस्टिक रिग्रेशन एक उपयुक्त विकल्प है।
4. मॉडल को प्रशिक्षित करना
मॉडल को फिट करना: प्रशिक्षण डेटा का उपयोग करके मॉडल के पैरामीटरों (वजन और बायस) को अनुकूलित किया जाता है ताकि यह डेटा में पैटर्न को सबसे अच्छा ढंग से फिट कर सके।
5. मॉडल का मूल्यांकन
परीक्षण सेट पर मूल्यांकन: मॉडल का उपयोग परीक्षण सेट पर भविष्यवाणियां करने के लिए किया जाता है और फिर भविष्यवाणियों की तुलना वास्तविक परिणामों से की जाती है।
मूल्यांकन मेट्रिक्स: मॉडल के प्रदर्शन का मूल्यांकन करने के लिए विभिन्न मेट्रिक्स का उपयोग किया जाता है, जैसे कि सटीकता, सटीकता, याद, एफ1-स्कोर आदि।
6. मॉडल का उपयोग
नए डेटा पर भविष्यवाणियां: एक बार जब मॉडल का मूल्यांकन हो जाता है और यह संतोषजनक परिणाम देता है, तो इसका उपयोग नए डेटा पर भविष्यवाणियां करने के लिए किया जा सकता है।
मान लीजिए हम यह भविष्यवाणी करना चाहते हैं कि कोई छात्र किसी परीक्षा में पास होगा या फेल होगा। हमारे पास छात्रों के विभिन्न गुणों का डेटा है, जैसे कि अध्ययन के घंटे, पिछले परीक्षाओं के अंक आदि। हम लॉजिस्टिक रिग्रेशन का उपयोग करके एक मॉडल बना सकते हैं जो इन गुणों के आधार पर भविष्यवाणी करेगा कि कोई छात्र पास होगा या फेल होगा।
यह ध्यान रखना महत्वपूर्ण है कि लॉजिस्टिक रिग्रेशन केवल बाइनरी रिजल्ट के लिए उपयुक्त है। यदि आपके पास मल्टीक्लास समस्या है, तो आपको अन्य तकनीकों जैसे कि बहुवर्गीय लॉजिस्टिक रिग्रेशन या सपोर्ट वेक्टर मशीन का उपयोग करना चाहिए।
लॉजिस्टिक रिग्रेशन एक ऐसा सांख्यिकीय तरीका है जिसका उपयोग हम किसी घटना के होने या न होने की संभावना का अनुमान लगाने के लिए करते हैं। मान लीजिए, आप जानना चाहते हैं कि कोई छात्र परीक्षा में पास होगा या फेल होगा। लॉजिस्टिक रिग्रेशन आपको इस सवाल का जवाब देने में मदद कर सकता है।
जब आपको यह पता लगाना हो कि कोई घटना होगी या नहीं।
जब आपके पास अलग-अलग तरह के डेटा हो।
जब आपको एक सरल और समझने में आसान तरीका चाहिए।
कब इस्तेमाल न करें
जब आपके पास तीन या उससे अधिक तरह के परिणाम हो।
जब आपके डेटा में बहुत सारी गलतियाँ हों।
जब डेटा के बीच का संबंध बहुत जटिल हो।
लॉजिस्टिक रिग्रेशन एक बहुत उपयोगी तरीका है, लेकिन यह हर स्थिति में सही नहीं होता। हमें हमेशा अपने डेटा और समस्या को ध्यान में रखकर ही इसका इस्तेमाल करना चाहिए।
सरल शब्दों में:
लॉजिस्टिक रिग्रेशन एक ऐसा टूल है जिसका उपयोग हम किसी चीज़ के होने या न होने की संभावना का अनुमान लगाने के लिए करते हैं। यह आसान है लेकिन कुछ सीमाएं भी हैं।
This project utilizes Python’s logistic regression capabilities to analyze factors influencing customer purchase decisions based on age and salary data.
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, confusion_matrix
import numpy as np
import matplotlib.pyplot as plt # Import for plotting
import seaborn as sns # Import for statistical data visualization
# Load dataset from Excel
data = pd.read_excel(r'D:\data_logistic_regression.xlsx') # Change the path as needed
# Preview the data
print(data.head())
# Independent variables (features)
X = data[['Age', 'Salary']]
# Dependent variable (target)
y = data['Purchased']
# Split the data: 80% for training, 20% for testing
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Create Logistic Regression model
logistic_reg = LogisticRegression()
# Train the model
logistic_reg.fit(X_train, y_train)
# Predict the test results
y_pred = logistic_reg.predict(X_test)
# Check the accuracy of the model
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)
# Confusion matrix for more detailed performance analysis
conf_matrix = confusion_matrix(y_test, y_pred)
print("Confusion Matrix:\n", conf_matrix)
# Generate S-curve data
# Create a range of values for Age and Salary
age_range = np.linspace(X['Age'].min(), X['Age'].max(), 100)
salary_range = np.linspace(X['Salary'].min(), X['Salary'].max(), 100)
# Create a meshgrid for the range
age_grid, salary_grid = np.meshgrid(age_range, salary_range)
# Create a DataFrame for the grid with proper column names
grid = pd.DataFrame(np.c_[age_grid.ravel(), salary_grid.ravel()], columns=['Age', 'Salary'])
# Get the predicted probabilities
probabilities = logistic_reg.predict_proba(grid)[:, 1] # Probabilities for the positive class
# Reshape the probabilities to match the grid shape
probabilities = probabilities.reshape(age_grid.shape)
# Plotting the S-curve
plt.figure(figsize=(10, 6))
plt.contourf(age_grid, salary_grid, probabilities, levels=20, cmap='RdBu', alpha=0.7)
plt.colorbar(label='Probability of Purchase')
plt.title('S-Curve of Purchase Probability')
plt.xlabel('Age')
plt.ylabel('Salary')
plt.scatter(X_test['Age'], X_test['Salary'], c=y_test, edgecolors='k', marker='o', label='Test Data')
plt.legend()
plt.show()
यहाँ पर आपके द्वारा दिए गए कोड का चरणबद्ध हिंदी में विवरण प्रस्तुत किया गया है:
import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score, confusion_matrix import numpy as np import matplotlib.pyplot as plt import seaborn as sns
data = pd.read_excel(r'D:\data_logistic_regression.xlsx') # Change the path as neededयहाँ पर एक Excel फ़ाइल से डेटा लोड किया जा रहा है। आपको फ़ाइल का पथ सही करना होगा।
print(data.head())head() फंक्शन का उपयोग करके पहले 5 पंक्तियों को प्रदर्शित किया जा रहा है ताकि डेटा का एक प्रारंभिक अवलोकन मिल सके।
X = data[['Age', 'Salary']] y = data['Purchased']X contains the independent variables (Age and Salary). y contains the dependent variable (Purchased), which indicates whether a purchase was made.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)train_test_split फंक्शन का उपयोग करके डेटा को 80% ट्रेनिंग और 20% टेस्टिंग सेट में विभाजित किया गया है।
logistic_reg = LogisticRegression()एक लॉजिस्टिक रिग्रेशन मॉडल का उदाहरण बनाया गया है।
logistic_reg.fit(X_train, y_train)fit फंक्शन का उपयोग करके मॉडल को ट्रेनिंग डेटा पर प्रशिक्षित किया गया है।
y_pred = logistic_reg.predict(X_test)predict फंक्शन का उपयोग करके टेस्ट सेट पर भविष्यवाणियाँ की गई हैं।
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)
accuracy_score फंक्शन का उपयोग करके मॉडल की सटीकता की गणना की गई है और उसे प्रदर्शित किया गया है।
conf_matrix = confusion_matrix(y_test, y_pred)
print("Confusion Matrix:\n", conf_matrix)
confusion_matrix फंक्शन का उपयोग करके अधिक विस्तृत प्रदर्शन विश्लेषण के लिए कन्फ्यूजन मैट्रिक्स को प्रदर्शित किया गया है।
age_range = np.linspace(X['Age'].min(), X['Age'].max(), 100) salary_range = np.linspace(X['Salary'].min(), X['Salary'].max(), 100) age_grid, salary_grid = np.meshgrid(age_range, salary_range) grid = pd.DataFrame(np.c_[age_grid.ravel(), salary_grid.ravel()], columns=['Age', 'Salary'])आयु और वेतन के लिए मानों की एक सीमा बनाई गई है और meshgrid का उपयोग करके एक ग्रिड तैयार किया गया है। फिर उसे एक DataFrame में संगठित किया गया है। 12. भविष्यवाणी संभावनाएँ प्राप्त करना
probabilities = logistic_reg.predict_proba(grid)[:, 1] # Probabilities for the positive class
probabilities = probabilities.reshape(age_grid.shape)संभावनाओं को ग्रिड के आकार में पुनर्गठित किया गया है ताकि प्लॉट में उपयोग किया जा सके।
plt.figure(figsize=(10, 6))
plt.contourf(age_grid, salary_grid, probabilities, levels=20, cmap='RdBu', alpha=0.7)
plt.colorbar(label='Probability of Purchase')
plt.title('S-Curve of Purchase Probability')
plt.xlabel('Age')
plt.ylabel('Salary')
plt.scatter(X_test['Age'], X_test['Salary'], c=y_test, edgecolors='k', marker='o', label='Test Data')
plt.legend()
plt.show()
