Example #1
0
    def test_fit_and_predict_hybrid(self):
        if self.OPTIMIZER in {'simple', 'PRSVM'}:
            raise unittest.SkipTest("regression not implemented for " +
                                    self.OPTIMIZER)

        ssvm = FastSurvivalSVM(optimizer=self.OPTIMIZER,
                               rank_ratio=0.5,
                               max_iter=50,
                               fit_intercept=True,
                               random_state=0)
        ssvm.fit(self.x.values, self.y)

        self.assertAlmostEqual(6.1409367385513729, ssvm.intercept_)
        expected_coef = numpy.array([
            -0.0209254120718, -0.265768317208, -0.154254689136,
            0.0800600947891, -0.290121131022, -0.0288851785213,
            0.0998004550073, 0.0454100937492, -0.125863947621, 0.0343588337797,
            -0.000710219364914, 0.0546969104996, -0.5375338235,
            -0.0137995110308
        ])
        assert_array_almost_equal(expected_coef, ssvm.coef_)

        pred = ssvm.predict(self.x.values)
        rmse = numpy.sqrt(mean_squared_error(self.y['lenfol'], pred))
        self.assertAlmostEqual(780.52617631863893, rmse)
Example #2
0
    def test_compare_rbf(self):
        x, y, _, _ = load_arff_file(WHAS500_FILE, ['fstat', 'lenfol'], '1')

        kpca = KernelPCA(kernel="rbf")
        xt = kpca.fit_transform(x)

        nrsvm = FastSurvivalSVM(optimizer='rbtree',
                                tol=1e-8,
                                max_iter=1000,
                                random_state=0)
        nrsvm.fit(xt, y)

        rsvm = FastKernelSurvivalSVM(optimizer='rbtree',
                                     kernel="rbf",
                                     tol=1e-8,
                                     max_iter=1000,
                                     random_state=0)
        rsvm.fit(x, y)

        pred_nrsvm = nrsvm.predict(kpca.transform(x))
        pred_rsvm = rsvm.predict(x)

        self.assertEqual(len(pred_nrsvm), len(pred_rsvm))

        c1 = concordance_index_censored(y['fstat'], y['lenfol'], pred_nrsvm)
        c2 = concordance_index_censored(y['fstat'], y['lenfol'], pred_rsvm)

        self.assertAlmostEqual(c1[0], c2[0])
        self.assertTupleEqual(c1[1:], c2[1:])
    def test_compare_clinical_kernel(self):
        x_full, y, _, _ = load_arff_file(WHAS500_FILE, ['fstat', 'lenfol'], '1',
                                         standardize_numeric=False, to_numeric=False)

        trans = ClinicalKernelTransform()
        trans.fit(x_full)

        x = encode_categorical(standardize(x_full))

        kpca = KernelPCA(kernel=trans.pairwise_kernel)
        xt = kpca.fit_transform(x)

        nrsvm = FastSurvivalSVM(optimizer='rbtree', tol=1e-8, max_iter=1000, random_state=0)
        nrsvm.fit(xt, y)

        rsvm = FastKernelSurvivalSVM(optimizer='rbtree', kernel=trans.pairwise_kernel,
                                     tol=1e-8, max_iter=1000, random_state=0)
        rsvm.fit(x, y)

        pred_nrsvm = nrsvm.predict(kpca.transform(x))
        pred_rsvm = rsvm.predict(x)

        self.assertEqual(len(pred_nrsvm), len(pred_rsvm))

        c1 = concordance_index_censored(y['fstat'], y['lenfol'], pred_nrsvm)
        c2 = concordance_index_censored(y['fstat'], y['lenfol'], pred_rsvm)

        self.assertAlmostEqual(c1[0], c2[0])
        self.assertTupleEqual(c1[1:], c2[1:])
Example #4
0
    def test_survival_squared_hinge_loss(self):
        nrsvm = NaiveSurvivalSVM(loss='squared_hinge',
                                 dual=False,
                                 tol=1e-8,
                                 max_iter=1000,
                                 random_state=0)
        nrsvm.fit(self.x, self.y)

        rsvm = FastSurvivalSVM(optimizer='avltree',
                               tol=1e-8,
                               max_iter=1000,
                               random_state=0)
        rsvm.fit(self.x, self.y)

        assert_array_almost_equal(nrsvm.coef_.ravel(), rsvm.coef_, 3)

        pred_nrsvm = nrsvm.predict(self.x)
        pred_rsvm = rsvm.predict(self.x)

        self.assertEqual(len(pred_nrsvm), len(pred_rsvm))

        c1 = concordance_index_censored(self.y['fstat'], self.y['lenfol'],
                                        pred_nrsvm)
        c2 = concordance_index_censored(self.y['fstat'], self.y['lenfol'],
                                        pred_rsvm)

        self.assertAlmostEqual(c1[0], c2[0])
        self.assertTupleEqual(c1[1:], c2[1:])
    def test_fit_timeit(self):
        rnd = numpy.random.RandomState(0)
        idx = rnd.choice(numpy.arange(self.x.shape[0]), replace=False, size=100)

        ssvm = FastSurvivalSVM(optimizer=self.OPTIMIZER, timeit=3, random_state=0)
        ssvm.fit(self.x.values[idx, :], self.y[idx])

        self.assertTrue('timings' in ssvm.optimizer_result_)
