1

次の番号のリストがあります。

3.16、4.72、6.44、8.25、3.76、4.87、5.76、6.5、7.32

次のように、(0, 1) の間の数値を再スケーリングする必要があります。

1) 最小の数値は 0 に最も近い値を取得しますが、0 ではありません。

2) 最大数は 1 に最も近い値を取得しますが、1 ではありません。

私の研究では、0 は完全に適切であることを示し、1 は完全に不適切であることを示します。そのため、それらを最終結果から除外したいと考えています。

どんな助けでも大歓迎です。

4

4 に答える 4

2

この変換は役に立ちますか?

V' = 1/(1 + e^(-V)) -------- Logistic function


ドメイン - 実数なので、 V任意の実数を取ることができるため、、、
Range - (0,1)0<V'<1V'<>0V'<>1

于 2011-12-07T09:20:21.457 に答える
1

アフィン変換を使用した Python での簡単な例:

 list = [3.16, 4.72, 6.44, 8.25, 3.76, 4.87, 5.76, 6.5, 7.32]

 # find the minimum value and range, and add 1% padding
 range_value = max(list) - min(list)
 range_value = range_value + range_value/50
 min_value = min(list) - range_value/100     

 # subtract the minimum value and divide by the range
 for index, item in enumerate(list):
    list[index] = (item - min_value) / range_value

 print list

結果は次のとおりです。

 [0.010000000000000026, 0.310473824107246, 0.64176547632805592, 0.99039215686274518, 0.1255668554258639, 0.33936553796371205, 0.51078970684541003, 0.65332216187064218, 0.81126353095265591]

もちろん、パディングの量を好きなだけ小さく変更することもできます。範囲については、最小値の場合の 2 倍を追加する必要があります。範囲。

于 2011-08-29T18:37:45.780 に答える
0

次のようなアフィン マッピング (つまり、形式y = mx + c) が必要になる可能性があります。

not_quite_0 = m*min_val + c
not_quite_1 = m*max_val + c

これらの方程式を解くと、次のようになります。

m = (not_quite_1 - not_quite_0) / (max_val - min_val)
c = (max_val*not_quite_0 - min_val*not_quite_1) / (max_val - min_val)

not_quite_0 = 0 + epsおそらくとを定義できます。not_quite_1 = 1 - epsここで、epsは非常に小さな値です。

于 2011-08-29T17:41:02.887 に答える
0

あなたの質問を理解できるかどうかはわかりませんが、セット内の最大数を見つけ、セット内の各数をその最大数で割ると、適切な範囲が得られます。

于 2011-08-29T17:41:13.443 に答える