কীভাবে একটি অটোএমএল পাইপলাইন অপ্টিমাইজেশন স্যান্ডবক্স তৈরি করবেন

উত্স নোড: 1866391

কীভাবে একটি অটোএমএল পাইপলাইন অপ্টিমাইজেশন স্যান্ডবক্স তৈরি করবেন

এই নিবন্ধে, আমরা Streamlit এবং TPOT ব্যবহার করে একটি স্বয়ংক্রিয় মেশিন লার্নিং পাইপলাইন অপ্টিমাইজেশান স্যান্ডবক্স ওয়েব অ্যাপ বাস্তবায়ন করব।


আপনি সম্ভবত স্বয়ংক্রিয় মেশিন লার্নিং (AutoML) সম্পর্কে জানেন। আপনার কাছে ওপেন সোর্স অটোএমএল টুলের কঠিন সম্ভাবনা রয়েছে TPOT, ওরফে তোমার তথ্য বিজ্ঞান সহকারী. আপনিও হয়তো দেখেছেন আমার সাম্প্রতিক নিবন্ধ মেশিন লার্নিং পাইপলাইন অপ্টিমাইজ করতে TPOT ব্যবহার করার বিষয়ে (আপনার সম্ভবত নেই, তাই এখানে আপনার সুযোগ রয়েছে এটা দেখতে যান… আমি অপেক্ষা করব).

যে কোনও ক্ষেত্রে, অটোএমএল এবং মেশিন লার্নিং অপ্টিমাইজেশানের নবগুলি অন্বেষণ করা আরও বোধগম্য হতে পারে যখন সেই নবগুলি দৃশ্যমান এবং সহজেই সামঞ্জস্যযোগ্য। এই নিবন্ধে, আমরা TPOT উদাহরণের একটি সংস্করণ বাস্তবায়ন করব যা আমরা দেখেছি আমার পূর্ববর্তী নিবন্ধ একটি Streamlit অ্যাপ হিসাবে।

যদি আপনি সম্পর্কে জানেন না স্ট্রিমলিট, এটি হল 30,000 ফুট ওভারভিউ:
 

স্ট্রিমলিট ডেটা স্ক্রিপ্টগুলিকে কয়েক মিনিটের মধ্যে শেয়ারযোগ্য ওয়েব অ্যাপে পরিণত করে।
সব পাইথনে। সব বিনামূল্যে জন্য. কোন ফ্রন্ট-এন্ড অভিজ্ঞতা প্রয়োজন.

সংক্ষিপ্ত বিবরণ

 
আমরা এই নিবন্ধে যা ব্যবহার করি তার বাইরে স্ট্রিমলিট সম্পর্কে আমি আর বিস্তারিত জানাব না, তবে আপনি এই দুর্দান্ত ভূমিকাটি খুঁজে পেতে পারেন এখানে, সেইসাথে স্ট্রিমলিট চিট শীট, যা মূলত এটি কীভাবে কাজ করে তা বোঝার পরে আপনার যা জানা দরকার তা কভার করে, এখানে.

Streamlit প্রকল্পগুলি বাস্তবায়নের বিষয়ে একটি দ্রুত ভূমিকা পাওয়ার পাশাপাশি, আপনি একটি স্যান্ডবক্স ওয়েব অ্যাপ পাবেন যা TPOT-এর সাথে একজোড়া সুপরিচিত ডেটাসেট ব্যবহার করে পাইপলাইন অপ্টিমাইজেশন পরীক্ষার অনুমতি দেবে। কিছু পরিবর্তনের সাথে, আপনি অন্যান্য ডেটাসেটের সাথে স্যান্ডবক্সটি চালু করতে সক্ষম হবেন এবং আরও নব অন্তর্ভুক্ত করতে কার্যকারিতা প্রসারিত করতে পারবেন।

ব্যক্তিত্ব
ফলস্বরূপ "অটোএমএল পাইপলাইন অপ্টিমাইজেশান স্যান্ডবক্স" ওয়েব অ্যাপটি আমরা স্ট্রিমলিট এবং TPOT দিয়ে তৈরি করি

 

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