Example #6
0
    def test_fit_timeit(self):
        rnd = numpy.random.RandomState(0)
        idx = rnd.choice(numpy.arange(self.x.shape[0]),
                         replace=False,
                         size=100)

        ssvm = FastSurvivalSVM(optimizer=self.OPTIMIZER,
                               timeit=3,
                               random_state=0)
        ssvm.fit(self.x.values[idx, :], self.y[idx])

        self.assertTrue('timings' in ssvm.optimizer_result_)
    def test_fit_and_predict_ranking(self):
        ssvm = FastSurvivalSVM(optimizer=self.OPTIMIZER, random_state=0)
        ssvm.fit(self.x.values, self.y)

        self.assertFalse(hasattr(ssvm, "intercept_"))
        expected_coef = numpy.array([-0.02066177, -0.26449933, -0.15205399, 0.0794547, -0.28840498, -0.02864288,
                                     0.09901995, 0.04505302, -0.12512215, 0.03341365, -0.00110442, 0.05446756,
                                     -0.53009875, -0.01394175])
        assert_array_almost_equal(expected_coef, ssvm.coef_)

        self.assertEquals(self.x.shape[1], ssvm.coef_.shape[0])

        c = ssvm.score(self.x.values, self.y)

        self.assertAlmostEqual(0.7860650174985695, c, 6)
