Hướng dẫn remove outliers python stack overflow - loại bỏ tràn ngăn xếp python ngoại lệ

Bạn đang gặp rắc rối với mã của mình vì bạn đang cố gắng tính toán zscore trên các cột phân loại.

Để tránh điều này, trước tiên bạn nên tách tàu của mình thành các phần với các tính năng số và phân loại:

num_train = train.select_dtypes(include=["number"])
cat_train = train.select_dtypes(exclude=["number"])

và chỉ sau đó tính toán chỉ số của các hàng để giữ:

idx = np.all(stats.zscore(num_train) < 3, axis=1)

Và cuối cùng thêm hai mảnh lại với nhau:

train_cleaned = pd.concat([num_train.loc[idx], cat_train.loc[idx]], axis=1)

Cho phần IQR:

Q1 = num_train.quantile(0.02)
Q3 = num_train.quantile(0.98)
IQR = Q3 - Q1
idx = ~((num_train < (Q1 - 1.5 * IQR)) | (num_train > (Q3 + 1.5 * IQR))).any(axis=1)
train_cleaned = pd.concat([num_train.loc[idx], cat_train.loc[idx]], axis=1)

Xin vui lòng cho chúng tôi biết nếu bạn có thêm câu hỏi.

PS

Đồng thời, bạn có thể xem xét thêm một cách tiếp cận để xử lý các ngoại lệ bằng pandas.dataframe.clip, sẽ cắt các ngoại lệ trên cơ sở từng trường hợp thay vì thả hoàn toàn một hàng.

$ \ beingroup $

Tôi đã tự hỏi những gì là thực hành tốt nhất để loại bỏ các ngoại lệ khỏi dữ liệu. Vẽ vẽ một boxplot cho mỗi tính năng (cột của bộ dữ liệu) và loại bỏ dữ liệu nằm ngoài râu có vẻ như là một cách tiếp cận ngây thơ và có vấn đề. Ví dụ: giả sử bạn có nhiều cá nhân có nhãn 'giới tính' và nhãn 'thu nhập'. Cũng cho rằng có nhiều người đàn ông trong bộ dữ liệu hơn phụ nữ. Thật không may, do sự chênh lệch về thu nhập, chúng ta có thể thấy rằng phụ nữ nhận được mức lương thấp hơn nam giới, vì vậy nếu chúng ta chỉ đơn giản là vẽ một boxplot trên tính năng thu nhập và loại bỏ các ngoại lệ, chúng ta sẽ không tính đến một số trong những điều đó đến từ Nhóm khác nhau (và hơn nữa, giả định của nhiều đàn ông hơn phụ nữ có nghĩa là chúng ta có thể sẽ loại bỏ rất nhiều phụ nữ khỏi bộ dữ liệu).

Có vẻ như một cách tiếp cận tốt hơn sẽ là loại bỏ các ngoại lệ trên cơ sở từng nhóm, tức là, thực hiện phân tích ngoại lệ trên các cá nhân có chung các "định danh" các loại. Có cách nào để làm điều này trong Python không?

Tôi vẫn đang học khoa học dữ liệu vì vậy tôi chắc chắn rằng điều này có một thuật ngữ mà tôi không biết. Bất kỳ cái nhìn sâu sắc hoặc liên kết đến các nguồn lực tốt sẽ được đánh giá rất cao.

Đã hỏi ngày 23 tháng 1 lúc 17:34Jan 23 at 17:34

$ \ endgroup $

$ \ beingroup $

Vâng, vấn đề mất cân bằng thực sự là chính hãng trong khi xử lý trước. Không có quy tắc cứng và nhanh để loại bỏ các ngoại lệ, nhưng các phương pháp chung (phần trăm, boxplot, z-score, v.v.). Giống như giới tính, nếu bạn lấy tiền lương của tất cả các nhân viên thì việc loại bỏ các ngoại lệ có nghĩa là loại bỏ tất cả các nhân viên được trả lương cao. Điều đó sẽ làm cho mô hình của bạn tìm hiểu thêm về các nhà tuyển dụng trung bình/trung bình (xử lý ngoại lệ). Nhưng sau đó nếu bạn giữ chúng, chúng sẽ ảnh hưởng và mô hình sẽ tìm hiểu ít hơn về nhân viên lương trung bình.

Các giải pháp thường dễ bị khách quan và đào tạo mà chúng tôi muốn đưa ra. Sau khi xử lý trước, sự mất cân bằng (như giới tính) trong dữ liệu có thể được bù bằng cách lấy mẫu hoặc lấy mẫu. (Chúng ta có thể nhận được nhiều dữ liệu hơn: đừng lo lắng về điều đó). Nhưng hãy chắc chắn trước khi bỏ bất kỳ dữ liệu nào có sẵn !! Lấy một vài cột (tính năng tương tự) tại một thời điểm để xử lý và xử lý chúng, thay vì áp dụng một hoạt động chung trong các nhóm, thường có thể hoạt động.