এই অপ্টিমাইজেশান প্রক্রিয়াটি কী অন্তর্ভুক্ত করে সে সম্পর্কে কিছু লক্ষণীয় বিষয়, উপরের বাইরে, অন্তর্ভুক্ত:

  • মডেল মূল্যায়নের জন্য ক্রস-বৈধকরণ
  • মডেলিং-এ একাধিকবার পুনরাবৃত্তি করা (TPOT-এর জন্য অভ্যন্তরীণভাবে জেনেটিক অ্যালগরিদম ব্যবহারের কারণে) — সম্ভবত এইরকম একটি ছোট ডেটাসেটের ক্ষেত্রে উপযোগী নয়, কিন্তু আমরা অগ্রগতির সাথে সাথে হতে পারে
  • এই একাধিক পুনরাবৃত্তির ফলাফল পাইপলাইন তুলনা - তারা সব একই?
  • আপনি কি জানেন যে TPOT এখন ভবিষ্যদ্বাণীর জন্য নিউরাল নেটওয়ার্ক তৈরি করতে হুডের নীচে পাইটর্চ ব্যবহার করে?

এই শেষ বিন্দুটি আমরা আজ যা করছি তার উপর নির্ভর করবে না, তবে ভবিষ্যতের অ্যাডভেঞ্চারের জন্য এটি মনে রাখবেন।

আসুন এই সাধারণ স্ট্রিমলিট অ্যাপটি তৈরি করতে প্রয়োজনীয় কোডটি দেখুন।

কোড

 
প্রথমত, আমদানি:

স্ট্রীমলিট ইম্পোর্ট করুন st import timeit pandas import as pd import matplotlib.pyplot plt হিসাবে tpot থেকে আমদানি করুন TPOTCclassifier থেকে sklearn.model_selection আমদানি StratifiedKFold থেকে sklearn.model_selection import train_test_split থেকে sklearn.datas_md থেকে import_test_split আমদানি করুন


সবকিছু বেশ সোজা হওয়া উচিত। চূড়ান্ত আমদানি, stqdm, ইহা একটি tqdm-স্টাইল প্রগতি বার বিশেষভাবে স্ট্রিমলিটের সাথে কাজ করার জন্য লেখা।

এর পরে, এখানে ডেটা লোডার ফাংশন রয়েছে:

@st.cache def load_data(dataset, train_size, test_size, random_state): """লোড ডেটা""" ds = '' যদি ডেটাসেট == 'ডিজিট': ds = load_digits() df = load_digits(as_frame=True) যদি ডেটাসেট == 'আইরিস': ds = load_iris() df = load_iris(as_frame=True) X_train, X_test, y_train, y_test = train_test_split(ds.data, ds.target, train_size=train_size, test_size=random_size, test_size=random X_train, X_test, y_train, y_test, df['frame'] ফেরত দিন


আমরা Scikit-learn থেকে load_iris() এবং load_digits() ফাংশন ব্যবহার করি (যার সাথে TPOT ঘনিষ্ঠভাবে একত্রিত হয়) সংশ্লিষ্ট ডেটাসেটগুলি টানতে। মনে রাখবেন যে সেগুলি এখানে ট্রেন এবং পরীক্ষা সেটে বিভক্ত, এবং ট্রেন/পরীক্ষা বৈশিষ্ট্য/লেবেলগুলি আলাদাভাবে ফেরত দেওয়া হয়, ব্যবহারকারীর কাছে উপস্থাপনার জন্য ব্যবহার করার জন্য একটি সম্পূর্ণ ডেটাসেট ডেটাফ্রেম সহ, কারণ এটি দেখতে অনেক সুন্দর, বিশেষত যখন স্ট্রিমলিট দ্বারা উপস্থাপিত হয় (স্ট্রিমলিট তার ব্যবহার করে বিস্তৃত বস্তুর ব্যাখ্যা এবং সঠিকভাবে প্রদর্শন করতে সক্ষম write() পদ্ধতি)। এটি সম্পন্ন করার অন্যান্য উপায় আছে, কিন্তু এটি সহজ ছিল এবং এই ধরনের ছোট ডেটাসেটের জন্য একটি সমস্যা ছিল না। @st.cache ডেকোরেটরটি নোট করুন যা প্রতিবার ডেটা পুনরায় লোড করার পরিবর্তে অ্যাপটির ভবিষ্যত রানের জন্য ফাংশনের ফলাফল ক্যাশ করে।

এখন আমরা কিছু অ্যাপ্লিকেশন ওয়াইড স্ট্রিমলিট কনফিগারেশন সেট করি, একটি সাইডবার সেটআপ করি, কিছু ভেরিয়েবল বরাদ্দ করি এবং উপরের ফাংশনটি ব্যবহার করে ডেটা লোড করি:

# শিরোনাম এবং বিবরণ সেট করুন st.title("AutoML পাইপলাইন অপ্টিমাইজেশান স্যান্ডবক্স") st.write("সম্পূর্ণ-স্বয়ংক্রিয় পূর্বাভাস পাইপলাইন নির্মাণের জন্য ওপেন সোর্স স্বয়ংক্রিয় মেশিন লার্নিং টুল TPOT ব্যবহার করে পরীক্ষা") # সাইডবার সাইডবার = st.sidebar ডেটাসেট তৈরি করুন = sidebar.selectbox('ডেটাসেট', ['iris', 'digits']) train_display = sidebar.checkbox('ডিসপ্লে ট্রেনিং ডেটা', value=True) search_iters = sidebar.slider('অনুসন্ধান পুনরাবৃত্তির সংখ্যা', min_value=1 , max_value=5) প্রজন্ম = sidebar.slider('প্রজন্মের সংখ্যা', min_value=1, max_value=10) জনসংখ্যা_size = sidebar.select_slider('জনসংখ্যার আকার', বিকল্প=[10,20,30,40,50,60,70,80,90,100 =42]) random_state = 0.75 train_size = 1.0 test_size = 0 - train_size checkpoint_folder = './tpot_checkpoints' output_folder = './tpot_output' verbosity = 1 বার n_jobs = [_pis =] স্কোর = XNUMX বার [] # লোড (এবং প্রদর্শন?) ডেটা X_train, X_test, y_train, y_test, df = load_data(dataset) if train_display: st.write(df)


উপরের কোডের তুলনা করা, যেখানে প্রাসঙ্গিক, হয় পূর্ববর্তী নিবন্ধের সাথে যেখানে আমরা এটিকে একটি স্বতন্ত্র স্ক্রিপ্ট হিসাবে প্রয়োগ করেছি বা স্ট্রিমলিট চিট শীটের সাথে, এই সবই আবার, বেশ সহজবোধ্য হওয়া উচিত।

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

এর পরে, স্কোরিং পদ্ধতি সংজ্ঞায়িত করা যাক; মডেল মূল্যায়ন পদ্ধতি; এবং প্রকৃত অনুসন্ধান পদ্ধতি। এর পরে, অপ্টিমাইজেশান লুপ দেখানো হয়, যা ব্যবহারকারীর সুবিধার জন্য কিছু পুনরাবৃত্তি-নির্দিষ্ট আউটপুট প্রদর্শন অন্তর্ভুক্ত করে।

# স্কোরিং মেট্রিক এবং মডেল মূল্যায়ন পদ্ধতি স্কোরিং সংজ্ঞায়িত করুন = 'নির্ভুলতা' cv = ('স্তরকৃত কে-ফোল্ড ক্রস-ভ্যালিডেশন', স্ট্র্যাটিফাইড কেফোল্ড(n_splits=10, shuffle=True, random_state=random_state)) # অনুসন্ধান tpotif = TPOcierlas=TPOcvlass সংজ্ঞায়িত করুন cv[1], স্কোরিং=স্কোরিং, verbosity=verbosity, random_state=random_state, n_jobs=n_jobs, প্রজন্ম=প্রজন্ম, জনসংখ্যা_size=জনসংখ্যা_আকার, পর্যায়ক্রমিক_চেকপয়েন্ট_ফোল্ডার=চেকপয়েন্ট_ফোল্ডার) # পাইপলাইন অপ্টিমাইজেশান' প্রগ্রেসের সাথে পিপলাইন অপ্টিমাইজেশান ): i for stqdm(range(search_iters)): start_time = timeit.default_timer() tpot.fit(X_train, y_train) elapsed = timeit.default_timer() - start_time স্কোর = tpot.score(X_test, y_test) best_pipes.app (tpot.fitted_pipeline_) st.write(f'n__পাইপলাইন অপ্টিমাইজেশন পুনরাবৃত্তি: {i}__n') st.write(f'* অতিবাহিত সময়: {eapsed} সেকেন্ড') st.write(f'* পরীক্ষার ডেটাতে পাইপলাইন স্কোর: {score}') tpot.export(f'{output_folder}/tpot_{dataset}_pipeline_{i}.py')


এই সময়ে, আপনি তুলনা করা উচিত write(), spinner(), success(), এবং স্ট্রিমলিট চিট শীটে অন্যান্য প্রদর্শন কার্যকারিতা।

একবার চালানো হলে, উপরের অপ্টিমাইজেশান লুপটি নিম্নলিখিতগুলির মতো কিছু আউটপুট করবে:

ভাবমূর্তি

অবশেষে, আমাদের ফলাফল মূল্যায়ন করতে হবে:

# পাইপলাইনগুলি একই ফলাফল কিনা তা পরীক্ষা করুন = সেরা_পাইপে পাইপের জন্য সত্য প্রথম_পাইপ = str(best_pipes[0]): if first_pipe != str(pipe): result = False if (result): st.write("n__All best pipelines were একই:__n") st.write(best_pipes[0]) else: st.write('nBest pipelines:n') st.write(*best_pipes, sep='nn') st.write('__ ​​ফাইলে সংরক্ষিত: __n') st.write(f'```{output_folder}/tpot_{dataset}_pipeline_{i}.py```') st.success("পাইপলাইন অপ্টিমাইজেশান সম্পূর্ণ!")


ভাবমূর্তি

…এবং সেরা পাইপলাইনের কোড আউটপুট করুন (ফাইলে সংরক্ষিত):

# বেস্ট_ফাইল হিসাবে খোলা (f'{output_folder}/tpot_{dataset}_pipeline_{i}.py', 'r') সহ সেরা পাইপ ফাইলের আউটপুট বিষয়বস্তু: code = best_file.read() st.write(f'`` `{code}```')


ভাবমূর্তি

এখানে Streamlit অ্যাপের জন্য সম্পূর্ণ কোড রয়েছে (মনে রাখবেন যে এই একক, ছোট পাইথন স্ক্রিপ্টের বাইরে কিছুই করার প্রয়োজন নেই সবকিছু সম্পন্ন করার জন্য):

এবং এটিই কিভাবে দ্রুত একটি অটোএমএল পাইপলাইন অপ্টিমাইজেশান স্যান্ডবক্স স্ট্রিমলিট এবং TPOT দ্বারা চালিত করা যায়, শুধুমাত্র পাইথন কোড ব্যবহার করে। এটি করতে সফল হওয়ার জন্য আমাদের প্রয়োজনীয় ওয়েব প্রোগ্রামিং দক্ষতার অভাব লক্ষ্য করুন।

খুব সুন্দর. বিরাট সাফল্য!

ভাবমূর্তি

 
সংশ্লিষ্ট:



শীর্ষ গল্পগুলি গত 30 দিন
সবচেয়ে জনপ্রিয়
  1. পাইথন ব্যবহার করে মাইক্রোসফট এক্সেল এবং ওয়ার্ড স্বয়ংক্রিয় করুন
  2. আপনি কি পাইথন দিয়ে এক্সেল ফাইল পড়েন? 1000x দ্রুততর পথ আছে
  3. ডেটা বিজ্ঞানী এবং এমএল ইঞ্জিনিয়ারদের মধ্যে পার্থক্য
  4. সর্বাধিক প্রচলিত ডেটা সায়েন্স ইন্টারভিউ প্রশ্ন এবং উত্তর
  5. জ্যাঙ্গোর 9 টি সবচেয়ে সাধারণ অ্যাপ্লিকেশন
সর্বাধিক ভাগ করা
  1. ডেটা বিজ্ঞানী এবং এমএল ইঞ্জিনিয়ারদের মধ্যে পার্থক্য
  2. আপনার পান্ডা ডেটাফ্রেম কিভাবে জিজ্ঞাসা করবেন
  3. প্রিফেক্ট: কিভাবে পাইথন দিয়ে আপনার প্রথম ইটিএল পাইপলাইন লিখবেন এবং তফসিল করবেন
  4. হাইপোথিসিস টেস্টিং ব্যাখ্যা করা হয়েছে
  5. ডেটা সায়েন্স চিট শীট 2.0

সূত্র: https://www.kdnuggets.com/2021/09/automl-pipeline-optimization-sandbox.html

সময় স্ট্যাম্প:

থেকে আরো কেডনুগেটস

KDnuggets নিউজ, 25 জানুয়ারী: পাইথন প্রোগ্রামিং সহকারী হিসাবে ChatGPT • ফুটবল ম্যাচ বিজয়ীদের পূর্বাভাস দিতে পাইথন এবং মেশিন লার্নিং

উত্স নোড: 1928136
সময় স্ট্যাম্প: জানুয়ারী 25, 2023