Example #8
0
    def test_fit_and_predict_ranking(self):
        ssvm = FastSurvivalSVM(optimizer=self.OPTIMIZER, random_state=0)
        ssvm.fit(self.x.values, self.y)

        self.assertFalse(hasattr(ssvm, "intercept_"))
        expected_coef = numpy.array([
            -0.02066177, -0.26449933, -0.15205399, 0.0794547, -0.28840498,
            -0.02864288, 0.09901995, 0.04505302, -0.12512215, 0.03341365,
            -0.00110442, 0.05446756, -0.53009875, -0.01394175
        ])
        assert_array_almost_equal(expected_coef, ssvm.coef_)

        self.assertEquals(self.x.shape[1], ssvm.coef_.shape[0])

        c = ssvm.score(self.x.values, self.y)

        self.assertAlmostEqual(0.7860650174985695, c, 6)
    def test_fit_and_predict_regression_no_intercept(self):
        if self.OPTIMIZER in {'simple', 'PRSVM'}:
            raise unittest.SkipTest("regression not implemented for " + self.OPTIMIZER)

        ssvm = FastSurvivalSVM(optimizer=self.OPTIMIZER, rank_ratio=0.0,
                               max_iter=50, fit_intercept=False, random_state=0)
        ssvm.fit(self.x.values, self.y)

        self.assertFalse(hasattr(ssvm, "intercept_"))
        expected_coef = numpy.array([1.39989875, -1.16903161, -0.40195857, -0.05848903, -0.08421557, 4.11924729,
                                     0.25135451, 1.89067276, -0.25751401, -0.10213143, 1.56333622, 3.10136873,
                                     -2.23644848, -0.11620715])
        assert_array_almost_equal(expected_coef, ssvm.coef_)

        pred = ssvm.predict(self.x.values)
        rmse = numpy.sqrt(mean_squared_error(self.y['lenfol'], pred))
        self.assertAlmostEqual(15838.510668936022, rmse)
    def test_fit_and_predict_hybrid_no_intercept(self):
        if self.OPTIMIZER in {'simple', 'PRSVM'}:
            raise unittest.SkipTest("regression not implemented for " + self.OPTIMIZER)

        ssvm = FastSurvivalSVM(optimizer=self.OPTIMIZER, rank_ratio=0.5,
                               max_iter=50, fit_intercept=False, random_state=0)
        ssvm.fit(self.x.values, self.y)

        self.assertFalse(hasattr(ssvm, "intercept_"))
        expected_coef = numpy.array([0.00669121, -0.2754864, -0.14124808, 0.0748376, -0.2812598, 0.07543884,
                                     0.09845683, 0.08398258, -0.12182314, 0.02637739, 0.03060149, 0.11870598,
                                     -0.52688224, -0.01762842])
        assert_array_almost_equal(expected_coef, ssvm.coef_)

        pred = ssvm.predict(self.x.values)
        rmse = numpy.sqrt(mean_squared_error(self.y['lenfol'], pred))
        self.assertAlmostEqual(1128.4460587629746, rmse)
    def test_survival_squared_hinge_loss(self):
        nrsvm = NaiveSurvivalSVM(loss='squared_hinge', dual=False, tol=1e-8, max_iter=1000, random_state=0)
        nrsvm.fit(self.x, self.y)

        rsvm = FastSurvivalSVM(optimizer='avltree', tol=1e-8, max_iter=1000, random_state=0)
        rsvm.fit(self.x, self.y)

        assert_array_almost_equal(nrsvm.coef_.ravel(), rsvm.coef_, 3)

        pred_nrsvm = nrsvm.predict(self.x)
        pred_rsvm = rsvm.predict(self.x)

        self.assertEqual(len(pred_nrsvm), len(pred_rsvm))

        c1 = concordance_index_censored(self.y['fstat'], self.y['lenfol'], pred_nrsvm)
        c2 = concordance_index_censored(self.y['fstat'], self.y['lenfol'], pred_rsvm)

        self.assertAlmostEqual(c1[0], c2[0])
        self.assertTupleEqual(c1[1:], c2[1:])
    def test_fit_and_predict_regression(self):
        if self.OPTIMIZER in {'simple', 'PRSVM'}:
            raise unittest.SkipTest("regression not implemented for " + self.OPTIMIZER)

        ssvm = FastSurvivalSVM(optimizer=self.OPTIMIZER, rank_ratio=0.0,
                               max_iter=50, fit_intercept=True, random_state=0)
        ssvm.fit(self.x.values, self.y)

        self.assertAlmostEqual(6.4160179606675278, ssvm.intercept_)
        expected_coef = numpy.array(
            [-0.0730891368237, -0.536630355029, -0.497411603275, 0.269039958377, -0.730559850692, -0.0148443526234,
             0.285916578892, 0.165960302339, -0.301749910087, 0.334855938531, 0.0886214732161, 0.0554890272028,
             -2.12680470014, 0.0421466831393
             ])
        assert_array_almost_equal(expected_coef, ssvm.coef_)

        pred = ssvm.predict(self.x.values)
        rmse = numpy.sqrt(mean_squared_error(self.y['lenfol'], pred))
        self.assertAlmostEqual(1206.6556186869332, rmse)
    def test_fit_and_predict_hybrid(self):
        if self.OPTIMIZER in {'simple', 'PRSVM'}:
            raise unittest.SkipTest("regression not implemented for " + self.OPTIMIZER)

        ssvm = FastSurvivalSVM(optimizer=self.OPTIMIZER, rank_ratio=0.5,
                               max_iter=50, fit_intercept=True, random_state=0)
        ssvm.fit(self.x.values, self.y)

        self.assertAlmostEqual(6.1409367385513729, ssvm.intercept_)
        expected_coef = numpy.array(
            [-0.0209254120718, -0.265768317208, -0.154254689136, 0.0800600947891, -0.290121131022, -0.0288851785213,
             0.0998004550073, 0.0454100937492, -0.125863947621, 0.0343588337797, -0.000710219364914, 0.0546969104996,
             -0.5375338235, -0.0137995110308
             ])
        assert_array_almost_equal(expected_coef, ssvm.coef_)

        pred = ssvm.predict(self.x.values)
        rmse = numpy.sqrt(mean_squared_error(self.y['lenfol'], pred))
        self.assertAlmostEqual(780.52617631863893, rmse)
Example #14
0
    def test_fit_and_predict_hybrid_no_intercept(self):
        if self.OPTIMIZER in {'simple', 'PRSVM'}:
            raise unittest.SkipTest("regression not implemented for " +
                                    self.OPTIMIZER)

        ssvm = FastSurvivalSVM(optimizer=self.OPTIMIZER,
                               rank_ratio=0.5,
                               max_iter=50,
                               fit_intercept=False,
                               random_state=0)
        ssvm.fit(self.x.values, self.y)

        self.assertFalse(hasattr(ssvm, "intercept_"))
        expected_coef = numpy.array([
            0.00669121, -0.2754864, -0.14124808, 0.0748376, -0.2812598,
            0.07543884, 0.09845683, 0.08398258, -0.12182314, 0.02637739,
            0.03060149, 0.11870598, -0.52688224, -0.01762842
        ])
        assert_array_almost_equal(expected_coef, ssvm.coef_)

        pred = ssvm.predict(self.x.values)
        rmse = numpy.sqrt(mean_squared_error(self.y['lenfol'], pred))
        self.assertAlmostEqual(1128.4460587629746, rmse)
    def test_compare_rbf(self):
        x, y, _, _ = load_arff_file(WHAS500_FILE, ['fstat', 'lenfol'], '1')

        kpca = KernelPCA(kernel="rbf")
        xt = kpca.fit_transform(x)

        nrsvm = FastSurvivalSVM(optimizer='rbtree', tol=1e-8, max_iter=1000, random_state=0)
        nrsvm.fit(xt, y)

        rsvm = FastKernelSurvivalSVM(optimizer='rbtree', kernel="rbf",
                                     tol=1e-8, max_iter=1000, random_state=0)
        rsvm.fit(x, y)

        pred_nrsvm = nrsvm.predict(kpca.transform(x))
        pred_rsvm = rsvm.predict(x)

        self.assertEqual(len(pred_nrsvm), len(pred_rsvm))

        c1 = concordance_index_censored(y['fstat'], y['lenfol'], pred_nrsvm)
        c2 = concordance_index_censored(y['fstat'], y['lenfol'], pred_rsvm)

        self.assertAlmostEqual(c1[0], c2[0])
        self.assertTupleEqual(c1[1:], c2[1:])
