সাইকিট_লার্ন মডেলগুলিতে ফিট এবং ফিট_ ট্রান্সফর্মের মধ্যে পার্থক্য?


110

আমি ডেটা বিজ্ঞান নবাগত এবং আমি পার্থক্য বুঝতে পারছি না fitএবং fit_transformপদ্ধতি scikit-শিখতে। কেউ কি কেবল ব্যাখ্যা করতে পারে যে আমাদের কেন ডেটা ট্রান্সফর্ম করার প্রয়োজন হতে পারে?

প্রশিক্ষণের ডেটা এবং টেস্টের ডেটাতে রূপান্তরকরণের জন্য উপযুক্ত মডেলটির অর্থ কী? এর অর্থ কি উদাহরণস্বরূপ ট্রেনের শ্রেণিবদ্ধ ভেরিয়েবলকে সংখ্যায় রূপান্তর করা এবং ডেটা পরীক্ষার জন্য সেট করা নতুন বৈশিষ্ট্যটিকে রূপান্তর করা?



@ এসএসএস উপরের উত্তরগুলি এই প্রশ্নের লিঙ্ক দেয়।
কাউশাল 28

আমরা আবেদন fitউপর training datasetএবং ব্যবহার transformউপর পদ্ধতি both- প্রশিক্ষণ ডেটা সেটটি এবং পরীক্ষা ডেটা সেটটি
প্রকাশ কুমার

উত্তর:


117

করতে তথ্য কেন্দ্র (এটা শূন্য গড় এবং ইউনিট মান ত্রুটি আছে তা নিশ্চিত করুন), আপনি গড় বিয়োগ এবং তারপর স্ট্যানডার্ড ডেভিয়েশন দ্বারা ফলাফলের ভাগ।

x=xμσ

μσ

fit()μσtransform()

fit_transform()xxfit()transform()


1
আপনার উত্তরের জন্য অনেক ধন্যবাদ ust কেবলমাত্র একটি জিনিস model মডেলটিতে প্যারামিটারগুলি বোঝায় এটি প্রতিরোধের জন্য নিবিড় slালু এবং বাধা দেওয়া নয়? আপনি যখন ফিট করেন তবে একটি লিনিয়ার রিগ্রেশন বলি উদাহরণস্বরূপ কোন পরামিতিগুলি ফিট পদ্ধতিতে লাগানো হয়েছে? নরমালাইজেশন পরামিতি বা andাল এবং বিরতি মত মডেল পরামিতি?
কেগল

1
μσget_params()

2
আমার আগের মন্তব্যটি আসলে ভুল। লিনিয়ার রিগ্রেশনের ক্ষেত্রে, লাগানো প্যারামিটারগুলি coef_হ'ল (অর্থাত্ slালু এবং ইন্টারসেপ্ট), এটির দ্বারা ফিরে আসে না get_params()(যা পরিবর্তে, তাদের সম্পর্কিত মানগুলির সাথে মডেল কনস্ট্রাক্টর আর্গুমেন্টগুলির সেট দেয়)।
কে 3 --- আরএনসি

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

পরে আপনাকে কল t.fit_transform(train_data), t হয় লাগানো, তাই আপনি নিরাপদে ব্যবহার করতে পারেন t.transform(test_data)
কে 3 --- আরএনসি

10

নীচের ব্যাখ্যা উপর ভিত্তি করে তৈরি fit_transformএর Imputerবর্গ, কিন্তু ধারণা জন্য একই fit_transformঅন্যান্য scikit_learn শ্রেণীর পছন্দ MinMaxScaler


transformএকটি সংখ্যার সাথে অনুপস্থিত মানগুলি প্রতিস্থাপন করে। ডিফল্টরূপে এই সংখ্যাটি আপনার চয়ন করা কিছু ডেটার কলামের মাধ্যম। নিম্নলিখিত উদাহরণ বিবেচনা করুন:

imp = Imputer()
# calculating the means
imp.fit([[1, 3], [np.nan, 2], [8, 5.5]])

প্রথমটি কলামের জন্য ইম্পিউটারটি একটি গড় (1 + 8) / 2 = 4.5 ব্যবহার করতে শিখেছে এবং দ্বিতীয় স্তম্ভের জন্য যখন এটি একটি দ্বি-কলামের ডেটা প্রয়োগ করা হবে তখন তার অর্থ (2 + 3 + 5.5) / 3 = 3.5:

X = [[np.nan, 11], 
     [4,      np.nan], 
     [8,      2],
     [np.nan, 1]]
print(imp.transform(X))

আমরা পেতে

[[4.5, 11], 
 [4, 3.5],
 [8, 2],
 [4.5, 1]]

