Hướng dẫn normalize negative and positive values python - chuẩn hóa các giá trị âm và dương trong python

Tôi có một danh sách các số thập phân như sau:

[-23.5, -12.7, -20.6, -11.3, -9.2, -4.5, 2, 8, 11, 15, 17, 21]

Tôi cần bình thường hóa danh sách này để phù hợp với phạm vi

old_min = min[input]
old_range = max[input] - old_min
0. Làm thế nào tôi có thể làm điều đó trong Python?
How can I do it in python?

Burhan Khalid

165K18 Huy hiệu vàng238 Huy hiệu bạc276 Huy hiệu Đồng18 gold badges238 silver badges276 bronze badges

Khi được hỏi ngày 13 tháng 5 năm 2013 lúc 3:28May 13, 2013 at 3:28

1

Để có được phạm vi đầu vào rất dễ dàng:

old_min = min[input]
old_range = max[input] - old_min

Đây là phần khó khăn. Bạn có thể nhân với phạm vi mới và chia cho phạm vi cũ, nhưng gần như đảm bảo rằng thùng trên cùng sẽ chỉ nhận được một giá trị trong đó. Bạn cần mở rộng phạm vi đầu ra của mình để thùng trên cùng có cùng kích thước với tất cả các thùng khác.

new_min = -5
new_range = 5 + 0.9999999999 - new_min
output = [floor[[n - old_min] / old_range * new_range + new_min] for n in input]

Đã trả lời ngày 13 tháng 5 năm 2013 lúc 4:01May 13, 2013 at 4:01

Mark Ransommark RansomMark Ransom

292K40 Huy hiệu vàng384 Huy hiệu bạc610 Huy hiệu Đồng40 gold badges384 silver badges610 bronze badges

3

>>> L = [-23.5, -12.7, -20.6, -11.3, -9.2, -4.5, 2, 8, 11, 15, 17, 21]
>>> normal = map[lambda x, r=float[L[-1] - L[0]]: [[x - L[0]] / r]*10 - 5, L]
>>> normal
[-5.0, -2.5730337078651684, -4.348314606741574, -2.2584269662921352, -1.7865168539325844, -0.7303370786516856, 0.7303370786516847, 2.0786516853932575, 2.752808988764045, 3.6516853932584272, 4.101123595505618, 5.0]

Đã trả lời ngày 13 tháng 5 năm 2013 lúc 3:39May 13, 2013 at 3:39

John La Rooyjohn La RooyJohn La Rooy

Phù bằng vàng 287K5151 gold badges359 silver badges500 bronze badges

0

original_vals = [-23.5, -12.7, -20.6, -11.3, -9.2, -4.5, 2, 8, 11, 15, 17, 21 ]

# get max absolute value
original_max = max[[abs[val] for val in original_vals]]

# normalize to desired range size
new_range_val = 5
normalized_vals = [float[val]/original_max * new_range_val for val in original_vals]

Đã trả lời ngày 13 tháng 5 năm 2013 lúc 3:36May 13, 2013 at 3:36

2

Giả sử danh sách của bạn được sắp xếp:

# Rough code
# Get the range of the list
r = float[l[-1] - l[0]]
# Normalize
normal = map[lambda x: [x - l[0]] / r, l]

Về cơ bản, bạn muốn điều chỉnh cơ sở của danh sách thành một phạm vi khác. Điều này sẽ bình thường hóa danh sách ban đầu của bạn thành [0, 1]

Đã trả lời ngày 13 tháng 5 năm 2013 lúc 3:34May 13, 2013 at 3:34

MichaelmichaelMichael

2.13114 Huy hiệu bạc14 Huy hiệu đồng14 silver badges14 bronze badges

Giữ nó đơn giản:

>>> foo = [-23.5, -12.7, -20.6, -11.3, -9.2, -4.5, 2, 8, 11, 15, 17, 21]
>>> [i for i in foo if int[i] in range[-5, 5]]
[-4.5, 2]

Ngoài ra, nếu bạn muốn kết quả chỉ là số nguyên:

>>> [int[i] for i in foo if int[i] in range[-5, 5]]
[-4, 2]

Đã trả lời ngày 13 tháng 5 năm 2013 lúc 4:04May 13, 2013 at 4:04

Timsstimsstimss

9.7423 huy hiệu vàng33 Huy hiệu bạc55 Huy hiệu đồng3 gold badges33 silver badges55 bronze badges

1

$ \ beingroup $

Ví dụ: tôi có một danh sách [-518.8134, 480.1884,160.4761] Làm thế nào để bình thường hóa điều này thành phạm vi [-1 1]?

