def test_max_iter(gbsg2):
        x, y = gbsg2
        x = scale(x)
        m = MinlipSurvivalAnalysis(solver="cvxopt", alpha=1, kernel="polynomial",
                                   degree=2, pairs="next", max_iter=5)

        with pytest.warns(ConvergenceWarning,
                          match=r"cvxopt solver did not converge: unknown \(duality gap = [.0-9]+\)"):
            m.fit(x, y)
Exemplo n.º 2
0
    def test_breast_cancer_cvxpy(gbsg2):
        x, y = gbsg2
        m = MinlipSurvivalAnalysis(solver="cvxpy", alpha=1, pairs="next")
        m.fit(x, y)

        assert (1, x.shape[0]) == m.coef_.shape

        p = m.predict(x)
        assert_cindex_almost_equal(y['cens'], y['time'], p,
                                   (0.59576770470121443, 79280, 53792, 0, 32))
Exemplo n.º 3
0
    def test_breast_cancer_osqp(gbsg2):
        x, y = gbsg2
        x = scale(x)
        m = MinlipSurvivalAnalysis(solver="osqp", alpha=1, pairs="next")
        m.fit(x, y)

        assert (1, x.shape[0]) == m.coef_.shape

        p = m.predict(x)
        assert_cindex_almost_equal(y['cens'], y['time'], p,
                                   (0.599066670674522, 79719, 53353, 0, 42))
Exemplo n.º 4
0
    def test_breast_cancer_ecos(gbsg2):
        x, y = gbsg2
        x = scale(x)
        m = MinlipSurvivalAnalysis(solver="ecos", alpha=1, pairs="next")
        m.fit(x, y)

        assert (1, x.shape[0]) == m.coef_.shape

        p = m.predict(x)
        assert_cindex_almost_equal(y['cens'], y['time'], p,
                                   (0.5990741854033906, 79720, 53352, 0, 42))
Exemplo n.º 5
0
    def test_breast_cancer_cvxpy(self):
        m = MinlipSurvivalAnalysis(solver="cvxpy", alpha=1, pairs="next")
        m.fit(self.x.values, self.y)

        self.assertTupleEqual((1, self.x.shape[0]), m.coef_.shape)

        p = m.predict(self.x.values)
        v = concordance_index_censored(self.y['cens'], self.y['time'], p)
        expected = numpy.array([0.59576770470121443, 79280, 53792, 0, 32])

        assert_array_almost_equal(expected, v)
    def test_breast_cancer_rbf_cvxpy(gbsg2):
        x, y = gbsg2
        x = scale(x)
        m = MinlipSurvivalAnalysis(solver="cvxpy", alpha=1, kernel="rbf",
                                   gamma=1./8, pairs="next", max_iter=1000)
        m.fit(x, y)

        assert (1, x.shape[0]) == m.coef_.shape

        p = m.predict(x)
        assert_cindex_almost_equal(y['cens'], y['time'], p,
                                   (0.6105867500300589, 81252, 51820, 0, 42))
Exemplo n.º 7
0
 def test_max_iter(self):
     x = scale(self.x.values)
     m = MinlipSurvivalAnalysis(solver="cvxopt", alpha=1, kernel="polynomial",
                                degree=2, pairs="next", max_iter=5)
     with warnings.catch_warnings(record=True) as w:
         # Cause all warnings to always be triggered.
         warnings.simplefilter("always")
         m.fit(x, self.y)
         self.assertEqual(len(w), 1)
         self.assertTrue(issubclass(w[0].category, ConvergenceWarning))
         self.assertRegex(str(w[0].message),
                          r"cvxopt solver did not converge: unknown \(duality gap = [.0-9]+\)")
Exemplo n.º 8
0
    def test_max_iter(gbsg2):
        x, y = gbsg2
        x = scale(x)
        m = MinlipSurvivalAnalysis(solver="osqp",
                                   alpha=1,
                                   kernel="polynomial",
                                   degree=2,
                                   pairs="next",
                                   max_iter=5)

        with pytest.warns(
                ConvergenceWarning,
                match=
                r"OSQP solver did not converge: maximum iterations reached"):
            m.fit(x, y)
