স্কলারনে 'ট্রান্সফর্ম' এবং 'ফিট_ ট্রান্সফর্ম' এর মধ্যে পার্থক্য কী


115

স্কলারন-পাইথন টুলবক্সে দুটি ফাংশন transformএবং fit_transformপ্রায় রয়েছে sklearn.decomposition.RandomizedPCA। দুটি ফাংশনের বর্ণনা নিম্নরূপ

এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন

তবে তাদের মধ্যে পার্থক্য কী?


5
est.fit_transform(X)সর্বদা সমান est.fit(X).transform(X), তবে সাধারণত দ্রুত হয়।
ফ্রেড ফু

উত্তর:


22

এখানে পার্থক্যটি আপনি কেবল পিসিএ ট্রান্সফর্ম ব্যবহার করতে পারবেন যদি আপনি ইতিমধ্যে ম্যাট্রিক্সে পিসিএ গণনা করেছেন

   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আপনার পিসিএতে ট্রান্সফর্মেশন রুল শেখাতে হবে

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]: 

বিশেষত পিসিএ ম্যাট্রিক্স এক্স এর পিসিএ পচনের সাথে প্রাপ্ত ভিত্তির পরিবর্তনটি ম্যাট্রিক্স জেডে প্রয়োগ করে


আমি আমার প্রশ্ন পরিবর্তন করেছি। দুটি ফাংশন একই ধরণের মান প্রদান করে।
tqjustc

2
আপনি কি বলতে চান যে fit_transformদুটি ফাংশন fitএবং এর সংমিশ্রণ transform?
tqjustc

6
যদি আপনি একই ম্যাট্রিক্সে ফিট এবং ট্রান্সফর্ম ব্যবহার করেন তবে হ্যাঁ। আপনি যদি ম্যাট্রিক্স x ফিট করে এবং তারপরে ম্যাট্রিক্স জেড রূপান্তর করেন
ডোনবিও

লাইন ইন [14] "ftransfor" বলেছেন, এটি কী?
রাজদীপ বিশ্বাস

92

ইন scikit-শিখতে মূল্নির্ধারক API ,

fit() : প্রশিক্ষণ ডেটা থেকে শেখার মডেল পরামিতি তৈরির জন্য ব্যবহৃত হয়

transform(): fit()পদ্ধতি থেকে উত্পন্ন পরামিতি , রূপান্তরিত ডেটা সেট তৈরি করতে মডেলের উপর প্রয়োগ applied

fit_transform(): একই ডেটা সেটটিতে fit()এবং transform()এপিআইয়ের সংমিশ্রণ

এখানে চিত্র বর্ণনা লিখুন

এই বইটি থেকে অধ্যায় -4 চেকআউট করুন এবং আরও স্পষ্টতার জন্য স্ট্যাকেক্সচেঞ্জ থেকে উত্তর দিন


54

এই পদ্ধতিগুলি কোনও প্রদত্ত ডেটার কেন্দ্র / বৈশিষ্ট্য স্কেল করতে ব্যবহৃত হয়। এটি মূলত একটি নির্দিষ্ট পরিসরের মধ্যে ডেটা স্বাভাবিক করতে সহায়তা করে

এর জন্য, আমরা জেড-স্কোর পদ্ধতি ব্যবহার করি।

জেড-স্কোর

আমরা ডেটা প্রশিক্ষণের সেট এ এটি করি।

1. ফিট (): পদ্ধতিটি পরামিতিগুলি গণনা করে σ এবং σ এবং সেগুলি অভ্যন্তরীণ বস্তু হিসাবে সংরক্ষণ করে।

২. ট্রান্সফর্ম (): এই গণনা করা প্যারামিটারগুলি ব্যবহার করার পদ্ধতিটি কোনও নির্দিষ্ট ডেটাসেটে রূপান্তরটি প্রয়োগ করে।

৩. ফিট_ট্রান্সফর্ম (): ডেটাসেটের রূপান্তরের জন্য ফিট () এবং ট্রান্সফর্ম () পদ্ধতিতে যোগ দেয়।

বৈশিষ্ট্য স্কেলিং / মানককরণের জন্য কোড স্নিপেট (ট্রেন_স্টেস্ট_স্প্লিটের পরে)।

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
sc.fit_transform(X_train)
sc.transform(X_test)

আমরা আমাদের পরীক্ষার সেটটিতে একই (প্রশিক্ষণ একই দুটি পরামিতি μ এবং σ (মান)) পরামিতি রূপান্তর প্রয়োগ করি।


1
এই ব্যাখ্যার জন্য আপনাকে ধন্যবাদ। 'ফিট' মানগুলি যদি বহন করে এবং এটি সাহায্য করে তবে আমি কৌতূহলী ছিলাম!
আদিব

2
কোড উদাহরণের জন্য +1। আপনি ট্রেনের সেটগুলিতে ফিট_ ট্রান্সফর্ম ব্যবহার করতে পারেন এবং তারপরে পরীক্ষার সেটটি রূপান্তর করতে পারেন, বা ট্রেনে আপনার আলাদা ফিটের দরকার আছে কিনা তা নিয়ে আমার বিভ্রান্তি ছিল
বিবেক

