簡體   English   中英

如何使用方法返回/計算屬性?

[英]How do I use a method to return / calculate an attribute?

我想做類似的事情:

class Model:
    def __init__(self, X, y):
        self.X = X
        self.y = y
        self.X_train = self.split_scale_data(X,y)[0]
        self.X_test = self.split_scale_data(X,y)[1]

    def split_scale_data(self, X, y):
        X_train, X_test, y_train, y_test = train_test_split(X, y)
        scaler = MinMaxScaler()
        X_train_scaled = scaler.fit_transform(X_train)
        X_test_scaled = scaler.transform(X_test)
        return self.X_train, self.X_test

但是我無法讓它起作用,並且我無法在網上找到任何有人使用方法來計算屬性的示例。 我收到屬性錯誤:“模型”對象沒有屬性“X_train”。 我錯過了什么嗎?

您的方法split_scale_data返回以下內容

return self.X_train, self.X_test

但它應該從該方法返回局部變量

return X_train, X_test

順便說一句,您還可以修改__init__方法以將此方法用作

self.X_train, self.X_test = self.split_scale_data(X,y)

您正在返回未定義的屬性

return self.X_train, self.X_test

和這里的錯誤。 你應該把它改成

return X_train, X_test

但是,對於您的用例,可能值得使用類方法並保持__init__簡單。

class Model:
    def __init__(self, X, y, X_train, X_test):
        self.X = X
        self.y = y
        self.X_train = X_train
        self.X_test = X_test

    @classmethod
    def from_data(cls, X, y):
       ...
       return cls(X, y, X_train, X_test)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM