def test_toy_minlip_predict_2_cvxpy(self): m = MinlipSurvivalAnalysis(solver="cvxpy", alpha=1, pairs="next") y = self.y.copy() y["time"] = numpy.arange(1, 7) m.fit(self.x, y) p = m.predict(numpy.array([[3, 4], [41, 29]])) assert_array_almost_equal(numpy.array([-0.341626, -5.374394]), p)
def test_toy_minlip_fit_cvxpy(self): m = MinlipSurvivalAnalysis(solver="cvxpy", alpha=2, pairs="next") m.fit(self.x, self.y) self.assertTupleEqual((1, self.x.shape[0]), m.coef_.shape) self.assertEqual(1, m.coef0) expected_coef = numpy.array([[-7.18695994e-02, 7.18695994e-02, -7.51880574e-13, -2.14618562e-01, 2.14618562e-01, 0]]) assert_array_almost_equal(m.coef_, expected_coef)
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_unknown_solver(self): m = MinlipSurvivalAnalysis(solver=None) self.assertRaisesRegex(ValueError, "unknown solver: None", m.fit, self.x.values, self.y) m.set_params(solver="i don't know") self.assertRaisesRegex(ValueError, "unknown solver: i don't know", m.fit, self.x.values, self.y) m.set_params(solver=[('why', 'are'), ('you', 'doing this')]) self.assertRaisesRegex(ValueError, "unknown solver: \[\('why', 'are'\), \('you', 'doing this'\)\]", m.fit, self.x.values, self.y)
def test_breast_cancer_rbf_cvxopt(self): m = MinlipSurvivalAnalysis(solver="cvxopt", alpha=1, kernel="rbf", 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.63261242034387399, 84182, 48888, 2, 32]) assert_array_almost_equal(expected, v)
def test_toy_minlip_predict_1_cvxpy(self): m = MinlipSurvivalAnalysis(solver="cvxpy", alpha=1, pairs="next") m.fit(self.x, self.y) p = m.predict(self.x) v = concordance_index_censored(self.y['status'], self.y['time'], p) self.assertEqual(1.0, v[0]) self.assertEqual(11, v[1]) self.assertEqual(0, v[2]) self.assertEqual(0, v[3]) self.assertEqual(0, v[4])
def test_breast_cancer_rbf_cvxpy(self): m = MinlipSurvivalAnalysis(solver="cvxpy", alpha=1, kernel="rbf", 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) self.assertAlmostEqual(0.6286334, v[0], 3) self.assertEqual(83653, v[1]) self.assertEqual(49418, v[2]) self.assertEqual(1, v[3]) self.assertEqual(32, v[4])
def test_kernel_precomputed(self): from sklearn.metrics.pairwise import pairwise_kernels from sklearn.cross_validation 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)
def test_toy_minlip_timeit(self): m = MinlipSurvivalAnalysis(alpha=1, pairs="next", timeit=7) m.fit(self.x, self.y) self.assertEqual(7, len(m.timings_))