Làm cách nào để bạn chuyển đổi dữ liệu phân loại thành dữ liệu số trong python?
Bạn có thể sử dụng cú pháp cơ bản sau để chuyển đổi biến phân loại thành biến số trong DataFrame của gấu trúc.
df['column_name'] = pd.factorize(df['column_name'])[0] Bạn cũng có thể sử dụng cú pháp sau để chuyển đổi mọi biến phân loại trong DataFrame thành biến số Show
#identify all categorical variables cat_columns = df.select_dtypes(['object']).columns #convert all categorical variables to numeric df[cat_columns] = df[cat_columns].apply(lambda x: pd.factorize(x)[0]) Các ví dụ sau đây cho thấy cách sử dụng cú pháp này trong thực tế ví dụ 1. Chuyển đổi một biến phân loại thành sốGiả sử chúng ta có DataFrame gấu trúc sau import pandas as pd #create DataFrame df = pd.DataFrame({'team': ['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'], 'position': ['G', 'G', 'F', 'G', 'F', 'C', 'G', 'F', 'C'], 'points': [5, 7, 7, 9, 12, 9, 9, 4, 13], 'rebounds': [11, 8, 10, 6, 6, 5, 9, 12, 10]}) #view DataFrame df team position points rebounds 0 A G 5 11 1 A G 7 8 2 A F 7 10 3 B G 9 6 4 B F 12 6 5 B C 9 5 6 C G 9 9 7 C F 4 12 8 C C 13 10 Chúng ta có thể sử dụng cú pháp sau để chuyển đổi cột 'đội' thành số #convert 'team' column to numeric
df['team'] = pd.factorize(df['team'])[0]
#view updated DataFrame
df
team position points rebounds
0 0 G 5 11
1 0 G 7 8
2 0 F 7 10
3 1 G 9 6
4 1 F 12 6
5 1 C 9 5
6 2 G 9 9
7 2 F 4 12
8 2 C 13 10
Đây là cách chuyển đổi hoạt động
ví dụ 2. Chuyển đổi nhiều biến phân loại thành sốMột lần nữa, giả sử chúng ta có DataFrame gấu trúc sau import pandas as pd #create DataFrame df = pd.DataFrame({'team': ['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'], 'position': ['G', 'G', 'F', 'G', 'F', 'C', 'G', 'F', 'C'], 'points': [5, 7, 7, 9, 12, 9, 9, 4, 13], 'rebounds': [11, 8, 10, 6, 6, 5, 9, 12, 10]}) #view DataFrame df team position points rebounds 0 A G 5 11 1 A G 7 8 2 A F 7 10 3 B G 9 6 4 B F 12 6 5 B C 9 5 6 C G 9 9 7 C F 4 12 8 C C 13 10 Chúng ta có thể sử dụng cú pháp sau để chuyển đổi mọi biến phân loại trong DataFrame thành biến số #get all categorical columns
cat_columns = df.select_dtypes(['object']).columns
#convert all categorical columns to numeric
df[cat_columns] = df[cat_columns].apply(lambda x: pd.factorize(x)[0])
#view updated DataFrame
df
team position points rebounds
0 0 0 5 11
1 0 0 7 8
2 0 1 7 10
3 1 0 9 6
4 1 1 12 6
5 1 2 9 5
6 2 0 9 9
7 2 1 4 12
8 2 2 13 10
Lưu ý rằng cả hai cột phân loại (đội và vị trí) đều được chuyển đổi thành số trong khi các cột điểm và số lần bật lại vẫn giữ nguyên Bất cứ khi nào chúng ta đưa văn bản vào máy tính, nó sẽ giải mã nó thành 0 và 1 mà con người không thể hiểu trực tiếp. Nó diễn giải những con số này dưới dạng hướng dẫn hiển thị văn bản, âm thanh, hình ảnh, v.v. , có ý nghĩa với mọi người. Tương tự, khi chúng tôi gửi dữ liệu tới bất kỳ mô hình máy học (ML) nào, chúng tôi cần gửi dữ liệu đó ở định dạng phù hợp vì các thuật toán chỉ hiểu các con số. Các biến phân loại này cũng chứa các mẩu thông tin có giá trị về dữ liệu. Trong bài viết này, chúng ta sẽ tìm hiểu cách mã hóa các biến phân loại thành số với Pandas và Scikit-learning Các biến phân loại thường được gọi là 'chuỗi' hoặc 'danh mục' và có số lượng hữu hạn. Đây là vài ví dụ
Có hai loại dữ liệu phân loại, thứ tự và danh nghĩa
Bây giờ chúng ta đã có kiến thức về các biến phân loại, hãy xem xét các tùy chọn để mã hóa chúng bằng Pandas và Scikit-learning Tìm và thay thếPhương pháp đơn giản nhất để mã hóa dữ liệu phân loại là tìm và thay thế. Phương thức replace() thay thế mỗi lần xuất hiện khớp của ký tự cũ trong chuỗi bằng ký tự mới Đây là cách nó hoạt động Giả sử có một cột có tên là "số xi-lanh" trong tập dữ liệu và số xi-lanh cao nhất mà một chiếc ô tô có thể có là 4. Các giá trị mà cột này chứa không thể vượt quá 4. Tuy nhiên, vấn đề là tất cả các giá trị này đều được viết dưới dạng văn bản, chẳng hạn như “hai”, “một”, v.v. Những gì chúng ta có thể làm là thay thế trực tiếp các giá trị văn bản này bằng giá trị số tương đương của chúng bằng cách sử dụng chức năng 'thay thế' do Pandas cung cấp
Ở đây, chúng tôi đang tạo một từ điển ánh xạ sẽ ánh xạ tất cả các giá trị văn bản thành các giá trị số của chúng. Cách tiếp cận này rất hữu ích khi xử lý dữ liệu theo thứ tự vì chúng ta cần duy trì trình tự Trong ví dụ trên về “bằng cấp của một người”, chúng ta có thể ánh xạ mức độ cao nhất thành số lớn hơn và mức độ thấp nhất thành số thấp nhất mã hóa nhãnTheo cách tiếp cận này, mỗi nhãn được gán một số nguyên duy nhất dựa trên thứ tự bảng chữ cái. Chúng ta có thể thực hiện điều này bằng thư viện Scikit-learning
Tập dữ liệu này chứa một số giá trị null, vì vậy điều quan trọng là phải xóa chúng Hãy xem kiểu dữ liệu của các tính năng này ________số 8Chúng ta có thể thấy rằng hầu hết tất cả các biến đều được đại diện bởi kiểu dữ liệu đối tượng, ngoại trừ cột “ký hiệu” Hãy mã hóa cột “body_style”
nguồn hình ảnh. Python kinh doanh thực tế Vì mã hóa nhãn sử dụng thứ tự bảng chữ cái, "mui trần" đã được mã hóa bằng 0, "hatchback" đã được mã hóa bằng 2 và "sedan" với 3. Phải có một danh mục khác trong body_style được mã hóa bằng 1 Nếu chúng ta nhìn vào cột “body_style”, chúng ta sẽ nhận thấy rằng nó không có bất kỳ thứ tự nào. Nếu chúng tôi thực hiện mã hóa nhãn trên đó, chúng tôi sẽ thấy rằng cột được xếp hạng dựa trên bảng chữ cái. Do thứ tự này, mô hình có thể nắm bắt một số mối quan hệ giả định Mã hóa một lần nóngChúng tôi thường sử dụng mã hóa một lần nóng để giải quyết nhược điểm của mã hóa nhãn. Chiến lược là chuyển đổi từng danh mục thành một cột và gán giá trị 1 hoặc 0 cho nó. Đó là một quá trình tạo ra các biến giả Hãy xem cách chúng ta có thể triển khai nó trong Python #identify all categorical variables cat_columns = df.select_dtypes(['object']).columns #convert all categorical variables to numeric df[cat_columns] = df[cat_columns].apply(lambda x: pd.factorize(x)[0])0 #identify all categorical variables cat_columns = df.select_dtypes(['object']).columns #convert all categorical variables to numeric df[cat_columns] = df[cat_columns].apply(lambda x: pd.factorize(x)[0])1 Chúng ta có thể thấy từ bảng trên rằng tất cả các danh mục duy nhất đã được chỉ định một cột mới. Nếu có một danh mục, chúng tôi có 1 trong cột và 0 cho những người khác Vì dữ liệu thưa thớt nên nó dẫn đến bẫy biến giả vì kết quả của một biến có thể được dự đoán với sự trợ giúp của các biến còn lại. Sự cố này xảy ra khi các biến có tương quan cao với nhau. Nó cũng dẫn đến một vấn đề cộng tuyến gây ra các vấn đề trong các mô hình hồi quy khác nhau Có một vấn đề khác với phương pháp này. nếu có nhiều danh mục duy nhất và chúng tôi muốn mã hóa chúng, chúng tôi sẽ có nhiều cột bổ sung. Điều này cuối cùng sẽ làm tăng độ phức tạp và thời gian của mô hình vì sẽ mất nhiều thời gian hơn để phân tích mối quan hệ giữa các biến Chuyển đổi dữ liệu phân loại thành dữ liệu số bằng PandasSau đây là các phương pháp được sử dụng để chuyển đổi dữ liệu phân loại thành dữ liệu số bằng Pandas Phương pháp 1. Sử dụng get_dummies()cú pháp #identify all categorical variables cat_columns = df.select_dtypes(['object']).columns #convert all categorical variables to numeric df[cat_columns] = df[cat_columns].apply(lambda x: pd.factorize(x)[0])2 nguồn hình ảnh. GeekforGeek #identify all categorical variables cat_columns = df.select_dtypes(['object']).columns #convert all categorical variables to numeric df[cat_columns] = df[cat_columns].apply(lambda x: pd.factorize(x)[0])3 nguồn hình ảnh. GeekforGeek Phương pháp 2. Sử dụng thay thế()cú pháp #identify all categorical variables cat_columns = df.select_dtypes(['object']).columns #convert all categorical variables to numeric df[cat_columns] = df[cat_columns].apply(lambda x: pd.factorize(x)[0])4 Chuyển đổi cùng một dữ liệu bằng một cách tiếp cận khác nguồn hình ảnh. GeekforGeek #identify all categorical variables cat_columns = df.select_dtypes(['object']).columns #convert all categorical variables to numeric df[cat_columns] = df[cat_columns].apply(lambda x: pd.factorize(x)[0])5 nguồn hình ảnh. GeekforGeek Chuyển đổi dữ liệu phân loại thành dữ liệu số trong Scikit-learning có thể được thực hiện theo các cách sau Phương pháp 1. mã hóa nhãnHãy triển khai điều này trên các dữ liệu khác nhau và xem nó hoạt động như thế nào 0nguồn hình ảnh. GeekforGeek 1 2nguồn hình ảnh. GeekforGeek Phương pháp 2. Mã hóa một lần nóng 3Sử dụng kỹ thuật mã hóa nào?Để biết khi nào nên sử dụng kỹ thuật mã hóa nào, chúng ta cần hiểu rõ dữ liệu của mình. Sau đó chúng ta cần quyết định áp dụng mô hình nào Ví dụ: nếu có hơn 15 tính năng phân loại và chúng tôi quyết định sử dụng thuật toán máy vectơ hỗ trợ (SVM), thời gian đào tạo có thể tăng lên do SVM chậm. Cung cấp cho nó nhiều tính năng riêng biệt làm tăng thêm độ phức tạp và thời gian đào tạo của mô hình Dưới đây là một số điểm chính cần lưu ý khi chọn kỹ thuật mã hóa Sử dụng phương pháp tìm và thay thế
Sử dụng mã hóa một lần nóng
Sử dụng mã hóa nhãn
Chúng tôi đã khám phá nhiều cách khác nhau để mã hóa dữ liệu phân loại cùng với các vấn đề của chúng và các trường hợp sử dụng phù hợp. Tóm lại, mã hóa là một phần quan trọng và không thể tránh khỏi của kỹ thuật tính năng. Điều quan trọng là phải biết những ưu điểm và hạn chế của tất cả các phương pháp được sử dụng để mô hình có thể học đúng cách Làm cách nào để chuyển đổi dữ liệu phân loại thành dữ liệu số trong Python Pandas?Mục lục . Các cách để mã hóa các biến phân loại 1. 1. Tìm và thay thế 1. 2. mã hóa nhãn 1. 3. Mã hóa một lần nóng Chuyển đổi dữ liệu phân loại thành dữ liệu số bằng Pandas 2. 1. Phương pháp 1. Sử dụng get_dummies() 2. 2. Phương pháp 2. Sử dụng thay thế() Chuyển đổi dữ liệu phân loại thành dữ liệu số bằng Scikit-learning Các kỹ thuật mã hóa khác nhau để chuyển đổi dữ liệu phân loại thành dữ liệu số là gì?Có nhiều cách để chuyển đổi dữ liệu phân loại thành dữ liệu số. Ở đây trong bài viết này, chúng ta sẽ thảo luận về hai phương pháp được sử dụng nhiều nhất là. Mã hóa biến giả . mã hóa nhãn.
Làm cách nào để chuyển đổi dữ liệu phân loại thành dữ liệu số trong pyspark?Trong pyspark, có hai phương thức mà chúng ta có thể sử dụng cho quá trình chuyển đổi. Trình lập chỉ mục chuỗi và OneHotEncoder . Khi một tính năng chỉ chứa hai danh mục/nhóm, trong trường hợp đó, chúng ta có thể áp dụng trực tiếp phương thức StringIndexer để chuyển đổi.
Phương pháp nào sau đây được sử dụng để chuyển đổi dữ liệu phân loại thành các giá trị số?Mã hóa nhị phân
. |