Sklearn-python टूलबॉक्स में, दो कार्य transform
और fit_transform
हैं sklearn.decomposition.RandomizedPCA
। दो कार्यों का वर्णन इस प्रकार है
लेकिन उनमें क्या अंतर है?
Sklearn-python टूलबॉक्स में, दो कार्य transform
और fit_transform
हैं sklearn.decomposition.RandomizedPCA
। दो कार्यों का वर्णन इस प्रकार है
लेकिन उनमें क्या अंतर है?
जवाबों:
यहां अंतर आप pca.transform का उपयोग कर सकते हैं केवल यदि आपने पहले से ही मैट्रिक्स पर पीसीए की गणना की है
In [12]: pc2 = RandomizedPCA(n_components=3)
In [13]: pc2.transform(X) # can't transform because it does not know how to do it.
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-13-e3b6b8ea2aff> in <module>()
----> 1 pc2.transform(X)
/usr/local/lib/python3.4/dist-packages/sklearn/decomposition/pca.py in transform(self, X, y)
714 # XXX remove scipy.sparse support here in 0.16
715 X = atleast2d_or_csr(X)
--> 716 if self.mean_ is not None:
717 X = X - self.mean_
718
AttributeError: 'RandomizedPCA' object has no attribute 'mean_'
In [14]: pc2.ftransform(X)
pc2.fit pc2.fit_transform
In [14]: pc2.fit_transform(X)
Out[14]:
array([[-1.38340578, -0.2935787 ],
[-2.22189802, 0.25133484],
[-3.6053038 , -0.04224385],
[ 1.38340578, 0.2935787 ],
[ 2.22189802, -0.25133484],
[ 3.6053038 , 0.04224385]])
यदि आप उपयोग करना चाहते हैं तो आपको .transform
अपने pca में परिवर्तन नियम सिखाने की आवश्यकता है
In [20]: pca = RandomizedPCA(n_components=3)
In [21]: pca.fit(X)
Out[21]:
RandomizedPCA(copy=True, iterated_power=3, n_components=3, random_state=None,
whiten=False)
In [22]: pca.transform(z)
Out[22]:
array([[ 2.76681156, 0.58715739],
[ 1.92831932, 1.13207093],
[ 0.54491354, 0.83849224],
[ 5.53362311, 1.17431479],
[ 6.37211535, 0.62940125],
[ 7.75552113, 0.92297994]])
In [23]:
विशेष रूप से PCA ट्रांसफ़ॉर्मेशन में मैट्रिक्स Z के मैट्रिक्स X के PCA अपघटन के साथ प्राप्त आधार का परिवर्तन लागू होता है।
fit_transform
दो कार्यों का संयोजन fit
और transform
?
में scikit सीखने आकलनकर्ता एपीआई ,
fit()
: प्रशिक्षण डेटा से सीखने के मॉडल पैरामीटर उत्पन्न करने के लिए उपयोग किया जाता है
transform()
: fit()
विधि से उत्पन्न पैरामीटर , तब्दील डेटा सेट उत्पन्न करने के लिए मॉडल पर लागू होते हैं।
fit_transform()
: एक ही डेटा सेट पर fit()
और transform()
एपीआई का संयोजन
इस किताब से चैकआउट चैप्टर -4 और अधिक स्पष्टता के लिए स्टैकएक्सचेंज से उत्तर
इन विधियों का उपयोग किसी दिए गए डेटा के केंद्र / सुविधा के पैमाने के लिए किया जाता है। यह मूल रूप से किसी विशेष सीमा के भीतर डेटा को सामान्य करने में मदद करता है
इसके लिए, हम Z- स्कोर पद्धति का उपयोग करते हैं।
हम डेटा के प्रशिक्षण सेट पर ऐसा करते हैं।
1. फ़िट (): विधि मापदंडों μ और saves की गणना करती है और उन्हें आंतरिक वस्तुओं के रूप में सहेजती है।
2. ट्रांसफ़ॉर्म (): इन परिकलित मापदंडों का उपयोग करने वाला तरीका किसी विशेष डेटासेट में परिवर्तन लागू करता है।
3. Fit_transform (): डेटासेट के रूपांतरण के लिए फिट () और ट्रांसफ़ॉर्म () पद्धति से जुड़ता है।
फ़ीचर स्केलिंग / मानकीकरण के लिए कोड स्निपेट (train_test_split के बाद)।
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
sc.fit_transform(X_train)
sc.transform(X_test)
हम अपने परीक्षण सेट पर एक ही (दो समान प्रशिक्षण सेट μ और values (मान)) पैरामीटर परिवर्तन लागू करते हैं।
तरीकों के बीच सामान्य अंतर:
Fit_transform और ट्रांस्फ़ॉर्म दोनों समान, दस्तावेज़-टर्म मैट्रिक्स लौटाता है।
यहाँ मूल अंतर .fit()
और के बीच .fit_transform()
:
मॉडल को फिट करने और मॉडल को चलाने के लिए दो ऑब्जेक्ट / पैरामीटर (x, y) वाले सुपरवाइज्ड लर्निंग में उपयोग किया जाता है, जहां हम जानते हैं कि हम क्या भविष्यवाणी करने जा रहे हैं
एक वस्तु / पैरामीटर (x) वाले अनसुपरवाइज्ड लर्निंग में उपयोग किया जाता है, जहां हमें पता नहीं होता है कि हम क्या भविष्यवाणी करने जा रहे हैं।
आम आदमी की शर्तों में, fit_transform का मतलब कुछ गणना करना है और फिर परिवर्तन करना है (कुछ डेटा से कॉलम के साधनों की गणना करना और फिर लापता मानों को बदलना)। तो प्रशिक्षण सेट के लिए, आपको दोनों की गणना करने और परिवर्तन करने की आवश्यकता है।
लेकिन परीक्षण सेट के लिए, मशीन लर्निंग प्रशिक्षण सेट के दौरान जो सीखा गया था, उसके आधार पर भविष्यवाणी लागू होती है और इसलिए इसे गणना करने की आवश्यकता नहीं है, यह सिर्फ परिवर्तन करता है।
सभी प्रतिक्रियाएं काफी अच्छी हैं, लेकिन मैं WHY और WHEN में प्रत्येक विधि का उपयोग करने पर जोर दूंगा।
फिट (), रूपांतर (), fit_transform ()
आमतौर पर हमें डेटासेट के रूप में एक्स (y) के साथ एक पर्यवेक्षित शिक्षण समस्या होती है, और हम इसे प्रशिक्षण डेटा और परीक्षण डेटा में विभाजित करते हैं:
import numpy as np
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y)
X_train_vectorized = model.fit_transform(X_train)
X_test_vectorized = model.transform(X_test)
कल्पना करें कि हम एक टोकन फिटिंग कर रहे हैं, अगर हम X फिट करते हैं तो हम टोकन में डेटा का परीक्षण कर रहे हैं, लेकिन मैंने इस त्रुटि को कई बार देखा है!
सही केवल X_train के साथ फिट होने के लिए है , क्योंकि आप "अपने भविष्य के डेटा" को नहीं जानते हैं, इसलिए आप कुछ भी फिटिंग के लिए X_test डेटा का उपयोग नहीं कर सकते हैं!
फिर आप अपना परीक्षण डेटा बदल सकते हैं, लेकिन अलग-अलग, इसीलिए अलग-अलग तरीके हैं।
अंतिम टिप: X_train_transformed = model.fit_transform(X_train)
इसके बराबर है
X_train_transformed = model.fit(X_train).transform(X_train)
, लेकिन पहले वाला तेज है।
ध्यान दें कि मैं जिसे "मॉडल" कहता हूं, वह आमतौर पर एक स्केलर, एक टीएफडीएफ ट्रांसफार्मर, अन्य प्रकार के वेक्टराइज़र, एक टोकन प्रकार होगा ...
est.fit_transform(X)
हमेशा के बराबर हैest.fit(X).transform(X)
, लेकिन आमतौर पर तेजी से।