upgini 1.1.280a3418.post4__py3-none-any.whl → 1.1.280a3418.post6__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of upgini might be problematic. Click here for more details.

upgini/__about__.py CHANGED
@@ -1 +1 @@
1
- __version__ = "1.1.280a3418-4"
1
+ __version__ = "1.1.280a3418-6"
@@ -1,10 +1,10 @@
1
1
  from typing import Dict
2
2
 
3
3
  from upgini.autofe.binary import Add, Divide, Max, Min, Multiply, Sim, Subtract
4
- from upgini.autofe.date import DateDiff, DateDiffType2, DateListDiff, DateListDiffBounded
4
+ from upgini.autofe.date import DateDiff, DateDiffType2, DateListDiff, DateListDiffBounded, DatePercentile
5
5
  from upgini.autofe.groupby import GroupByThenAgg, GroupByThenRank
6
6
  from upgini.autofe.operand import Operand
7
- from upgini.autofe.unary import Abs, Bin, Floor, Freq, Log, Residual, Sigmoid, Sqrt, Square
7
+ from upgini.autofe.unary import Abs, Floor, Freq, Log, Residual, Sigmoid, Sqrt, Square
8
8
  from upgini.autofe.vector import Mean, Sum
9
9
 
10
10
  ALL_OPERANDS: Dict[str, Operand] = {
@@ -49,7 +49,7 @@ ALL_OPERANDS: Dict[str, Operand] = {
49
49
  DateListDiffBounded(diff_unit="Y", aggregation="count", lower_bound=30, upper_bound=45),
50
50
  DateListDiffBounded(diff_unit="Y", aggregation="count", lower_bound=45, upper_bound=60),
51
51
  DateListDiffBounded(diff_unit="Y", aggregation="count", lower_bound=60),
52
- Bin(),
52
+ DatePercentile(),
53
53
  ]
54
54
  }
55
55
 
upgini/autofe/date.py CHANGED
@@ -1,9 +1,10 @@
1
- from typing import Any, Optional, Union
1
+ from datetime import date
2
+ from typing import Any, List, Optional, Union
2
3
 
3
4
  import numpy as np
4
5
  import pandas as pd
5
6
  from pandas.core.arrays.timedeltas import TimedeltaArray
6
- from pydantic import BaseModel
7
+ from pydantic import BaseModel, validator
7
8
 
8
9
  from upgini.autofe.operand import PandasOperand
9
10
 
@@ -116,3 +117,42 @@ class DateListDiffBounded(DateListDiff):
116
117
  def _agg(self, x):
117
118
  x = x[(x >= (self.lower_bound or -np.inf)) & (x < (self.upper_bound or np.inf))]
118
119
  return super()._agg(x)
120
+
121
+
122
+ class DatePercentile(PandasOperand):
123
+ name = "date_per"
124
+ is_binary = True
125
+ output_type = "float"
126
+
127
+ date_unit: Optional[str] = None
128
+ zero_month: Optional[int]
129
+ zero_year: Optional[int]
130
+ zero_bounds: Optional[List[float]]
131
+ step: int = 30
132
+
133
+ @validator("zero_bounds", pre=True)
134
+ def validate_bounds(cls, value):
135
+ if value is None or isinstance(value, list):
136
+ return value
137
+ elif isinstance(value, str):
138
+ return value[1:-1].split(", ")
139
+
140
+ def calculate_binary(self, left: pd.Series, right: pd.Series) -> pd.Series:
141
+ # Assuming that left is a date column, right is a feature column
142
+ left = pd.to_datetime(left, unit=self.date_unit)
143
+ months = left.dt.month
144
+ years = left.dt.year
145
+
146
+ month_diffs = 12 * (years - (self.zero_year or 0)) + (months - (self.zero_month or 0))
147
+ bounds = month_diffs.apply(
148
+ lambda d: np.array(self.zero_bounds if self.zero_bounds is not None else []) + d * 30
149
+ )
150
+
151
+ return right.index.to_series().apply(lambda i: self.__perc(right[i], bounds[i]))
152
+
153
+ def __perc(self, f, bounds):
154
+ hit = np.where(f >= bounds)[0]
155
+ if hit.size > 0:
156
+ return np.max(hit) * 10
157
+ else:
158
+ return None
upgini/autofe/unary.py CHANGED
@@ -1,4 +1,3 @@
1
- from typing import Optional
2
1
  import numpy as np
3
2
  import pandas as pd
4
3
 
@@ -112,25 +111,3 @@ class Freq(PandasOperand):
112
111
  def calculate_unary(self, data: pd.Series) -> pd.Series:
113
112
  value_counts = data.value_counts(normalize=True)
114
113
  return self._loc(data, value_counts)