সুতরাং fitইম্পিউটার দ্বারা কিছু ডেটা থেকে কলামগুলির মাধ্যম গণনা করে এবং এর মাধ্যমে কিছু উপাত্তগুলিতে transformসেগুলি প্রয়োগ করা হয় (যা কেবলমাত্র অর্থগুলি হারিয়ে যাওয়ার মানগুলি প্রতিস্থাপন করে)। যদি এই উভয় ডেটা একই হয় (অর্থাত্ উপায়গুলি গণনার জন্য ডেটা এবং যার অর্থ ডেটা প্রয়োগ করা হয়) আপনি ব্যবহার করতে পারেন fit_transformযা মূলত একটি এর fitপরে থাকে transform

এখন আপনার প্রশ্নগুলি:

আমাদের কেন ডেটা ট্রান্সফর্ম করার দরকার হতে পারে?

"বিভিন্ন কারণে, অনেকগুলি বাস্তব বিশ্বের ডেটাসেটে অনুপস্থিত মান রয়েছে, প্রায়শই ফাঁকা, এনএএন বা অন্যান্য স্থানধারক হিসাবে এনকোড থাকে ed এই জাতীয় ডেটাসেটগুলি বিজ্ঞান-শিখার অনুমানের সাথে সঙ্গতিপূর্ণ নয় যা ধরে নেয় যে অ্যারের সমস্ত মান সংখ্যাসূচক" ( উত্স )

প্রশিক্ষণের ডেটা এবং টেস্টের ডেটাতে রূপান্তরকরণের জন্য উপযুক্ত মডেলটির অর্থ কী?

fitএকটি আরোপক সঙ্গে কিছুই করার আছে fitফিটিং মডেল ব্যবহার করা হয়। সুতরাং fitপ্রশিক্ষণ ডেটাতে ইম্পিউটারগুলি ব্যবহার করে প্রশিক্ষণের ডেটার প্রতিটি কলামের মাধ্যমগুলি গণনা করা হয়। transformপরীক্ষার ডেটা ব্যবহার করে তারপরে পরীক্ষার ডেটাগুলির অনুপস্থিত মানগুলি পরিবর্তিত করে যার অর্থ প্রশিক্ষণ ডেটা থেকে গণনা করা হয়েছিল।


3

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

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


3

এই পদ্ধতিগুলি স্কাইকিট-শিখায় ডেটাসেট রূপান্তরের জন্য ব্যবহৃত হয়:

আসুন একটি ডেটাসেটে স্কেলিং মানগুলির উদাহরণ নিই:

এখানে ফিট পদ্ধতিটি যখন প্রশিক্ষণ ডেটাসেট প্রয়োগ করা হয় তখন মডেল পরামিতিগুলি (উদাহরণস্বরূপ, গড় এবং মানক বিচ্যুতি) শেখে। তারপরে ট্রান্সফর্মড (স্কেলড) ট্রেনিং ডেটাসেট পেতে আমাদের প্রশিক্ষণ ডেটাसेटে ট্রান্সফর্ম পদ্ধতিটি প্রয়োগ করতে হবে। আমরা প্রশিক্ষণ ডেটাসেটে ফিট_টান্সফর্ম প্রয়োগ করে এক ধাপে এই দুটি পদক্ষেপই সম্পাদন করতে পারি

তাহলে আমাদের কেন দুটি পৃথক পদ্ধতি দরকার - ফিট এবং রূপান্তর ?

অনুশীলনে আমাদের একটি পৃথক প্রশিক্ষণ এবং টেস্টিং ডেটাসেট থাকা দরকার এবং এটিই আলাদা ফিট এবং ট্রান্সফর্ম পদ্ধতিতে সহায়তা করে। আমরা প্রশিক্ষণ ডেটাসেটের উপর ফিট রাখি এবং ট্রান্সফর্ম পদ্ধতি দুটি - প্রশিক্ষণ ডেটাসেট এবং পরীক্ষার ডেটাসেট ব্যবহার করি ase সুতরাং প্রশিক্ষণের পাশাপাশি পরীক্ষার ডেটাসেটটি তারপরে ট্র্যাডফর্ম করা হয় (স্কেলড) মডেল পরামিতিগুলি যা ফিটনেস পদ্ধতিতে প্রশিক্ষণ ডেটাসেট প্রয়োগ করতে শিখেছিল using

উদাহরণ কোড:

scaler = preprocessing.StandardScaler().fit(X_train)
scaler.transform(X_train) 
scaler.transform(X_test) 

2

এটি কোনও প্রযুক্তিগত উত্তর নয় তবে আশা করি, এটি আমাদের অন্তর্দৃষ্টিটি তৈরি করতে সহায়ক:

প্রথমত, সমস্ত অনুমানকারীকে কিছু প্রশিক্ষণের ডেটা সম্পর্কে প্রশিক্ষিত (বা "ফিট") করা হয়। সেই অংশটি মোটামুটি সোজা।

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

আপনি যদি পাইপলাইন ব্যবহার না করে থাকেন তবে আমি এখনও এইভাবে এই যন্ত্রগুলি শেখার সরঞ্জামগুলি সম্পর্কে ভাবতে সহায়তা করি বলে মনে করি কারণ এমনকি সাধারণ শ্রেণিবদ্ধকারী এখনও একটি শ্রেণিবদ্ধকরণ ফাংশন সম্পাদন করে। এটি ইনপুট হিসাবে কিছু ডেটা নেয় এবং একটি আউটপুট উত্পাদন করে। এটিও পাইপলাইন; খুব সহজ একটি।

সংক্ষেপে বলা যায়, হইয়া প্রশিক্ষণ সম্পাদন করে, রুপান্তর , পরিবর্তন অর্ডার পাইপলাইন পরবর্তী ধাপে এটি পাস করার জন্য পাইপলাইন ডেটা এবং fit_transform উভয় ফিটিং এবং এক সম্ভবত অপ্টিমাইজ পদক্ষেপ ট্রান্সফর্মিং আছে।


"" আমরা প্রশিক্ষণ ডেটাসেটের উপর উপযুক্ত প্রয়োগ করি এবং উভয়টির উপর ট্রান্সফর্ম পদ্ধতিটি ব্যবহার করি - প্রশিক্ষণ ডেটাসেট এবং পরীক্ষার ডেটাসেট "" :) চমৎকার
প্রকাশ কুমার

2
আমি মনে করি আপনি নীচে মন্তব্য করতে চেয়েছিলেন। আমি এটিকে প্রসাদ নাগেশকরের কাছে পাঠিয়ে দেব। (আচ্ছা ... আমার সুনাম থাকলে আমার হত))
এরিক ম্যাকল্যাচলান

1

V1V2V1V2

অন্যান্য প্রশ্নের সাথে আপনি প্রথমে প্রশিক্ষণ সংস্থায় মডেলটি তৈরি করেন যা হ'ল (মডেলটি প্রশিক্ষণের সেট থেকে আপনার তথ্যগুলির নিদর্শনগুলি বা আচরণ শিখবে) এবং আপনি যখন পরীক্ষার সেটটিতে একই মডেলটি চালান তখন এটি অনুরূপ নিদর্শন বা আচরণগুলি সনাক্ত করার চেষ্টা করে এটি শনাক্ত করার পরে এটি তার সিদ্ধান্তে নেমে আসে এবং ততক্ষণে প্রশিক্ষণের ডেটা ফলাফল দেয়


0

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

ফিট এর প্রভাব ()

রূপান্তর ফাংশন প্রকৃত ডেটাতে পরামিতিগুলির মান প্রয়োগ করে এবং স্বাভাবিক মান দেয়।

রূপান্তর প্রভাব ()

ফিট_ট্রান্সফর্ম () ফাংশন উভয় একই ধাপে সঞ্চালিত হয়।

ফিট_ট্রান্সফর্মের প্রভাব ()

মনে রাখবেন যে আমরা 2 টি পদক্ষেপে বা একক পদক্ষেপে সম্পাদন করি কিনা একই মান পাওয়া যায়।


0

"মাপসই" গড় এবং এসটিডি জন্য ব্যবহার করা হবে নির্ণয় পরে স্কেলিং। (একটি গণনা জাস্ট), আপনাকে কিছুই দেওয়া হয় না।

"ট্রান্সফর্ম" ডেটা অটস্কলে করতে পূর্বে গণিত গড় এবং স্টাডি ব্যবহার করে (সমস্ত মান থেকে গড় বিয়োগ করে এবং পরে এটি স্টাডিকে বিভক্ত করে)।

"ফিট_ ট্রান্সফর্ম" একই সাথে উভয়ই করে। সুতরাং আপনি এটি 2 এর পরিবর্তে 1 লাইন কোড দিয়ে করতে পারেন।

এখন আসুন বাস্তবে এটি দেখুন:

জন্য এক্স ট্রেনিং সেট , আমরা do "fit_transform" কারণ আমরা গড় এবং এসটিডি গনা, এবং তারপর এটি ব্যবহার ডেটা autoscale করার প্রয়োজন। এক্স টেস্ট সেটটির জন্য , আমাদের ইতিমধ্যে গড় এবং স্ট্যান্ড রয়েছে, সুতরাং আমরা কেবল "রূপান্তর" অংশটি করি।

এটা খুব সহজ। তুমি দারুণ করছো. তোমার ভাল কাজটি চালিয়ে দাও আমার বন্ধু :-)

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