मैं सामान्य करने में खो गया हूं, क्या कोई मुझे मार्गदर्शन दे सकता है।
-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
आपके (सही) उत्तर कैसे देते हैं?
सामान्य रूप से रेखीय रूप से पुनर्विकसित डेटा मानों को न्यूनतम और अधिकतम रूप से एक नई मनमानी श्रेणी में ' अधिकतम' करने के लिए एक-सूत्र का सूत्र है
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));
।
यहाँ सामान्यीकरण के लिए मेरा PHP कार्यान्वयन है:
function normalize($value, $min, $max) {
$normalized = ($value - $min) / ($max - $min);
return $normalized;
}
लेकिन जब मैं अपने स्वयं के कृत्रिम तंत्रिका नेटवर्क का निर्माण कर रहा था, तो मुझे ग्राफ़ के लिए अच्छा पठनीय आउटपुट प्राप्त करने के लिए सामान्यीकृत आउटपुट को मूल डेटा में बदलने की आवश्यकता थी।
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)
।
उत्तर सही है, लेकिन मेरा एक सुझाव है, यदि आपके प्रशिक्षण डेटा में कुछ संख्या सीमा से बाहर हो तो क्या होगा? आप स्क्वाशिंग तकनीक का उपयोग कर सकते हैं। यह गारंटी दी जाएगी कि सीमा से बाहर कभी न जाएं। इसके बजाय
मैं इस का उपयोग करने की सलाह देता हूं
न्यूनतम और अधिकतम सीमा में इस तरह स्क्वाश करना
और अपेक्षित आउट-ऑफ-रेंज गैप का आकार सीधे विश्वास की डिग्री के लिए आनुपातिक है कि आउट-ऑफ-रेंज मान होंगे।
अधिक जानकारी के लिए आप Google: आउट-ऑफ-द-रेंज संख्याओं को स्क्वाश कर सकते हैं और "डोरियन पाइल" की डेटा तैयारी पुस्तक को संदर्भित कर सकते हैं
इसे इस्तेमाल करे। यह फ़ंक्शन स्केल के अनुरूप है
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)
}