Tôi muốn tạo biến áp của riêng mình để sử dụng với đường ống sklearn. Do đó tôi đang tạo ra một lớp thực hiện cả hai phương thức phù hợp và biến đổi. Mục đích của máy biến áp sẽ là loại bỏ các hàng khỏi ma trận có nhiều hơn một số lượng NaN được chỉ định. Vì vậy, vấn đề tôi đang phải đối mặt là làm thế nào tôi có thể thay đổi cả hai ma trận X và y được truyền cho máy biến áp? Tôi tin rằng điều này phải được thực hiện theo phương pháp phù hợp vì nó có quyền truy cập cả X và y. Kể từ khi python vượt qua các đối số bằng cách gán một khi tôi gán lại X cho một ma trận mới với ít hàng hơn, tham chiếu đến X ban đầu bị mất (và tất nhiên điều này cũng đúng với y). Có thể duy trì tham chiếu này không?Biến áp tùy chỉnh cho sklearn Đường ống làm thay đổi cả X và y
Tôi đang sử dụng gấu trúc DataFrame để dễ dàng xóa các hàng có quá nhiều NaN, đây có thể không phải là cách phù hợp để thực hiện việc này cho trường hợp sử dụng của tôi. mã hiện trông như thế này:
class Dropna():
# thresh is max number of NaNs allowed in a row
def __init__(self, thresh=0):
self.thresh = thresh
def fit(self, X, y):
total = X.shape[1]
# +1 to account for 'y' being added to the dframe
new_thresh = total + 1 - self.thresh
df = pd.DataFrame(X)
df['y'] = y
df.dropna(thresh=new_thresh, inplace=True)
X = df.drop('y', axis=1).values
y = df['y'].values
return self
def transform(self, X):
return X
Đây là trên todo. –
A [liên kết có liên quan] (https://github.com/scikit-learn/scikit-learn/issues/3855) với todo được đề cập bởi @AndreasMueller. – zaxliu