def build(self, factor_values, out): assert self.total_columns == out.shape[1] out[:] = 1 for i, column_idxs in enumerate(odometer_iter(self._columns_per_factor)): for factor, column_idx in zip(self._factors, column_idxs): if factor in self._cat_contrasts: contrast = self._cat_contrasts[factor] out[:, i] *= contrast.matrix[factor_values[factor].ravel(), column_idx] else: assert (factor_values[factor].shape[1] == self._num_columns[factor]) out[:, i] *= factor_values[factor][:, column_idx]
def build(self, factor_values, out): assert self.total_columns == out.shape[1] out[:] = 1 for i, column_idxs in enumerate(odometer_iter( self._columns_per_factor)): for factor, column_idx in zip(self._factors, column_idxs): if factor in self._cat_contrasts: contrast = self._cat_contrasts[factor] out[:, i] *= contrast.matrix[factor_values[factor].ravel(), column_idx] else: assert (factor_values[factor].shape[1] == self._num_columns[factor]) out[:, i] *= factor_values[factor][:, column_idx]
def build(self, factor_values, out): assert self.total_columns == out.shape[1] out[:] = 1 for i, column_idxs in enumerate(odometer_iter(self._columns_per_factor)): for factor, column_idx in zip(self._factors, column_idxs): if factor in self._cat_contrasts: contrast = self._cat_contrasts[factor] out[:, i] *= contrast.matrix[factor_values[factor].ravel(), column_idx] else: if not isinstance(factor_values[factor], Series): assert (factor_values[factor].shape[1] == self._num_columns[factor]) out[:, i] *= factor_values[factor][:, column_idx] #TODO: is this working right for DFs? else: out[:, i] *= factor_values[factor]
def column_names(self): if not self._factors: return ["Intercept"] column_names = [] for i, column_idxs in enumerate(odometer_iter(self._columns_per_factor)): name_pieces = [] for factor, column_idx in zip(self._factors, column_idxs): if factor in self._num_columns: if self._num_columns[factor] > 1: name_pieces.append("%s[%s]" % (factor.name(), column_idx)) else: assert column_idx == 0 name_pieces.append(factor.name()) else: contrast = self._cat_contrasts[factor] suffix = contrast.column_suffixes[column_idx] name_pieces.append("%s%s" % (factor.name(), suffix)) column_names.append(":".join(name_pieces)) assert len(column_names) == self.total_columns return column_names
def column_names(self): if not self._factors: return ["Intercept"] column_names = [] for i, column_idxs in enumerate(odometer_iter( self._columns_per_factor)): name_pieces = [] for factor, column_idx in zip(self._factors, column_idxs): if factor in self._num_columns: if self._num_columns[factor] > 1: name_pieces.append("%s[%s]" % (factor.name(), column_idx)) else: assert column_idx == 0 name_pieces.append(factor.name()) else: contrast = self._cat_contrasts[factor] suffix = contrast.column_suffixes[column_idx] name_pieces.append("%s%s" % (factor.name(), suffix)) column_names.append(":".join(name_pieces)) assert len(column_names) == self.total_columns return column_names