저는 파이썬에서 클래스를 사용하는 것에 익숙하지 않으며 루프에서 클래스를 사용하는 방법/리소스를 참조 할 수있는 몇 가지 지침을 사용할 수 있습니다.루프 - 파이썬에서 클래스 사용하기
샘플 데이터 : 여기
df = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'))
df2 = pd.DataFrame(np.random.randint(0, 1, size=(100, 1)), columns=list('E'))
df['E']= df2
는 클래스 외부의 코드입니다 :
styles = [1, 3, 7]
def train_model(X, y):
clf = LogisticRegression(random_state=0, C=1, penalty='l1')
clf.fit(X, y)
for value in styles:
X = df[['A',
'B',
'C']][df['D']==value]
y = df['E'][df['D']==value]
train_model(X, y)
내가 지금처럼 클래스로이 번역해야합니다
class BaseTrainer(object):
""" Abstract class to define run order """
def run(self):
self.import_training_data()
for value in [1, 3, 7]:
self.extract_variables(value)
self.train_model()
# I think there's a better way to do this
if value = 1:
pickle_model(self.model, self.model_file)
if value = 3:
pickle_model(self.model, self.model_file2)
if value = 7:
pickle_model(self.model, self.model_file3)
class ModelTrainer(BaseTrainer):
""" Class to train model for predicting Traits of Customers """
def __init__(self):
self.model_file = '/wayfair/mnt/crunch_buckets/central/data_science/customer_style/train_modern.pkl'
self.model_file2 = '/wayfair/mnt/crunch_buckets/central/data_science/customer_style/train_traditional.pkl'
self.model_file3 = '/wayfair/mnt/crunch_buckets/central/data_science/customer_style/train_rustic.pkl'
def import_training_data(self):
_execute_vertica_query('get_training_data')
self.df = _read_data('training_data.csv')
self.df.columns = [['CuID', 'StyID', 'StyName',
'Filter', 'PropItemsViewed', 'PropItemsOrdered', 'DaysSinceView']]
def extract_variables(self, value):
# Take subset of columns for training purposes (remove CuID, Segment)
self.X = self.df[['PropItemsViewed', 'PropItemsOrdered',
'DaysSinceView']][df['StyID']==value]
y = self.df[['Filter']][df['StyID']==value]
self.y = y.flatten()
def train_model(self):
self.model = LogisticRegression(C=1, penalty='l1')
self.model.fit(self.X, self.y)
나는 생각한다 그것을 구조화하거나 스타일 목록의 세 가지 다른 값을 통해 실행하는 더 좋은 방법이 있어야합니다. 그러나 나는 이것을 개선하기 위해 무엇을 찾아야할지조차 모른다. 어떤 제안, 포인터, 등 감사하겠습니다!
대단합니다. 고마워요! – user2573355