সংক্ষিপ্ত উত্তর
নমপি, পান্ডা বা অন্যান্য প্যাকেজ ব্যবহার না করে ওয়ান হট-এনকোডিং করার জন্য এখানে একটি ফাংশন is এটি পূর্ণসংখ্যা, বুলিয়ান বা স্ট্রিংগুলির (এবং সম্ভবত অন্যান্য ধরণেরও) একটি তালিকা নেয়।
import typing
def one_hot_encode(items: list) -> typing.List[list]:
results = []
# find the unique items (we want to unique items b/c duplicate items will have the same encoding)
unique_items = list(set(items))
# sort the unique items
sorted_items = sorted(unique_items)
# find how long the list of each item should be
max_index = len(unique_items)
for item in items:
# create a list of zeros the appropriate length
one_hot_encoded_result = [0 for i in range(0, max_index)]
# find the index of the item
one_hot_index = sorted_items.index(item)
# change the zero at the index from the previous line to a one
one_hot_encoded_result[one_hot_index] = 1
# add the result
results.append(one_hot_encoded_result)
return results
উদাহরণ:
one_hot_encode([2, 1, 1, 2, 5, 3])
# [[0, 1, 0, 0],
# [1, 0, 0, 0],
# [1, 0, 0, 0],
# [0, 1, 0, 0],
# [0, 0, 0, 1],
# [0, 0, 1, 0]]
one_hot_encode([True, False, True])
# [[0, 1], [1, 0], [0, 1]]
one_hot_encode(['a', 'b', 'c', 'a', 'e'])
# [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [1, 0, 0, 0], [0, 0, 0, 1]]
দীর্ঘ (এর) উত্তর
আমি জানি আমি ইতিমধ্যে এই প্রশ্নের উত্তর অনেক আছে, কিন্তু আমি দুটি জিনিস লক্ষ্য। প্রথমত, বেশিরভাগ উত্তরগুলিতে নম্পি এবং / অথবা পান্ডার মতো প্যাকেজ ব্যবহার করা হয়। এবং এটি একটি ভাল জিনিস। আপনি যদি প্রোডাকশন কোডটি লিখছেন তবে আপনার সম্ভবত নমুনা / পান্ডাস প্যাকেজগুলিতে প্রদত্ত মতো শক্তিশালী, দ্রুত অ্যালগরিদম ব্যবহার করা উচিত। তবে, শিক্ষার স্বার্থে, আমি মনে করি যে কারও উত্তর দেওয়া উচিত যা একটি স্বচ্ছ অ্যালগরিদম আছে এবং কেবল অন্য কারও অ্যালগরিদমের বাস্তবায়ন নয়। দ্বিতীয়ত, আমি লক্ষ করেছি যে উত্তরগুলির অনেকগুলি ওয়ান-হট এনকোডিংয়ের দৃ implementation় বাস্তবায়ন সরবরাহ করে না কারণ তারা নীচের একটি প্রয়োজনীয়তা পূরণ করে না। দরকারী, নির্ভুল এবং শক্তিশালী ও-হট এনকোডিং ফাংশনের জন্য নীচে কয়েকটি প্রয়োজনীয়তা (যেমন আমি তাদের দেখতে পাচ্ছি):
একটি-গরম এনকোডিং ফাংশন অবশ্যই:
- ইনপুট হিসাবে বিভিন্ন ধরণের (যেমন পূর্ণসংখ্যা, স্ট্রিংস, ফ্লোটস ইত্যাদি) তালিকা পরিচালনা করুন
- সদৃশগুলি সহ একটি ইনপুট তালিকা পরিচালনা করুন
- ইনপুটগুলিতে অনুরূপ তালিকার একটি তালিকা (একই ক্রমে) ফেরত দিন
- প্রতিটি তালিকার যতটা সম্ভব সংক্ষিপ্ত তালিকাগুলির একটি তালিকা ফিরিয়ে দিন
আমি এই প্রশ্নের অনেক উত্তর পরীক্ষা করেছি এবং তাদের বেশিরভাগ উপরোক্ত প্রয়োজনীয়তার একটিতে ব্যর্থ fail
drop_first=True
সঙ্গেget_dummies
অপসারণ প্রয়োজন আলাদাভাবে মূল কলাম ড্রপ