Hướng dẫn how do you normalize a column in python? - làm cách nào để bạn chuẩn hóa một cột trong python?

Ví dụ chi tiết về phương pháp chuẩn hóa

  • Bình thường hóa gấu trúc (không thiên vị)
  • Bình thường hóa sklearn (thiên vị)
  • Liệu Biased-Vs-Unbiased có ảnh hưởng đến việc học máy không?
  • MIX-MAX tỷ lệ

Tài liệu tham khảo: Wikipedia: Ước tính không thiên vị về độ lệch chuẩn

Ví dụ dữ liệu

import pandas as pd
df = pd.DataFrame({
               'A':[1,2,3],
               'B':[100,300,500],
               'C':list('abc')
             })
print(df)
   A    B  C
0  1  100  a
1  2  300  b
2  3  500  c

Chuẩn hóa bằng cách sử dụng gấu trúc (đưa ra ước tính không thiên vị)

Khi bình thường hóa, chúng tôi chỉ cần trừ trung bình và phân chia theo độ lệch chuẩn.

df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c

Chuẩn hóa bằng Sklearn (đưa ra ước tính thiên vị, khác với gấu trúc)

Nếu bạn làm điều tương tự với sklearn, bạn sẽ nhận được đầu ra khác nhau!

import pandas as pd

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()


df = pd.DataFrame({
               'A':[1,2,3],
               'B':[100,300,500],
               'C':list('abc')
             })
df.iloc[:,0:-1] = scaler.fit_transform(df.iloc[:,0:-1].to_numpy())
print(df)
          A         B  C
0 -1.224745 -1.224745  a
1  0.000000  0.000000  b
2  1.224745  1.224745  c

Liệu các ước tính thiên vị của Sklearn có làm cho việc học máy trở nên kém mạnh mẽ hơn không?

NO.

Tài liệu chính thức của Sklearn.Preprocessing.Scale tuyên bố rằng việc sử dụng công cụ ước tính thiên vị không có khả năng ảnh hưởng đến hiệu suất của các thuật toán học máy và chúng ta có thể sử dụng chúng một cách an toàn.

Từ tài liệu chính thức:

Chúng tôi sử dụng công cụ ước tính thiên vị cho độ lệch chuẩn, tương đương với numpy.std(x, ddof=0). Lưu ý rằng sự lựa chọn của ddof không có khả năng ảnh hưởng đến hiệu suất mô hình.

Điều gì về tỷ lệ minmax?

Không có tính toán độ lệch chuẩn trong tỷ lệ minmax. Vì vậy, kết quả là giống nhau ở cả gấu trúc và scikit-learn.

import pandas as pd
df = pd.DataFrame({
               'A':[1,2,3],
               'B':[100,300,500],
             })
(df - df.min()) / (df.max() - df.min())
     A    B
0  0.0  0.0
1  0.5  0.5
2  1.0  1.0


# Using sklearn
from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler() 
arr_scaled = scaler.fit_transform(df) 

print(arr_scaled)
[[0.  0. ]
 [0.5 0.5]
 [1.  1. ]]

df_scaled = pd.DataFrame(arr_scaled, columns=df.columns,index=df.index)
print(df_scaled)
     A    B
0  0.0  0.0
1  0.5  0.5
2  1.0  1.0

df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
31
df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
2ddof9____10 import1import2

  • Sử dụng Sklearn: Pandas is an open-source library that’s built on top of the NumPy library. It is a Python package that provides various data structures and operations for manipulating numerical data and statistics. It’s mainly popular for importing and analyzing data much easier. Pandas is fast and it’s high-performance & productive for users.
  • Chuyển đổi các tính năng bằng cách chia tỷ lệ từng tính năng thành một phạm vi nhất định. Công cụ ước tính này tỷ lệ và dịch từng tính năng riêng lẻ sao cho nó nằm trong phạm vi đã cho trên tập huấn luyện, ví dụ: Giữa không và một. Ở đây, chúng tôi sẽ sử dụng Minmax Scale.Data Normalization could also be a typical practice in machine learning which consists of transforming numeric columns to a standard scale. In machine learning, some feature values differ from others multiple times. The features with higher values will dominate the learning process.

Các bước cần thiết