115
-
116
-
117
- class Bin(PandasOperand):
118
- name = "bin"
119
- is_unary = True
120
- output_type = "int"
121
- input_type = "discrete"
122
-
123
- zero_bound_low: Optional[int]
124
- zero_bound_high: Optional[int]
125
- step: Optional[int]
126
-
127
- def calculate_unary(self, data: pd.Series) -> pd.Series:
128
- high = self.zero_bound_high if self.zero_bound_high is not None else np.inf
129
- low = self.zero_bound_low if self.zero_bound_low is not None else -np.inf
130
- step = self.step or 1
131
-
132
- res = pd.Series(np.zeros(data.shape), index=data.index, dtype="int")
133
- res.update((data[data < low] - low) // step)
134
- res.update((data[data >= high] - high) // step + 1)
135
-
136
- return res
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: upgini
3
- Version: 1.1.280a3418.post4
3
+ Version: 1.1.280a3418.post6
4
4
  Summary: Intelligent data search & enrichment for Machine Learning
5
5
  Project-URL: Bug Reports, https://github.com/upgini/upgini/issues
6
6
  Project-URL: Homepage, https://upgini.com/
@@ -1,4 +1,4 @@
1
- upgini/__about__.py,sha256=n5cs6bnvVUYK6UlCIv1U64HeOfBdjIlM6EqJRD8ZnDM,31
1
+ upgini/__about__.py,sha256=23lJ6tvgrAt5PD-c3jmD6rUoxDdKPt4z1WQtDj9pmSM,31
2
2
  upgini/__init__.py,sha256=asENHgEVHQBIkV-e_0IhE_ZWqkCG6398U3ZLrNzAH6k,407
3
3
  upgini/ads.py,sha256=nvuRxRx5MHDMgPr9SiU-fsqRdFaBv8p4_v1oqiysKpc,2714
4
4
  upgini/dataset.py,sha256=uiFY-P8te7-zigib1hGWRtW5v0X7chxPM0hJFdixAN8,45623
@@ -13,13 +13,13 @@ upgini/version_validator.py,sha256=RGg87VweujTNlibgsOuqPLIEiBgIOkuXNVTGuNCD234,1
13
13
  upgini/ads_management/__init__.py,sha256=qzyisOToVRP-tquAJD1PblZhNtMrOB8FiyF9JvfkvgE,50
14
14
  upgini/ads_management/ads_manager.py,sha256=igVbN2jz80Umb2BUJixmJVj-zx8unoKpecVo-R-nGdw,2648
15
15
  upgini/autofe/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
- upgini/autofe/all_operands.py,sha256=VB8-iuNanjtjo3ho2shDDfWQtXGYekeoPEBzpNy1iWo,2377
16
+ upgini/autofe/all_operands.py,sha256=7UyvmmqGSqQu4kDgoFwQRKY__b9xKDk3Fpp2-H8A7AA,2399
17
17
  upgini/autofe/binary.py,sha256=441BRuqMsxlxuw4c8rMZB6h5EpRdVMk-bVa03U7T5Hg,3973
18
- upgini/autofe/date.py,sha256=Vy1I92fLLYLhuYKJmtuPBMI8cPxE4Uwk40hqE2F2e1A,4224
18
+ upgini/autofe/date.py,sha256=pG1niZllMCEV3vE80DPG2HxRE4V988J0Ojd0ukkvK1Q,5538
19
19
  upgini/autofe/feature.py,sha256=8ugRW-Ckc-SYNQawgEluoAzJ_oM5v6y9r5Qx_E-C14o,11977
20
20
  upgini/autofe/groupby.py,sha256=4WjDzQxqpZxB79Ih4ihMMI5GDxaFqiH6ZelfV82ClT4,3091
21
21
  upgini/autofe/operand.py,sha256=xgEIZuFCfckc6LpBqVu1OVK3JEabm1O-LHUsp83EHKA,2806
22
- upgini/autofe/unary.py,sha256=xV6UC0qktBtf8QbvlOPmChOn3XVi8Q4N2Td_hHuzk5g,3854
22
+ upgini/autofe/unary.py,sha256=v-l3aiE5hj6kurvh6adCQL8W3X9u9a7RVbS_WPR2qlw,3146
23
23
  upgini/autofe/vector.py,sha256=dLxfAstJs-gw_OQ1xxoxcM6pVzORlV0HVzdzt7cLXVQ,606
24
24
  upgini/data_source/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
25
  upgini/data_source/data_source_publisher.py,sha256=taRzyGgrPrTTSGw4Y-Ca5k4bf30aiTa68rxqT9zfqeI,16478
@@ -56,7 +56,7 @@ upgini/utils/sklearn_ext.py,sha256=c23MGSUVfxLnaDWKAxavHgnOtm5dGKkF3YswdWQcFzs,4
56
56
  upgini/utils/target_utils.py,sha256=Y96_PJ5cC-WsEbeqg20v9uqywDQobLoTb-xoP7S3o4E,7807
57
57
  upgini/utils/track_info.py,sha256=G5Lu1xxakg2_TQjKZk4b5SvrHsATTXNVV3NbvWtT8k8,5663
58
58
  upgini/utils/warning_counter.py,sha256=dIWBB4dI5XRRJZudvIlqlIYKEiwLLPcXarsZuYRt338,227
59
- upgini-1.1.280a3418.post4.dist-info/METADATA,sha256=y_juIdRfzSALswWmJAu5ZppO61xK_H2zkzvLWvvrvx8,48129
60
- upgini-1.1.280a3418.post4.dist-info/WHEEL,sha256=zEMcRr9Kr03x1ozGwg5v9NQBKn3kndp6LSoSlVg-jhU,87
61
- upgini-1.1.280a3418.post4.dist-info/licenses/LICENSE,sha256=5RRzgvdJUu3BUDfv4bzVU6FqKgwHlIay63pPCSmSgzw,1514
62
- upgini-1.1.280a3418.post4.dist-info/RECORD,,
59
+ upgini-1.1.280a3418.post6.dist-info/METADATA,sha256=qC25h-6BjQZwpOnnWsZ3Z-pGs45Q6Ecj_o64ACrl8VI,48129
60
+ upgini-1.1.280a3418.post6.dist-info/WHEEL,sha256=zEMcRr9Kr03x1ozGwg5v9NQBKn3kndp6LSoSlVg-jhU,87
61
+ upgini-1.1.280a3418.post6.dist-info/licenses/LICENSE,sha256=5RRzgvdJUu3BUDfv4bzVU6FqKgwHlIay63pPCSmSgzw,1514
62
+ upgini-1.1.280a3418.post6.dist-info/RECORD,,