html
पायथन में K-नजदीकी पड़ोसियों (KNN) मॉडल बनाने: एक व्यापक गाइड
पायथन में एक K-Nearest Neighbors (KNN) मॉडल बनाने पर इस व्यापक गाइड में आपका स्वागत है। चाहे आप एक डेटा विज्ञान उत्साही हों या एक अनुभवी पेशेवर, यह लेख डेटा पूर्वसंसाधन से मॉडल मूल्यांकन तक KNN वर्गीकारक विकसित करने के प्रत्येक चरण से आपको मार्गदर्शन करेगा। इस गाइड के अंत तक, आप पायथन की शक्तिशाली लाइब्रेरीज़ का उपयोग करके KNN को लागू करने की ठोस समझ रखेंगे।
सामग्री तालिका
- K-Nearest Neighbors (KNN) का परिचय
- डेटासेट को समझना
-
डेटा पूर्वसंसाधन
- KNN मॉडल बनाना
- मॉडल मूल्यांकन
- निष्कर्ष
- अतिरिक्त संसाधन
K-Nearest Neighbors (KNN) का परिचय
K-Nearest Neighbors (KNN) एक सरल, फिर भी प्रभावी, पर्यवेक्षित मशीन लर्निंग एल्गोरिदम है जिसका उपयोग वर्गीकरण और प्रतिगमन कार्यों के लिए किया जाता है। KNN एल्गोरिदम एक डेटा पॉइंट को उसके पड़ोसियों के वर्गीकरण के आधार पर वर्गीकृत करता है। यह सहज, लागू करने में आसान है, और इसे प्रशिक्षित चरण की आवश्यकता नहीं होती, जिससे यह रियल-टाइम भविष्यवाणियों के लिए प्रभावी बनता है।
KNN की प्रमुख विशेषताएँ:
- आलसी शिक्षण: KNN आंतरिक मॉडल नहीं बनाता; यह प्रशिक्षण डेटासेट को याद रखता है।
- उदाहरण-आधारित: भविष्यवाणियाँ प्रशिक्षण डेटा से उदाहरणों (पड़ोसियों) पर आधारित होती हैं।
- गैर-प्रायोगिक: KNN अंतर्निहित डेटा वितरण के बारे में कोई मान्यताएँ नहीं बनाता।
डेटासेट को समझना
इस ट्यूटोरियल के लिए, हम Kaggle से WeatherAUS डेटासेट का उपयोग करेंगे। इस डेटासेट में विभिन्न ऑस्ट्रेलियाई स्थानों पर कई वर्षों में रिकॉर्ड किए गए मौसम के गुण शामिल हैं।
डेटासेट का अवलोकन:
विशेषताएँ
लक्ष्य चर
Date, Location, MinTemp, MaxTemp, Rainfall, Evaporation, Sunshine, WindGustDir, WindGustSpeed, WindDir9am, WindDir3pm, WindSpeed9am, WindSpeed3pm, Humidity9am, Humidity3pm, Pressure9am, Pressure3pm, Cloud9am, Cloud3pm, Temp9am, Temp3pm, RainToday, RISK_MM
RainTomorrow (Yes/No)
डेटा पूर्वसंसाधन
डेटा पूर्वसंसाधन मशीन लर्निंग में एक महत्वपूर्ण चरण है। इसमें कच्चे डेटा को समझने योग्य प्रारूप में बदलना शामिल है। उचित पूर्वसंसाधन मशीन लर्निंग एल्गोरिदम के प्रदर्शन को गंभीर रूप से बढ़ा सकता है।
गुम डेटा को संभालना
गुम डेटा मशीन लर्निंग मॉडलों के प्रदर्शन को प्रतिकूल रूप से प्रभावित कर सकता है। हम संख्यात्मक और श्रेणीबद्ध दोनों विशेषताओं के लिए गुम मानों को संभालेंगे।
संख्यात्मक डेटा
- संख्यात्मक कॉलम की पहचान करें:
1
numerical_cols = list(np.where((X.dtypes == np.int64) | (X.dtypes == np.float64))[0])
- मीन के साथ गुम मानों को इम्प्यूट करें:
1234
from sklearn.impute import SimpleImputerimp_mean = SimpleImputer(missing_values=np.nan, strategy='mean')imp_mean.fit(X.iloc[:, numerical_cols])X.iloc[:, numerical_cols] = imp_mean.transform(X.iloc[:, numerical_cols])
श्रेणीबद्ध डेटा
- श्रेणीबद्ध कॉलम की पहचान करें:
1
string_cols = list(np.where((X.dtypes == object))[0])
- मोड (सबसे सामान्य) के साथ गुम मानों को इम्प्यूट करें:
123
imp_mode = SimpleImputer(missing_values=np.nan, strategy='most_frequent')imp_mode.fit(X.iloc[:, string_cols])X.iloc[:, string_cols] = imp_mode.transform(X.iloc[:, string_cols])
श्रेणीबद्ध चर को एन्कोड करना
मशीन लर्निंग एल्गोरिदम को संख्यात्मक इनपुट की आवश्यकता होती है। इसलिए, हमें श्रेणीबद्ध चर को संख्यात्मक प्रारूप में बदलने की आवश्यकता है।
लेबल एन्कोडिंग
लेबल एन्कोडिंग प्रत्येक श्रेणी को वर्णानुक्रमिक क्रम के आधार पर एक अद्वितीय पूर्णांक निर्दिष्ट करता है।
12345
from sklearn import preprocessing def LabelEncoderMethod(series): le = preprocessing.LabelEncoder() return le.fit_transform(series)
वन-हॉट एन्कोडिंग
वन-हॉट एन्कोडिंग प्रत्येक श्रेणी के लिए बाइनरी कॉलम बनाता है।
123456789
from sklearn.compose import ColumnTransformerfrom sklearn.preprocessing import OneHotEncoder def OneHotEncoderMethod(indices, data): columnTransformer = ColumnTransformer( [('encoder', OneHotEncoder(), indices)], remainder='passthrough' ) return columnTransformer.fit_transform(data)
एन्कोडिंग चयन फ़ंक्शन
यह फ़ंक्शन अद्वितीय श्रेणियों की संख्या के आधार पर लेबल एन्कोडिंग या वन-हॉट एन्कोडिंग लागू करने का निर्णय करता है।
12345678910111213
def EncodingSelection(X, threshold=10): string_cols = list(np.where((X.dtypes == object))[0]) one_hot_encoding_indices = [] for col in string_cols: length = len(pd.unique(X[X.columns[col]])) if length == 2 or length > threshold: X[X.columns[col]] = LabelEncoderMethod(X[X.columns[col]]) else: one_hot_encoding_indices.append(col) X = OneHotEncoderMethod(one_hot_encoding_indices, X) return X
एन्कोडिंग लागू करें:
1
X = EncodingSelection(X)
फीचर चयन
प्रासंगिक फीचर्स का चयन मॉडल के प्रदर्शन को बढ़ा सकता है।
- ची-स्क्वायर टेस्ट के साथ SelectKBest लागू करें:
12345678910
from sklearn.feature_selection import SelectKBest, chi2from sklearn import preprocessing kbest = SelectKBest(score_func=chi2, k=10)MMS = preprocessing.MinMaxScaler()x_temp = MMS.fit_transform(X)x_temp = kbest.fit(x_temp, y)best_features = np.argsort(x_temp.scores_)[-13:]features_to_delete = np.argsort(x_temp.scores_)[:-13]X = np.delete(X, features_to_delete, axis=1)
- परिणामी आकार:
1
print(X.shape) # Output: (142193, 13)
ट्रेन-टेस्ट विभाजन
डेटासेट को प्रशिक्षण और परीक्षण सेट में विभाजित करने से यह सुनिश्चित होता है कि मॉडल को अनदेखे डेटा पर मूल्यांकन किया जाए।
123456
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.20, random_state=1)print(X_train.shape) # Output: (113754, 13)
फीचर स्केलिंग
फीचर स्केलिंग स्वतंत्र चर के सीमा को मानकीकृत करता है, यह सुनिश्चित करते हुए कि प्रत्येक फीचर परिणाम में समान योगदान देता है।
- मानकीकरण:
12345
from sklearn import preprocessingsc = preprocessing.StandardScaler(with_mean=False)sc.fit(X_train)X_train = sc.transform(X_train)X_test = sc.transform(X_test)
- आकार जांचें:
12
print(X_train.shape) # Output: (113754, 13)print(X_test.shape) # Output: (28439, 13)
KNN मॉडल बनाना
डेटा पूर्वसंसाधित हो जाने के बाद, हम अब KNN वर्गीकारक बनाने के लिए तैयार हैं।
- KNeighborsClassifier आयात करें:
1
from sklearn.neighbors import KNeighborsClassifier
- वर्गीकारक प्रारंभ करें:
1
knnClassifier = KNeighborsClassifier(n_neighbors=3)
- मॉडल प्रशिक्षित करें:
1
knnClassifier.fit(X_train, y_train)
- भविष्यवाणियाँ करें:
1
y_pred = knnClassifier.predict(X_test)
- एकल भविष्यवाणी उदाहरण:
12
single_prediction = knnClassifier.predict([X_test[0]])print(single_prediction) # Output: [1] (1 indicates 'Yes' for RainTomorrow)
- भविष्यवाणी संभावनाएँ:
12
prediction_prob = knnClassifier.predict_proba([X_test[0]])print(prediction_prob) # Output: [[0.33333333 0.66666667]]
मॉडल मूल्यांकन
मॉडल के प्रदर्शन का मूल्यांकन इसकी सटीकता और विश्वसनीयता को समझने के लिए आवश्यक है।
- सटीकता स्कोर आयात करें:
1
from sklearn.metrics import accuracy_score
- सटीकता की गणना करें:
12
accuracy = accuracy_score(y_pred, y_test) * 100print(f"Accuracy: {accuracy:.2f}%") # Output: Accuracy: 90.28%
व्याख्या:
- KNN मॉडल ने 90.28% की सटीकता प्राप्त की, जो दर्शाता है कि यह अगले दिन के बारिश की स्थिति को 90% से अधिक मामलों में सही रूप से पूर्वानुमानित करता है। यह उच्च सटीकता संकेत देती है कि मॉडल इस वर्गीकरण कार्य के लिए अच्छी तरह से उपयुक्त है।
निष्कर्ष
इस गाइड में, हमने पायथन में K-Nearest Neighbors (KNN) मॉडल बनाने की पूरी प्रक्रिया पर चर्चा की है:
- डेटा आयात: WeatherAUS डेटासेट का उपयोग करना।
- डेटा पूर्वसंसाधन: गुम मानों को संभालना, श्रेणीबद्ध चर को एन्कोड करना, और प्रासंगिक फीचर्स का चयन करना।
- ट्रेन-टेस्ट विभाजन & फीचर स्केलिंग: प्रशिक्षण के लिए डेटा तैयार करना और फीचर्स में एकरूपता सुनिश्चित करना।
- मॉडल निर्माण: KNN वर्गीकारक को प्रशिक्षित करना और भविष्यवाणियाँ करना।
- मॉडल मूल्यांकन: मॉडल की सटीकता का आकलन करना।
KNN एल्गोरिदम निश्चित रूप से वर्गीकरण कार्यों के लिए एक मजबूत विकल्प साबित होता है, विशेष रूप से अच्छी तरह से पूर्वसंसाधित डेटा के साथ। हालांकि, मॉडल के प्रदर्शन को और अधिक बढ़ाने के लिए विभिन्न हाइपरपैरामीटर्स (जैसे पड़ोसियों की संख्या) और क्रॉस-वैलिडेशन तकनीकों के साथ प्रयोग करना आवश्यक है।
अतिरिक्त संसाधन
- Scikit-Learn दस्तावेज़ीकरण
- KNN एल्गोरिदम समझाया गया
- पायथन में गुम डेटा को संभालना
- फीचर स्केलिंग तकनीकें
सुखद मॉडलिंग! 🚀
अस्वीकरण: यह लेख एक वीडियो ट्यूटोरियल के ट्रांसक्रिप्शन पर आधारित है और Jupyter Notebook तथा Python स्क्रिप्ट्स के कोड उदाहरणों से परिपूरित है। अपने विशेष डेटासेट और आवश्यकताओं के अनुसार कोड को अनुकूलित और संशोधित करना सुनिश्चित करें।