Ở đây, chúng tôi sẽ áp dụng một số kỹ thuật để bình thường hóa các giá trị cột và thảo luận về những điều này với sự trợ giúp của các ví dụ. Đối với điều này, hãy để hiểu các bước cần thiết để bình thường hóa với gấu trúc.

  1. Thư viện nhập khẩu (gấu trúc)
  2. Nhập / tải / tạo dữ liệu.
  3. Sử dụng kỹ thuật để bình thường hóa cột.

Examples:

Ở đây, chúng tôi tạo dữ liệu bằng một số giá trị ngẫu nhiên và áp dụng một số kỹ thuật chuẩn hóa trên một cột.

Python3

import pandas as pd

df

df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
0
df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
1
df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
2
df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
3
df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
4
df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
5
df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
6
df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
7
df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
5__19

Các

sklearn0sklearn1

df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
3
import pandas as pd

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()


df = pd.DataFrame({
               'A':[1,2,3],
               'B':[100,300,500],
               'C':list('abc')
             })
df.iloc[:,0:-1] = scaler.fit_transform(df.iloc[:,0:-1].to_numpy())
print(df)
          A         B  C
0 -1.224745 -1.224745  a
1  0.000000  0.000000  b
2  1.224745  1.224745  c
9
df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
5
import pandas as pd
df = pd.DataFrame({
               'A':[1,2,3],
               'B':[100,300,500],
             })
(df - df.min()) / (df.max() - df.min())
     A    B
0  0.0  0.0
1  0.5  0.5
2  1.0  1.0


# Using sklearn
from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler() 
arr_scaled = scaler.fit_transform(df) 

print(arr_scaled)
[[0.  0. ]
 [0.5 0.5]
 [1.  1. ]]

df_scaled = pd.DataFrame(arr_scaled, columns=df.columns,index=df.index)
print(df_scaled)
     A    B
0  0.0  0.0
1  0.5  0.5
2  1.0  1.0
3
df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
5sklearn7
df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
5sklearn9
df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
5numpy.std(x, ddof=0)1
df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
5numpy.std(x, ddof=0)3
df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
5

import pandas as pd

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()


df = pd.DataFrame({
               'A':[1,2,3],
               'B':[100,300,500],
               'C':list('abc')
             })
df.iloc[:,0:-1] = scaler.fit_transform(df.iloc[:,0:-1].to_numpy())
print(df)
          A         B  C
0 -1.224745 -1.224745  a
1  0.000000  0.000000  b
2  1.224745  1.224745  c
5numpy.std(x, ddof=0)6
df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
5sklearn9
df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
5ddof0
df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
5ddof2
df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
5ddof4ddof5

ddof6

Output:

Bộ dữ liệu bao gồm hai cột trong đó cột 1 không được chuẩn hóa nhưng cột 2 được chuẩn hóa. Vì vậy, chúng tôi áp dụng các kỹ thuật chuẩn hóa trong cột 1.

Python3

ddof7

df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
2ddof9____10 import1import2

Output:

Hướng dẫn how do you normalize a column in python? - làm cách nào để bạn chuẩn hóa một cột trong python?

Sử dụng tỷ lệ tuyệt đối tối đa:

Tỷ lệ tuyệt đối tối đa tái cấu trúc mỗi tính năng giữa -1 và 1 bằng cách chia mọi quan sát cho giá trị tuyệt đối tối đa của nó. Chúng ta có thể áp dụng tỷ lệ tuyệt đối tối đa trong gấu trúc bằng các phương thức .max () và .abs (), như được hiển thị bên dưới.

Python3

import3

df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
0 import5

import6

df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
0
df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
2

import9

df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
0 import9pandas as pd2pandas as pd3pandas as pd4pandas as pd5pandas as pd6pandas as pd7

pandas as pd8

Output:

Sử dụng tỷ lệ tính năng Min-Max:

Phương pháp Min-Max (thường được gọi là chuẩn hóa) đã đưa tính năng thành phạm vi cứng và nhanh [0,1] bằng cách trừ đi giá trị tối thiểu của tính năng sau đó chia cho phạm vi. Chúng ta có thể áp dụng tỷ lệ tối thiểu trong gấu trúc bằng các phương thức .min () và .max ().

Python3

pandas as pd9____10 import5

import6

df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
0
df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
2

import9