2
ফিট_ট্রান্সফর্ম (..) এক্স_েস্টের জন্য ব্যবহার করা যাবে না কারণ পরীক্ষার পরীক্ষায় X_train ডেটা সেট থেকে গণনা করা μ এবং σ ব্যবহার করা উচিত। ফিট_ট্রান্সফর্ম (..) কেবলমাত্র ডেটা সেট প্রশিক্ষণে ব্যবহার করা যেতে পারে। আমার অনুধাবন সংশোধন করুন।
দিন

1
হ্যাঁ আপনি সঠিক. এক্স_ট্রেইন থেকে শিখানো প্যারামগুলি এক্স_টেস্টের ডেটা মানক করার জন্য শুধুমাত্র পরীক্ষার জন্য কেবল রূপান্তর (..) ব্যবহার করা যেতে পারে
শৌর্য ইউপাল

7

পদ্ধতির মধ্যে জেনেরিক পার্থক্য:

  • ফিট (কাঁচা_ ডকুমেন্টস [, y]): কাঁচা নথিগুলিতে সমস্ত টোকেনের একটি শব্দভান্ডার অভিধান শিখুন।
  • ফিট_ ট্রান্সফর্ম (কাঁচা_ ডকুমেন্টস [, y]): ভোকাবুলারি অভিধান শিখুন এবং টার্ম-ডকুমেন্টের ম্যাট্রিক্স ফিরুন। এটি রূপান্তর অনুসারে ফিট করার সমতুল্য, তবে আরও দক্ষতার সাথে প্রয়োগ করা হয়েছে।
  • রূপান্তর (কাঁচা_ ডকুমেন্টস): দস্তাবেজকে ডকুমেন্ট-টার্ম ম্যাট্রিক্সে রূপান্তর করুন। ফিটের সাথে লাগানো ভোকাবুলারি বা কনস্ট্রাক্টরকে সরবরাহ করা একটি ব্যবহার করে কাঁচা টেক্সট ডকুমেন্টগুলির বাইরে টোকেন গণনাগুলি বের করুন।

ফিট_ ট্রান্সফর্ম এবং রূপান্তর উভয়ই একই, ডকুমেন্ট-টার্ম ম্যাট্রিক্স প্রদান করে।

উৎস


4

এখানে .fit()& এর মধ্যে মূল পার্থক্য .fit_transform():

.fit ():

মডেল ফিট করতে এবং চালানোর জন্য মডেল তৈরি করতে দুটি অবজেক্ট / প্যারামিটার (x, y) থাকার তত্ত্বাবধানে শেখার ক্ষেত্রে ব্যবহার করা হয়, যেখানে আমরা জানি যে আমরা কী ভবিষ্যদ্বাণী করতে যাচ্ছি

.fit_transform ():

একটি অবজেক্ট / প্যারামিটার (এক্স) থাকা আনসপারভাইজড লার্নিংয়ে ব্যবহার করা হয়, যেখানে আমরা জানি না, আমরা কী ভবিষ্যদ্বাণী করতে চলেছি।


এটি খুব সুনির্দিষ্ট নয়; ফিট () অব্যবহৃত পড়াশোনায়ও ব্যবহার করা যেতে পারে। তবে আপনি যদি কেবল ব্রেভিটির জন্যই ওভারসিম্প্লিফাই করার চেষ্টা করছেন, তবে কোনও শিক্ষানবিশকে বোঝানোর জন্য এটি ভাল উপায়।
রাজদীপ বিশ্বাস

1

সাধারণ ব্যক্তির ভাষায়, ফিট_ ট্রান্সফর্মের অর্থ কিছু গণনা করা এবং তারপরে রূপান্তর করা (কিছু ডেটা থেকে কলামগুলির মাধ্যম গণনা করা এবং তারপরে নিখোঁজ মানগুলি প্রতিস্থাপন করা বলুন)। প্রশিক্ষণ সেট করার জন্য, আপনার উভয়ই গণনা করতে হবে এবং রূপান্তর করতে হবে।

তবে পরীক্ষার সেটটির জন্য, মেশিন লার্নিং প্রশিক্ষণ সেট চলাকালীন যা শিখেছে তার উপর ভিত্তি করে পূর্বাভাস প্রয়োগ করে এবং সুতরাং এটি গণনা করার দরকার নেই, এটি কেবল রূপান্তর সম্পাদন করে।


0

কেন এবং কখন প্রতিটি ব্যবহার:

সমস্ত প্রতিক্রিয়াগুলি বেশ ভাল, তবে আমি কেন এবং যখন প্রতিটি পদ্ধতি ব্যবহার করি তখন জোর দিয়ে থাকব।

ফিট (), রূপান্তর (), ফিট_ ট্রান্সফর্ম ()

সাধারণত আমাদের (এক্স, ওয়াই) ডেটাসেট হিসাবে তত্ত্বাবধানে শেখার সমস্যা হয় এবং আমরা এটিকে প্রশিক্ষণ ডেটা এবং পরীক্ষার ডেটাতে বিভক্ত করি:

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_train_transformed = model.fit_transform(X_train)সমান : তবে প্রথমটিটি X_train_transformed = model.fit(X_train).transform(X_train)দ্রুত।

নোট করুন যে আমি "মডেল" বলি তা সাধারণত স্কেলার, টিফিডফ ট্রান্সফর্মার, অন্য ধরণের ভেক্টরাইজার, একটি টোকেনাইজার হবে ...

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.