@@ -128,14 +128,12 @@ def model(self) -> bigquery.Model:
128128 return self ._model
129129
130130 def predict (self , input_data : bpd .DataFrame ) -> bpd .DataFrame :
131- # TODO: validate input data schema
132131 return self ._apply_sql (
133132 input_data ,
134133 self ._model_manipulation_sql_generator .ml_predict ,
135134 )
136135
137136 def transform (self , input_data : bpd .DataFrame ) -> bpd .DataFrame :
138- # TODO: validate input data schema
139137 return self ._apply_sql (
140138 input_data ,
141139 self ._model_manipulation_sql_generator .ml_transform ,
@@ -146,7 +144,6 @@ def generate_text(
146144 input_data : bpd .DataFrame ,
147145 options : Mapping [str , int | float ],
148146 ) -> bpd .DataFrame :
149- # TODO: validate input data schema
150147 return self ._apply_sql (
151148 input_data ,
152149 lambda source_df : self ._model_manipulation_sql_generator .ml_generate_text (
@@ -160,7 +157,6 @@ def generate_text_embedding(
160157 input_data : bpd .DataFrame ,
161158 options : Mapping [str , int | float ],
162159 ) -> bpd .DataFrame :
163- # TODO: validate input data schema
164160 return self ._apply_sql (
165161 input_data ,
166162 lambda source_df : self ._model_manipulation_sql_generator .ml_generate_text_embedding (
@@ -169,12 +165,24 @@ def generate_text_embedding(
169165 ),
170166 )
171167
168+ def detect_anomalies (
169+ self , input_data : bpd .DataFrame , options : Mapping [str , int | float ]
170+ ) -> bpd .DataFrame :
171+ assert self ._model .model_type in ("PCA" , "KMEANS" , "ARIMA_PLUS" )
172+
173+ return self ._apply_sql (
174+ input_data ,
175+ lambda source_df : self ._model_manipulation_sql_generator .ml_detect_anomalies (
176+ source_df = source_df ,
177+ struct_options = options ,
178+ ),
179+ )
180+
172181 def forecast (self , options : Mapping [str , int | float ]) -> bpd .DataFrame :
173182 sql = self ._model_manipulation_sql_generator .ml_forecast (struct_options = options )
174183 return self ._session .read_gbq (sql , index_col = "forecast_timestamp" ).reset_index ()
175184
176185 def evaluate (self , input_data : Optional [bpd .DataFrame ] = None ):
177- # TODO: validate input data schema
178186 sql = self ._model_manipulation_sql_generator .ml_evaluate (input_data )
179187
180188 return self ._session .read_gbq (sql )
0 commit comments