df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
0 import9pandas as pd2pandas as pd3pandas as pd4pandas as pd5pandas as pd6pandas as pd7

Sử dụng tỷ lệ tính năng Min-Max:

Phương pháp Min-Max (thường được gọi là chuẩn hóa) đã đưa tính năng thành phạm vi cứng và nhanh [0,1] bằng cách trừ đi giá trị tối thiểu của tính năng sau đó chia cho phạm vi. Chúng ta có thể áp dụng tỷ lệ tối thiểu trong gấu trúc bằng các phương thức .min () và .max ().

pandas as pd9____10 import5

Python3

Is

df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0) print(df) A B C 0 -1.0 -1.0 a 1 0.0 0.0 b 2 1.0 1.0 c 10

Đầu ra:

Python3

Hãy để kiểm tra với cốt truyện này.

import6

df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
0
df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
2

import9

df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
0 import9pandas as pd2pandas as pd3pandas as pd4pandas as pd5pandas as pd6pandas as pd7

df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
30

Phương pháp Min-Max (thường được gọi là chuẩn hóa) đã đưa tính năng thành phạm vi cứng và nhanh [0,1] bằng cách trừ đi giá trị tối thiểu của tính năng sau đó chia cho phạm vi. Chúng ta có thể áp dụng tỷ lệ tối thiểu trong gấu trúc bằng các phương thức .min () và .max ().

pandas as pd9____10 import5

Python3

Is

df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0) print(df) A B C 0 -1.0 -1.0 a 1 0.0 0.0 b 2 1.0 1.0 c 10

Đầu ra:

Python3

Hãy để kiểm tra với cốt truyện này.

df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
11
df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
2ddof9____10 import1import2

Sử dụng phương pháp điểm Z:

import6

df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
0
df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
2

import9

df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
0 import9pandas as pd2pandas as pd3pandas as pd4pandas as pd5pandas as pd6pandas as pd7

df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
     A    B  C
0 -1.0 -1.0  a
1  0.0  0.0  b
2  1.0  1.0  c
57

Phương pháp Min-Max (thường được gọi là chuẩn hóa) đã đưa tính năng thành phạm vi cứng và nhanh [0,1] bằng cách trừ đi giá trị tối thiểu của tính năng sau đó chia cho phạm vi. Chúng ta có thể áp dụng tỷ lệ tối thiểu trong gấu trúc bằng các phương thức .min () và .max ().

pandas as pd9____10 import5

Python3

Is


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).

Bình thường hóa () làm gì trong Python?

Mã số.Python cung cấp thư viện tiền xử lý, trong đó chứa chức năng bình thường hóa để bình thường hóa dữ liệu.Nó lấy một mảng làm đầu vào và bình thường hóa các giá trị của nó trong khoảng từ 0 và 1. sau đó nó trả về một mảng đầu ra với cùng kích thước với đầu vào.normalize the data. It takes an array in as an input and normalizes its values between 0 and 1. It then returns an output array with the same dimensions as the input.

Làm cách nào để bình thường hóa một cột trong gấu trúc Sklearn?

Bình thường hóa cột gấu trúc với tính năng MIN-MAX tỷ lệ bằng cách sử dụng Scikit-learn.Mô-đun Python Sklearn cũng cung cấp một cách dễ dàng để bình thường hóa một cột bằng phương pháp tỷ lệ Min-Max.Thư viện Sklearn đi kèm với một lớp, MinMaxScaler, mà chúng ta có thể sử dụng để phù hợp với dữ liệu.using the min-max scaling method. The sklearn library comes with a class, MinMaxScaler , which we can use to fit the data.

Làm thế nào để bạn bình thường hóa trong gấu trúc?

Sử dụng tính năng Min-MAX tỷ lệ phương pháp Min-Max (thường được gọi là chuẩn hóa) đã đặt lại tính năng thành phạm vi cứng và nhanh [0,1] bằng cách trừ đi giá trị tối thiểu của tính năng sau đó chia cho phạm vi.Chúng ta có thể áp dụng tỷ lệ tối thiểu trong gấu trúc bằng cách sử dụng.min () và.Phương pháp tối đa ().subtracting the minimum value of the feature then dividing by the range. We can apply the min-max scaling in Pandas using the . min() and . max() methods.