
"""simple docstring"""



import numpy as np
from sklearn.datasets import fetch_california_housing
from sklearn.metrics import mean_absolute_error, mean_squared_error
from sklearn.model_selection import train_test_split
from xgboost import XGBRegressor






def 	__snake_case  (    SCREAMING_SNAKE_CASE:					dict						):






							"""simple docstring"""



							return (data["data"], data["target"])






def 	__snake_case  (    SCREAMING_SNAKE_CASE:					np.ndarray     ,  SCREAMING_SNAKE_CASE:					np.ndarray     ,  SCREAMING_SNAKE_CASE:					np.ndarray						):






							"""simple docstring"""



							_lowerCAmelCase  	=			XGBRegressor(verbosity=0     ,  random_state=42						)
							xgb.fit(SCREAMING_SNAKE_CASE     ,  SCREAMING_SNAKE_CASE						)
							# Predict target for test data
							_lowerCAmelCase  	=			xgb.predict(SCREAMING_SNAKE_CASE						)
							_lowerCAmelCase  	=			predictions.reshape(len(SCREAMING_SNAKE_CASE						)     ,  1						)
							return predictions






def 	__snake_case  (    ):






							"""simple docstring"""



							_lowerCAmelCase  	=			fetch_california_housing()
							_lowerCAmelCase  	=			data_handling(SCREAMING_SNAKE_CASE						)
							_lowerCAmelCase  	=			train_test_split(
							    SCREAMING_SNAKE_CASE     ,  SCREAMING_SNAKE_CASE     ,  test_size=0.25     ,  random_state=1						)
							_lowerCAmelCase  	=			xgboost(SCREAMING_SNAKE_CASE     ,  SCREAMING_SNAKE_CASE     ,  SCREAMING_SNAKE_CASE						)
							# Error printing
							print(f"""Mean Absolute Error : {mean_absolute_error(SCREAMING_SNAKE_CASE     ,  SCREAMING_SNAKE_CASE						)}"""						)
							print(f"""Mean Square Error  : {mean_squared_error(SCREAMING_SNAKE_CASE     ,  SCREAMING_SNAKE_CASE						)}"""						)


if __name__ == "__main__":
	import doctest

	doctest.testmod(verbose=True)
	main()








"""simple docstring"""



from pathlib import Path

import numpy as np
from PIL import Image






def 	__snake_case  (    SCREAMING_SNAKE_CASE:					np.ndarray						):






							"""simple docstring"""



							_lowerCAmelCase	,		_lowerCAmelCase	,		_lowerCAmelCase  	=			rgb[:, :, 0], rgb[:, :, 1], rgb[:, :, 2]
							return 0.29_89 * r + 0.58_70 * g + 0.11_40 * b






def 	__snake_case  (    SCREAMING_SNAKE_CASE:					np.ndarray						):






							"""simple docstring"""



							return (gray > 127) & (gray <= 255)






def 	__snake_case  (    SCREAMING_SNAKE_CASE:					np.ndarray     ,  SCREAMING_SNAKE_CASE:					np.ndarray						):






							"""simple docstring"""



							_lowerCAmelCase  	=			np.zeros_like(SCREAMING_SNAKE_CASE						)
							_lowerCAmelCase  	=			np.zeros(
							    (image.shape[0] + kernel.shape[0] - 1, image.shape[1] + kernel.shape[1] - 1)						)

							# Copy image to padded image
							_lowerCAmelCase  	=			image

							# Iterate over image & apply kernel
							for x in range(image.shape[1]						):
														for y in range(image.shape[0]						):
																					_lowerCAmelCase  	=			(
																					    kernel * image_padded[y : y + kernel.shape[0], x : x + kernel.shape[1]]
																					).sum()
																					_lowerCAmelCase  	=			int(summation > 0						)
							return output


if __name__ == "__main__":
	# read original image
	_snake_case          =						Path(__file__).resolve().parent / '''image_data''' / '''lena.jpg'''
	_snake_case          =						np.array(Image.open(lena_path))
	# kernel to be applied
	_snake_case          =						np.array([[0, 1, 0], [1, 1, 1], [0, 1, 0]])
	_snake_case          =						dilation(gray_to_binary(rgb_to_gray(lena)), structuring_element)
	# Save the output image
	_snake_case          =						Image.fromarray(output).convert('''RGB''')
	pil_img.save('''result_dilation.png''')