Đã hỏi ngày 13 tháng 3 năm 2021 lúc 20:04Mar 13, 2021 at 20:04

$ \ endgroup $

$ \ beingroup $

Ví dụ: tôi có một danh sách [-518.8134, 480.1884,160.4761] Làm thế nào để bình thường hóa điều này thành phạm vi [-1 1]?

data = [-518.8134, 480.1884, 160.4761]

# manual scaling
scaled = [-1 + 2 * [x - min[data]] / [max[data] - min[data]] for x in data]
print[scaled]
# [-1.0, 1.0, 0.3599364886029235]

# using scikit-learn's MinMaxScaler
from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler[feature_range=[-1, 1]]
scaled = scaler.fit_transform[[[x] for x in data]]
print[scaled]
# [[-1.        ]
#  [ 1.        ]
#  [ 0.35993649]]

Đã hỏi ngày 13 tháng 3 năm 2021 lúc 20:04Mar 13, 2021 at 20:57

$ \ endgroup $Oxbowerce

Bạn có thể tự làm điều này hoặc sử dụng một thư viện như Scikit-learn có

old_min = min[input]
old_range = max[input] - old_min
1.2 gold badges7 silver badges22 bronze badges

$ \ endgroup $

$ \ beingroup $

Ví dụ: tôi có một danh sách [-518.8134, 480.1884,160.4761] Làm thế nào để bình thường hóa điều này thành phạm vi [-1 1]?

Đã hỏi ngày 13 tháng 3 năm 2021 lúc 20:04$L$ to range $[0, 1]$, you can do following :

import numpy as np


L = [L - np.min[L]]/[np.max[L] - np.min[L]]

$ \ endgroup $$L$ will give 0 and maximum will give 1. The rest will fall in between. Now you can transfer this to $[a, b]$ simply first by multiplying $[b-a]$ [which will shift everything to range $[0, b-a]$] and then adding $a$ [which will shift everything to $[a, b]$].

Bạn có thể tự làm điều này hoặc sử dụng một thư viện như Scikit-learn có

old_min = min[input]
old_range = max[input] - old_min
1.Mar 14, 2021 at 6:12

Đã trả lời ngày 13 tháng 3 năm 2021 lúc 20:57Deep

Oxbowerceoxbowerce1 bronze badge

$ \ endgroup $

Làm thế nào để bạn bình thường hóa dữ liệu tích cực và tiêu cực?

Giải pháp rất đơn giản: chuyển dữ liệu của bạn bằng cách thêm tất cả các số với số lượng tuyệt đối nhất [giá trị tối thiểu của dữ liệu của bạn] sao cho số âm nhất sẽ trở thành 0 và tất cả các số khác trở nên dương.Shift your data by adding all numbers with the absolute of the most negative [minimum value of your data] such that the most negative one will become zero and all other number become positive.

Có thể bình thường hóa dữ liệu là âm?

Nếu một giá trị chính xác bằng giá trị trung bình của tất cả các giá trị của tính năng, nó sẽ được chuẩn hóa thành 0. Nếu nó ở dưới giá trị trung bình, nó sẽ là một số âm và nếu nó ở trên mức trung bìnhcon số.If it is below the mean, it will be a negative number, and if it is above the mean it will be a positive number.

Làm thế nào để bạn bình thường hóa dữ liệu trong Python?

Sử dụng MinMaxScaler [] để bình thường hóa dữ liệu trong Python Đây là một lựa chọn phổ biến hơn để bình thường hóa các bộ dữ liệu.Bạn có thể thấy rằng các giá trị trong đầu ra nằm giữa [0 và 1].MinMaxScaler cũng cung cấp cho bạn tùy chọn để chọn phạm vi tính năng.Theo mặc định, phạm vi được đặt thành [0,1]. to Normalize Data in Python This is a more popular choice for normalizing datasets. You can see that the values in the output are between [0 and 1]. MinMaxScaler also gives you the option to select feature range. By default, the range is set to [0,1].

Làm thế nào để bạn bình thường hóa các giá trị khác nhau?

Dưới đây là các bước để sử dụng công thức chuẩn hóa trên tập dữ liệu:..
Tính phạm vi của tập dữ liệu.....
Trừ giá trị x tối thiểu từ giá trị của điểm dữ liệu này.....
Chèn các giá trị này vào công thức và phân chia.....
Lặp lại với các điểm dữ liệu bổ sung ..

Bài Viết Liên Quan

Chủ Đề