Commit 165e81c0 authored by Dr.李's avatar Dr.李

fixed rank bug

parent c461aee5
......@@ -24,6 +24,6 @@ def rank(x: np.ndarray, groups: Optional[np.ndarray]=None) -> np.ndarray:
curr_idx = order[start:diff_loc + 1]
res[curr_idx] = x[curr_idx].argsort(axis=0)
start = diff_loc + 1
return res
else:
return x.argsort(axis=0)
\ No newline at end of file
return x.argsort(axis=0).argsort(axis=0)
......@@ -16,12 +16,14 @@ from alphamind.model.data_preparing import fetch_predict_phase
from alphamind.data.engines.universe import Universe
from alphamind.data.engines.sqlengine import SqlEngine
from alphamind.data.winsorize import winsorize_normal
from alphamind.data.rank import rank
from alphamind.data.standardize import standardize
from alphamind.model.loader import load_model
PROCESS_MAPPING = {
'winsorize_normal': winsorize_normal,
'standardize': standardize
'standardize': standardize,
'rank': rank,
}
......
......@@ -6,9 +6,33 @@ Created on 2017-8-8
"""
import unittest
import numpy as np
import pandas as pd
from alphamind.data.rank import rank
class TestRank(unittest.TestCase):
def setUp(self):
self.x = np.random.randn(1000, 1)
self.groups = np.random.randint(0, 10, 1000)
def test_rank(self):
pass
\ No newline at end of file
data_rank = rank(self.x)
sorted_array = np.zeros_like(self.x)
for i in range(self.x.shape[0]):
for j in range(self.x.shape[1]):
sorted_array[data_rank[i, j], j] = self.x[i, j]
arr_diff = np.diff(sorted_array, axis=0)
np.testing.assert_array_less(0, arr_diff)
def test_rank_with_groups(self):
data_rank = rank(self.x, groups=self.groups)
df = pd.DataFrame(self.x, index=self.groups)
expected_rank = df.groupby(level=0).apply(lambda x: x.values.argsort().argsort())
print(expected_rank)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment