def _evaluate_single(data, target_feature): mine = MINE(alpha=0.4, c=15) MICs = list() for i in range(data.shape[1]): mine.compute_score(target_feature,data[:,i]) MICs.append((mine.mic(), mine.mas(), mine.mev(), mine.mcn(), mine.mcn_general())) return(MICs)
#base = linear_sa(base) #data = data.drop([goal], axis = 1) df = pd.DataFrame(columns=["MIC", "O-MAS", "MEV", "MCN"]) #roll_result= pd.DataFrame(columns = ["MIC", "O-MAS", "MEV","MCN"]) for index, row in data.iteritems(): slice_ = row # p = pearsonr(base, slice_)[0] mine.compute_score(base, slice_) mic = mine.mic() mas = 1 - mine.mas() mev = mine.mev() mcn = mine.mcn_general() result = np.array([mic, mas, mev, mcn]) df.loc[str(index)] = result print("\n") print("%s与其他指标遍历的相关系数结果是:" % (var)) print(df) #p = df.Pearson mic = df.MIC #p = p.sort_values()[-num_pick:].index #mic_value = mic.sort_values()[-num_pick:] #mic_value.to_excel('/Users/linjunqi/Desktop/mic_result/与%s相关系数最高的%s个指标MIC.xls'%(var,num_pick)) mic = mic.sort_values()[-num_pick:].index
class TestFunctions(unittest.TestCase): def setUp(self): self.mine = MINE(alpha=0.6, c=15) def build_const(self, n): x = np.linspace(0, 1, n) y = np.zeros(n) return x, y def build_linear(self, n): x = np.linspace(0, 1, n) return x, x def build_sine(self, n): x = np.linspace(0, 1, n) return x, np.sin(8 * np.pi * x) def build_exp(self, n): x = np.linspace(0, 10, n) return x, 2**x def test_const(self): x, y = self.build_const(1000) self.mine.compute_score(x, y) assert_almost_equal(self.mine.mic(), 0., 4) assert_almost_equal(self.mine.mas(), 0., 4) assert_almost_equal(self.mine.mev(), 0., 4) assert_almost_equal(self.mine.mcn(), 2., 4) assert_almost_equal(self.mine.mcn_general(), 2., 4) def test_linear(self): x, y = self.build_linear(1000) self.mine.compute_score(x, y) assert_almost_equal(self.mine.mic(), 1., 4) assert_almost_equal(self.mine.mas(), 0., 4) assert_almost_equal(self.mine.mev(), 1., 4) assert_almost_equal(self.mine.mcn(), 2., 4) assert_almost_equal(self.mine.mcn_general(), 2., 4) def test_linear(self): x, y = self.build_linear(1000) self.mine.compute_score(x, y) assert_almost_equal(self.mine.mic(), 1., 4) assert_almost_equal(self.mine.mas(), 0., 4) assert_almost_equal(self.mine.mev(), 1., 4) assert_almost_equal(self.mine.mcn(), 2., 4) assert_almost_equal(self.mine.mcn_general(), 2., 4) def test_sine(self): x, y = self.build_sine(1000) self.mine.compute_score(x, y) assert_almost_equal(self.mine.mic(), 1., 4) assert_almost_equal(self.mine.mas(), 0.875, 3) assert_almost_equal(self.mine.mev(), 1., 4) assert_almost_equal(self.mine.mcn(), 4., 4) assert_almost_equal(self.mine.mcn_general(), 4., 4) def test_exp(self): x, y = self.build_exp(1000) self.mine.compute_score(x, y) assert_almost_equal(self.mine.mic(), 1., 4) assert_almost_equal(self.mine.mas(), 0., 4) assert_almost_equal(self.mine.mev(), 1., 4) assert_almost_equal(self.mine.mcn(), 2., 4) assert_almost_equal(self.mine.mcn_general(), 2., 4)
class TestFunctions(unittest.TestCase): def setUp(self): self.mine = MINE(alpha=0.6, c=15) def build_const(self, n): x = np.linspace(0, 1, n) y = np.zeros(n) return x, y def build_linear(self, n): x = np.linspace(0, 1, n) return x, x def build_sine(self, n): x = np.linspace(0, 1, n) return x, np.sin(8*np.pi*x) def build_exp(self, n): x = np.linspace(0, 10, n) return x, 2**x def test_const(self): x, y = self.build_const(1000) self.mine.compute_score(x, y) assert_almost_equal(self.mine.mic(), 0., 4) assert_almost_equal(self.mine.mas(), 0., 4) assert_almost_equal(self.mine.mev(), 0., 4) assert_almost_equal(self.mine.mcn(), 2., 4) assert_almost_equal(self.mine.mcn_general(), 2., 4) def test_linear(self): x, y = self.build_linear(1000) self.mine.compute_score(x, y) assert_almost_equal(self.mine.mic(), 1., 4) assert_almost_equal(self.mine.mas(), 0., 4) assert_almost_equal(self.mine.mev(), 1., 4) assert_almost_equal(self.mine.mcn(), 2., 4) assert_almost_equal(self.mine.mcn_general(), 2., 4) def test_linear(self): x, y = self.build_linear(1000) self.mine.compute_score(x, y) assert_almost_equal(self.mine.mic(), 1., 4) assert_almost_equal(self.mine.mas(), 0., 4) assert_almost_equal(self.mine.mev(), 1., 4) assert_almost_equal(self.mine.mcn(), 2., 4) assert_almost_equal(self.mine.mcn_general(), 2., 4) def test_sine(self): x, y = self.build_sine(1000) self.mine.compute_score(x, y) assert_almost_equal(self.mine.mic(), 1., 4) assert_almost_equal(self.mine.mas(), 0.875, 3) assert_almost_equal(self.mine.mev(), 1., 4) assert_almost_equal(self.mine.mcn(), 4., 4) assert_almost_equal(self.mine.mcn_general(), 4., 4) def test_exp(self): x, y = self.build_exp(1000) self.mine.compute_score(x, y) assert_almost_equal(self.mine.mic(), 1., 4) assert_almost_equal(self.mine.mas(), 0., 4) assert_almost_equal(self.mine.mev(), 1., 4) assert_almost_equal(self.mine.mcn(), 2., 4) assert_almost_equal(self.mine.mcn_general(), 2., 4)