https://machinelearningmastery.com/tactics-to-combat-imbalanced-classes-in-your-machine-learning-dataset/

https://towardsdatascience.com/a-brief-overview-of-outlier-detection-techniques-1e0b2c19e561 Những thứ này có thể hữu ích.

Đã trả lời ngày 23 tháng 1 lúc 20:29Jan 23 at 20:29

Hướng dẫn remove outliers python stack overflow - loại bỏ tràn ngăn xếp python ngoại lệ

$ \ endgroup $

$ \ beingroup $

Vâng, vấn đề mất cân bằng thực sự là chính hãng trong khi xử lý trước. Không có quy tắc cứng và nhanh để loại bỏ các ngoại lệ, nhưng các phương pháp chung (phần trăm, boxplot, z-score, v.v.). Giống như giới tính, nếu bạn lấy tiền lương của tất cả các nhân viên thì việc loại bỏ các ngoại lệ có nghĩa là loại bỏ tất cả các nhân viên được trả lương cao. Điều đó sẽ làm cho mô hình của bạn tìm hiểu thêm về các nhà tuyển dụng trung bình/trung bình (xử lý ngoại lệ). Nhưng sau đó nếu bạn giữ chúng, chúng sẽ ảnh hưởng và mô hình sẽ tìm hiểu ít hơn về nhân viên lương trung bình.

Các giải pháp thường dễ bị khách quan và đào tạo mà chúng tôi muốn đưa ra. Sau khi xử lý trước, sự mất cân bằng (như giới tính) trong dữ liệu có thể được bù bằng cách lấy mẫu hoặc lấy mẫu. (Chúng ta có thể nhận được nhiều dữ liệu hơn: đừng lo lắng về điều đó). Nhưng hãy chắc chắn trước khi bỏ bất kỳ dữ liệu nào có sẵn !! Lấy một vài cột (tính năng tương tự) tại một thời điểm để xử lý và xử lý chúng, thay vì áp dụng một hoạt động chung trong các nhóm, thường có thể hoạt động.Apr 8 at 18:35

$ \ endgroup $

3

Làm thế nào để bạn loại bỏ các ngoại lệ trong Python?

Loại bỏ các ngoại lệ..
Tính toán tứ phân vị thứ nhất và thứ ba (Q1 và Q3) ..
Hơn nữa, đánh giá phạm vi liên vùng, IQR = Q3-Q1 ..
Ước tính giới hạn dưới, giới hạn dưới = Q1*1.5 ..
Ước tính giới hạn trên, giới hạn trên = Q3*1.5 ..
Thay thế các điểm dữ liệu nằm bên ngoài phía dưới và giới hạn trên bằng giá trị null ..

Làm thế nào để bạn làm mịn các ngoại lệ?

Làm mịn dữ liệu có thể được định nghĩa là một cách tiếp cận thống kê của việc loại bỏ các ngoại lệ khỏi các bộ dữ liệu để làm cho các mẫu đáng chú ý hơn.Phương pháp ngẫu nhiên, trung bình di chuyển đơn giản, đi bộ ngẫu nhiên, hàm mũ đơn giản và trung bình di chuyển theo cấp số nhân là một số phương pháp được sử dụng để làm mịn dữ liệu.random method, simple moving average, random walk, simple exponential, and exponential moving average are some of the methods used for data smoothing.

Tôi có nên loại bỏ các ngoại lệ trước khi chia không?

Nếu bạn quyết định loại bỏ các ngoại lệ.Vui lòng loại bỏ chúng trước khi chia tách (thậm chí không chỉ trước khi chia tách, tốt hơn là thực hiện toàn bộ phân tích (thử nghiệm chỉ số, trực quan hóa) sau khi loại bỏ chúng, bạn có thể tìm thấy những điều thú vị bằng cách làm điều này).Please remove them before the split(even not only before a split, it's better to do the entire analysis(stat-testing, visualization) again after removing them, you may find interesting things by doing this).

Tôi có thể xóa các ngoại lệ không?

Tốt nhất là loại bỏ các ngoại lệ chỉ khi bạn có một lý do hợp lý để làm như vậy.Một số ngoại lệ đại diện cho các biến thể tự nhiên trong dân số và chúng nên được để lại như trong bộ dữ liệu của bạn.Chúng được gọi là ngoại lệ thực sự.. Some outliers represent natural variations in the population, and they should be left as is in your dataset. These are called true outliers.