See https://github.com/CamDavidsonPilon/lifelines/issues/664

def _create_initial_point(self, Ts, E, entries, weights, Xs):
        """
        See https://github.com/CamDavidsonPilon/lifelines/issues/664
        """
        import lifelines  # kinda hacky but lol

        def transform_ith_param(model, i):
            param = model._fitted_parameters_[i]
            if param <= 0:
                return param
            # technically this is suboptimal for log normal mu, but that's okay.
            return np.log(param)

        name = self.__class__.__name__.replace("AFT", "")
        uni_model = getattr(lifelines, name)()

        if self._censoring_type == CensoringType.RIGHT:
            uni_model.fit_right_censoring(Ts[0], event_observed=E, entry=entries, weights=weights)
        elif self._censoring_type == CensoringType.INTERVAL:
            uni_model.fit_interval_censoring(Ts[0], Ts[1], event_observed=E, entry=entries, weights=weights)
        elif self._censoring_type == CensoringType.LEFT:
            uni_model.fit_left_censoring(Ts[1], event_observed=E, entry=entries, weights=weights)

        # we may use this later in print_summary
        self._ll_null_ = uni_model._log_likelihood

        return np.concatenate(
            [
                # tack on as the intercept
                [0] * (_X.shape[1] - 1) + [transform_ith_param(uni_model, i)]
                for i, _X in enumerate(Xs)
            ]
        )