Example #16
0
    def test_fit_and_predict_regression_no_intercept(self):
        if self.OPTIMIZER in {'simple', 'PRSVM'}:
            raise unittest.SkipTest("regression not implemented for " +
                                    self.OPTIMIZER)

        ssvm = FastSurvivalSVM(optimizer=self.OPTIMIZER,
                               rank_ratio=0.0,
                               max_iter=50,
                               fit_intercept=False,
                               random_state=0)
        ssvm.fit(self.x.values, self.y)

        self.assertFalse(hasattr(ssvm, "intercept_"))
        expected_coef = numpy.array([
            1.39989875, -1.16903161, -0.40195857, -0.05848903, -0.08421557,
            4.11924729, 0.25135451, 1.89067276, -0.25751401, -0.10213143,
            1.56333622, 3.10136873, -2.23644848, -0.11620715
        ])
        assert_array_almost_equal(expected_coef, ssvm.coef_)

        pred = ssvm.predict(self.x.values)
        rmse = numpy.sqrt(mean_squared_error(self.y['lenfol'], pred))
        self.assertAlmostEqual(15838.510668936022, rmse)
Example #17
0
    def test_compare_clinical_kernel(self):
        x_full, y, _, _ = load_arff_file(WHAS500_FILE, ['fstat', 'lenfol'],
                                         '1',
                                         standardize_numeric=False,
                                         to_numeric=False)

        trans = ClinicalKernelTransform()
        trans.fit(x_full)

        x = encode_categorical(standardize(x_full))

        kpca = KernelPCA(kernel=trans.pairwise_kernel)
        xt = kpca.fit_transform(x)

        nrsvm = FastSurvivalSVM(optimizer='rbtree',
                                tol=1e-8,
                                max_iter=1000,
                                random_state=0)
        nrsvm.fit(xt, y)

        rsvm = FastKernelSurvivalSVM(optimizer='rbtree',
                                     kernel=trans.pairwise_kernel,
                                     tol=1e-8,
                                     max_iter=1000,
                                     random_state=0)
        rsvm.fit(x, y)

        pred_nrsvm = nrsvm.predict(kpca.transform(x))
        pred_rsvm = rsvm.predict(x)

        self.assertEqual(len(pred_nrsvm), len(pred_rsvm))

        c1 = concordance_index_censored(y['fstat'], y['lenfol'], pred_nrsvm)
        c2 = concordance_index_censored(y['fstat'], y['lenfol'], pred_rsvm)

        self.assertAlmostEqual(c1[0], c2[0])
        self.assertTupleEqual(c1[1:], c2[1:])
Example #18
0
    def test_fit_and_predict_regression(self):
        if self.OPTIMIZER in {'simple', 'PRSVM'}:
            raise unittest.SkipTest("regression not implemented for " +
                                    self.OPTIMIZER)

        ssvm = FastSurvivalSVM(optimizer=self.OPTIMIZER,
                               rank_ratio=0.0,
                               max_iter=50,
                               fit_intercept=True,
                               random_state=0)
        ssvm.fit(self.x.values, self.y)

        self.assertAlmostEqual(6.4160179606675278, ssvm.intercept_)
        expected_coef = numpy.array([
            -0.0730891368237, -0.536630355029, -0.497411603275, 0.269039958377,
            -0.730559850692, -0.0148443526234, 0.285916578892, 0.165960302339,
            -0.301749910087, 0.334855938531, 0.0886214732161, 0.0554890272028,
            -2.12680470014, 0.0421466831393
        ])
        assert_array_almost_equal(expected_coef, ssvm.coef_)

        pred = ssvm.predict(self.x.values)
        rmse = numpy.sqrt(mean_squared_error(self.y['lenfol'], pred))
        self.assertAlmostEqual(1206.6556186869332, rmse)