[英]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.