def test_fit_custom_kernel(self): alphas = numpy.exp(numpy.linspace(numpy.log(0.001), numpy.log(0.5), 5)) svm_grid = ParameterGrid({"alpha": alphas}) transform = ClinicalKernelTransform(fit_once=True) transform.prepare(self.x) base_estimators = [] for i, params in enumerate(svm_grid): model = FastSurvivalSVM(max_iter=100, random_state=0, **params) base_estimators.append(("svm_linear_%d" % i, model)) for i, params in enumerate(svm_grid): model = FastKernelSurvivalSVM(kernel=transform.pairwise_kernel, max_iter=45, tol=1e-5, random_state=0, **params) base_estimators.append(("svm_kernel_%d" % i, model)) cv = KFold(n_splits=3, shuffle=True, random_state=0) meta = EnsembleSelection(base_estimators, n_estimators=0.4, scorer=score_cindex, cv=cv, n_jobs=4) meta.fit(self.x.values, self.y) self.assertEqual(len(meta), 10) self.assertTupleEqual(meta.scores_.shape, (10,)) p = meta.predict(self.x.values) score = concordance_index_censored(self.y['fstat'], self.y['lenfol'], p) expected_score = numpy.array([0.7978084, 59938, 15178, 33, 119]) assert_array_almost_equal(score, expected_score)
def test_call_function(self): t = ClinicalKernelTransform(fit_once=True) t.prepare(self.data) mat = t(t.X_fit_, t.X_fit_) expected = _get_expected_matrix() assert_array_almost_equal(expected, mat, 4)
def test_fit_custom_kernel(make_whas500): whas500 = make_whas500(with_mean=False, with_std=False, to_numeric=True) alphas = numpy.exp(numpy.linspace(numpy.log(0.001), numpy.log(0.5), 5)) svm_grid = ParameterGrid({"alpha": alphas}) transform = ClinicalKernelTransform(fit_once=True) transform.prepare(whas500.x_data_frame) base_estimators = [] for i, params in enumerate(svm_grid): model = FastSurvivalSVM(max_iter=100, random_state=0, **params) base_estimators.append(("svm_linear_%d" % i, model)) for i, params in enumerate(svm_grid): model = FastKernelSurvivalSVM(kernel=transform.pairwise_kernel, max_iter=45, tol=1e-5, random_state=0, **params) base_estimators.append(("svm_kernel_%d" % i, model)) cv = KFold(n_splits=3, shuffle=True, random_state=0) meta = EnsembleSelection(base_estimators, n_estimators=0.4, scorer=score_cindex, cv=cv, n_jobs=4) meta.fit(whas500.x, whas500.y) assert len(meta) == 10 assert meta.scores_.shape == (10,) p = meta.predict(whas500.x) assert_cindex_almost_equal(whas500.y['fstat'], whas500.y['lenfol'], p, (0.7978084, 59938, 15178, 33, 119))
def test_call_function(make_data): data, expected = make_data() t = ClinicalKernelTransform(fit_once=True) t.prepare(data) mat = t(t.X_fit_, t.X_fit_) assert_array_almost_equal(expected, mat, 4)
def test_prepare(self): t = ClinicalKernelTransform(fit_once=True) t.prepare(self.data) copy = clone(t).fit(t.X_fit_) mat = copy.transform(t.X_fit_[:4, :]) expected = _get_expected_matrix() assert_array_almost_equal(expected[:4, :], mat, 4)
def test_call_function_x_and_y(self): t = ClinicalKernelTransform(fit_once=True) t.prepare(self.data) mat = t(t.X_fit_[:3, :], t.X_fit_[3:, :]) m = _get_expected_matrix() expected = m[:3:, 3:] assert_array_almost_equal(expected, mat, 4)
def test_prepare(make_data): data, expected = make_data() t = ClinicalKernelTransform(fit_once=True) t.prepare(data) copy = clone(t).fit(t.X_fit_) mat = copy.transform(t.X_fit_[:4, :]) assert_array_almost_equal(expected[:4, :], mat, 4)
def test_call_function_x_and_y(make_data): data, m = make_data() t = ClinicalKernelTransform(fit_once=True) t.prepare(data) mat = t(t.X_fit_[:3, :], t.X_fit_[3:, :]) expected = m[:3:, 3:] assert_array_almost_equal(expected, mat, 4)
def test_prepare_error_dtype(): t = ClinicalKernelTransform(fit_once=True) data = pandas.DataFrame({"age": [12, 61, 18, 21, 57, 17], "date": numpy.array( ["2016-01-01", "1954-06-30", "1999-03-01", "2005-02-25", "2112-12-31", "1731-09-16"], dtype='datetime64')}) with pytest.raises(TypeError, match=r'unsupported dtype: dtype\(.+\)'): t.prepare(data)
def test_prepare_error_fit_once(make_data): data = make_data() t = ClinicalKernelTransform(fit_once=False) with pytest.raises( ValueError, match= "prepare can only be used if fit_once parameter is set to True" ): t.prepare(data)
def test_kernel_transform_x_and_y(self): t = ClinicalKernelTransform(fit_once=True) t.prepare(self.data) x_num = t.X_fit_.copy() t.fit(x_num[:3, :]) mat = t.transform(x_num[3:, :]) m = _get_expected_matrix() expected = m[:3, 3:].T assert_array_almost_equal(expected, mat, 4)
def test_kernel_transform_x_and_y(make_data): data, m = make_data() t = ClinicalKernelTransform(fit_once=True) t.prepare(data) x_num = t.X_fit_.copy() t.fit(x_num[:3, :]) mat = t.transform(x_num[3:, :]) expected = m[:3, 3:].T assert_array_almost_equal(expected, mat, 4)
def test_prepare_error_type(): t = ClinicalKernelTransform(fit_once=True) with pytest.raises(TypeError, match='X must be a pandas DataFrame'): t.prepare([[0, 1], [1, 2], [4, 3], [6, 5]])