Exemplo n.º 9
0
    def test_breast_cancer_rbf_osqp(gbsg2):
        x, y = gbsg2
        x = scale(x)
        m = MinlipSurvivalAnalysis(solver="osqp",
                                   alpha=1,
                                   kernel="rbf",
                                   gamma=1. / 8,
                                   pairs="next",
                                   max_iter=1000)
        m.fit(x, y)

        assert (1, x.shape[0]) == m.coef_.shape

        p = m.predict(x)
        assert_cindex_almost_equal(y['cens'], y['time'], p,
                                   (0.6106168089455333, 81256, 51816, 0, 42))
Exemplo n.º 10
0
    def test_breast_cancer_rbf_cvxpy(self):
        x = scale(self.x.values)
        m = MinlipSurvivalAnalysis(solver="cvxpy", alpha=1, kernel="rbf",
                                   gamma=32, pairs="next", max_iter=1000)
        m.fit(x, self.y)

        self.assertTupleEqual((1, self.x.shape[0]), m.coef_.shape)

        p = m.predict(x)
        v = concordance_index_censored(self.y['cens'], self.y['time'], p)

        self.assertGreaterEqual(v[0], 0.6402849585186966)
        self.assertGreaterEqual(v[1], 85203)
        self.assertLessEqual(v[2], 47869)
        self.assertEqual(0, v[3])
        self.assertEqual(32, v[4])
Exemplo n.º 11
0
    def test_kernel_precomputed(gbsg2):
        x, y = gbsg2
        from sklearn.metrics.pairwise import pairwise_kernels
        from sklearn.utils.metaestimators import _safe_split

        m = MinlipSurvivalAnalysis(kernel="precomputed", solver="ecos")
        K = pairwise_kernels(x, metric="rbf", gamma=1. / 32)

        train_idx = numpy.arange(50, x.shape[0])
        test_idx = numpy.arange(50)
        X_fit, y_fit = _safe_split(m, K, y, train_idx)
        X_test, y_test = _safe_split(m, K, y, test_idx, train_idx)

        m.fit(X_fit, y_fit)

        p = m.predict(X_test)
        assert_cindex_almost_equal(y_test['cens'], y_test['time'], p,
                                   (0.626514131897712, 457, 269, 17, 0))
Exemplo n.º 12
0
    def test_kernel_precomputed(self):
        from sklearn.metrics.pairwise import pairwise_kernels
        from sklearn.utils.metaestimators import _safe_split

        m = MinlipSurvivalAnalysis(kernel="precomputed", solver="cvxpy")
        K = pairwise_kernels(self.x, metric="rbf")

        train_idx = numpy.arange(50, self.x.shape[0])
        test_idx = numpy.arange(50)
        X_fit, y_fit = _safe_split(m, K, self.y, train_idx)
        X_test, y_test = _safe_split(m, K, self.y, test_idx, train_idx)

        m.fit(X_fit, y_fit)

        p = m.predict(X_test)
        v = concordance_index_censored(y_test['cens'], y_test['time'], p)

        expected = numpy.array([0.508748, 378, 365, 0, 0])

        assert_array_almost_equal(expected, v)
Exemplo n.º 13
0
    def test_kernel_precomputed(gbsg2):
        x, y = gbsg2
        from sklearn.metrics.pairwise import pairwise_kernels
        from sklearn.utils.metaestimators import _safe_split

        m = MinlipSurvivalAnalysis(kernel="precomputed",
                                   solver="osqp",
                                   max_iter=25000)
        xt = scale(x)
        K = pairwise_kernels(xt, metric="rbf", gamma=0.1)

        train_idx = numpy.arange(200, x.shape[0])
        test_idx = numpy.arange(200)
        X_fit, y_fit = _safe_split(m, K, y, train_idx)
        X_test, y_test = _safe_split(m, K, y, test_idx, train_idx)

        m.fit(X_fit, y_fit)

        p = m.predict(X_test)
        assert_cindex_almost_equal(y_test['cens'], y_test['time'], p,
                                   (0.6518928901200369, 8472, 4524, 0, 3))
    def test_unknown_solver(gbsg2):
        x, y = gbsg2
        m = MinlipSurvivalAnalysis(solver=None)
        with pytest.raises(ValueError, match="unknown solver: None"):
            m.fit(x, y)

        m.set_params(solver="i don't know")
        with pytest.raises(ValueError, match="unknown solver: i don't know"):
            m.fit(x, y)

        m.set_params(solver=[('why', 'are'), ('you', 'doing this')])
        with pytest.raises(ValueError,
                           match=r"unknown solver: \[\('why', 'are'\), \('you', 'doing this'\)\]"):
            m.fit(x, y)