আমি সাধারণীকরণে হারিয়ে গেছি, কেউ দয়া করে আমাকে গাইড করতে পারে।
আমার ন্যূনতম এবং সর্বাধিক মান রয়েছে যথাক্রমে -23.89 এবং 7.54990767।
যদি আমি 5.6878 এর মান পাই তবে আমি কীভাবে 0 থেকে 1 এর স্কেলে এই মানটি স্কেল করতে পারি।
আমি সাধারণীকরণে হারিয়ে গেছি, কেউ দয়া করে আমাকে গাইড করতে পারে।
আমার ন্যূনতম এবং সর্বাধিক মান রয়েছে যথাক্রমে -23.89 এবং 7.54990767।
যদি আমি 5.6878 এর মান পাই তবে আমি কীভাবে 0 থেকে 1 এর স্কেলে এই মানটি স্কেল করতে পারি।
উত্তর:
আপনি যদি নিজের ডেটাটিকে স্বাভাবিক করতে চান তবে আপনি নিম্নলিখিতগুলি পরামর্শ এবং সহজভাবে গণনা করার জন্য এটি করতে পারেন:
যেখানে এবং এখন আপনার স্বাভাবিকের ডেটা। ধারণার প্রমাণ হিসাবে (যদিও আপনি এটি জিজ্ঞাসা করেননি) এখানে এই কোডটি চিত্রিত করার জন্য এখানে কিছু কোড এবং সহ গ্রাফ রয়েছে:R
# Example Data
x = sample(-100:100, 50)
#Normalized Data
normalized = (x-min(x))/(max(x)-min(x))
# Histogram of example data and normalized data
par(mfrow=c(1,2))
hist(x, breaks=10, xlab="Data", col="lightblue", main="")
hist(normalized, breaks=10, xlab="Normalized Data", col="lightblue", main="")
illustrate the point
আপনার (সঠিক) উত্তরটি কীভাবে দেয়?
সাধারণ এক-লাইন সূত্র সুসংগত পর্যবেক্ষিত থাকার ডাটা মান rescale করতে সর্বনিম্ন এবং সর্বোচ্চ একটি নতুন অবাধ সীমার মধ্যে 'মিনিট থেকে সর্বোচ্চ' হয়
newvalue= (max'-min')/(max-min)*(value-max)+max'
or
newvalue= (max'-min')/(max-min)*(value-min)+min'.
a
এবং b
ধ্রুবক হবে, এবং তারপরে কেবল প্রয়োগ করুন newvalue = a * value + b
। a = (max'-min')/(max-min)
এবংb = max - a * max
b = max' - a * max
বাb = min' - (a * min)
u = -1 + 2.*(u - min(u))./(max(u) - min(u));
।
এখানে নর্মালাইজেশনের জন্য আমার পিএইচপি বাস্তবায়ন:
function normalize($value, $min, $max) {
$normalized = ($value - $min) / ($max - $min);
return $normalized;
}
তবে যখন আমি আমার নিজস্ব কৃত্রিম নিউরাল নেটওয়ার্কগুলি তৈরি করছিলাম, গ্রাফের জন্য ভাল পাঠযোগ্য আউটপুট পাওয়ার জন্য আমার স্বাভাবিকীকরণের আউটপুটটিকে মূল ডেটাতে ফিরে যেতে হবে to
function denormalize($normalized, $min, $max) {
$denormalized = ($normalized * ($max - $min) + $min);
return $denormalized;
}
$int = 12;
$max = 20;
$min = 10;
$normalized = normalize($int, $min, $max); // 0.2
$denormalized = denormalize($normalized, $min, $max); //12
অস্বীকৃতি নিম্নলিখিত সূত্র ব্যবহার করে:
একটি জিনিস মনে রাখতে হবে এটি max - min
শূন্যের সমান হতে পারে। এই ক্ষেত্রে, আপনি এই বিভাগটি সম্পাদন করতে চাইবেন না।
আপনি যখন সাধারণ হওয়ার চেষ্টা করছেন তালিকার সমস্ত মান একই হয় তখন এটি ঘটবে সে ক্ষেত্রে। যেমন একটি তালিকা স্বাভাবিক করতে, প্রতিটি আইটেম হবে 1 / length
।
// JavaScript
function normalize(list) {
var minMax = list.reduce((acc, value) => {
if (value < acc.min) {
acc.min = value;
}
if (value > acc.max) {
acc.max = value;
}
return acc;
}, {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY});
return list.map(value => {
// Verify that you're not about to divide by zero
if (minMax.max === minMax.min) {
return 1 / list.length
}
var diff = minMax.max - minMax.min;
return (value - minMax.min) / diff;
});
}
normalize([3, 3, 3, 3]); // output => [0.25, 0.25, 0.25, 0.25]
normalize([12, 20, 10])
আউটপুট [0.2, 1.0, 0.0]
, যা আপনি একই পেতে হবে (val - min) / (max - min)
।
উত্তরটি ঠিক আছে তবে আমার একটি পরামর্শ রয়েছে, যদি আপনার প্রশিক্ষণের ডেটা সীমার বাইরে কিছু সংখ্যক মুখোমুখি হয়? আপনি স্কোয়াশিং কৌশল ব্যবহার করতে পারেন। এটি কখনই সীমার বাইরে না যাওয়ার গ্যারান্টি দেওয়া হবে। বরং এই তুলনায়
আমি এটি ব্যবহার করার পরামর্শ দিচ্ছি
ন্যূনতম এবং সর্বাধিক পরিসরে এই জাতীয় স্কোয়াশিং সহ
এবং সীমার বাইরে থাকা প্রত্যাশার পরিমানের আকারটি আস্থা ছাড়িয়ে যাওয়ার মাত্রার সাথে সমানুপাতিক যে সীমার বাইরে মান থাকবে।
আরও তথ্যের জন্য আপনি গুগল করতে পারেন: সীমার বাইরে স্কোয়াশ করা এবং "ডরিয়ান পাইল" এর ডেটা প্রস্তুতির বই পড়ুন
এটা চেষ্টা কর. এটি ফাংশন স্কেলের সাথে সামঞ্জস্যপূর্ণ
normalize <- function(x) {
x <- as.matrix(x)
minAttr=apply(x, 2, min)
maxAttr=apply(x, 2, max)
x <- sweep(x, 2, minAttr, FUN="-")
x=sweep(x, 2, maxAttr-minAttr, "/")
attr(x, 'normalized:min') = minAttr
attr(x, 'normalized:max') = maxAttr
return (x)
}