From c91462280870052173c4d7ceb3a93335e05c85c9 Mon Sep 17 00:00:00 2001 From: Nithish0904 <145535396+Nithish0904@users.noreply.github.com> Date: Tue, 4 Jun 2024 08:38:45 -0700 Subject: [PATCH 1/4] Create Task 1 --- Nithish Reddy/Task 1 | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 Nithish Reddy/Task 1 diff --git a/Nithish Reddy/Task 1 b/Nithish Reddy/Task 1 new file mode 100644 index 0000000..ebe144b --- /dev/null +++ b/Nithish Reddy/Task 1 @@ -0,0 +1,36 @@ +from PIL import Image +import os + +def convert_image(input_path, output_path, output_format): + try: + # Open the image + with Image.open(input_path) as img: + # Convert and save the image to the desired format + img.save(output_path, format=output_format) + print(f"Image converted successfully to {output_format} format.") + except Exception as e: + print(f"An error occurred: {e}") + +def main(): + input_path = input("Enter the path to the input image: ") + output_format = input("Enter the desired output format (e.g., JPEG, PNG, BMP, GIF): ").upper() + + # Validate output format + if output_format not in ['JPEG', 'PNG', 'BMP', 'GIF']: + print("Invalid output format. Please choose from JPEG, PNG, BMP, or GIF.") + return + + # Extract the file name and extension + file_name, file_extension = os.path.splitext(input_path) + + # If the input file already has an extension, remove it + file_name_without_ext = file_name.split('.')[0] + + # Set the output path + output_path = f"{file_name_without_ext}_converted.{output_format.lower()}" + + # Convert the image + convert_image(input_path, output_path, output_format) + +if _name_ == "_main_": + main() From 8ec3d7a3545f2c27a61f9d9595162268bcdf5d66 Mon Sep 17 00:00:00 2001 From: Nithish0904 <145535396+Nithish0904@users.noreply.github.com> Date: Tue, 4 Jun 2024 08:41:45 -0700 Subject: [PATCH 2/4] Create Task 2 --- Nithish Reddy/Task 2 | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 Nithish Reddy/Task 2 diff --git a/Nithish Reddy/Task 2 b/Nithish Reddy/Task 2 new file mode 100644 index 0000000..2fee7c7 --- /dev/null +++ b/Nithish Reddy/Task 2 @@ -0,0 +1,43 @@ +import seaborn as sns +import pandas as pd +import matplotlib.pyplot as plt + +# Load the Iris dataset from Seaborn +iris = sns.load_dataset("iris") +numeric_iris = iris.drop(columns='species') + +# Display the first few rows of the dataset +print("First few rows of the dataset:") +print(iris.head()) + +# Summary statistics +print("\nSummary statistics:") +print(iris.describe()) + +# Checking for missing values +print("\nMissing values:") +print(iris.isnull().sum()) + +# Visualizations +# Pairplot +sns.pairplot(iris, hue="species") +plt.title("Pairplot of Iris Dataset") +plt.show() + +# Boxplot +plt.figure(figsize=(10, 6)) +sns.boxplot(data=iris, orient="h") +plt.title("Boxplot of Iris Dataset") +plt.show() + +# Histograms +plt.figure(figsize=(10, 6)) +iris.hist() +plt.suptitle("Histograms of Iris Dataset") +plt.show() + +# Correlation heatmap +plt.figure(figsize=(8, 6)) +sns.heatmap(numeric_iris.corr(), annot=True, cmap="coolwarm") +plt.title("Correlation Heatmap of Iris Dataset") +plt.show() From 5799bd0f7c3e70464841efd4b3c3552997e1ecb9 Mon Sep 17 00:00:00 2001 From: Nithish0904 <145535396+Nithish0904@users.noreply.github.com> Date: Tue, 4 Jun 2024 08:43:02 -0700 Subject: [PATCH 3/4] Create Task3 --- Nithish Reddy/Task3 | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 Nithish Reddy/Task3 diff --git a/Nithish Reddy/Task3 b/Nithish Reddy/Task3 new file mode 100644 index 0000000..5bb8616 --- /dev/null +++ b/Nithish Reddy/Task3 @@ -0,0 +1,45 @@ +import numpy as np +import matplotlib.pyplot as plt +from sklearn.model_selection import train_test_split +from sklearn.linear_model import LinearRegression +from sklearn.metrics import mean_squared_error +import pandas as pd +data_url = "http://lib.stat.cmu.edu/datasets/boston" +raw_df = pd.read_csv(data_url, sep="\s+", skiprows=22, header=None) +data = np.hstack([raw_df.values[::2, :], raw_df.values[1::2, :2]]) +target = raw_df.values[1::2, 2] + +# Load the Boston housing dataset + +X = data +y = target + +# Split the data into training and testing sets +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) + +# Initialize the linear regression model +model = LinearRegression() + +# Fit the model on the training data +model.fit(X_train, y_train) + +# Predict on the training and testing data +y_train_pred = model.predict(X_train) +y_test_pred = model.predict(X_test) + +# Calculate the scores +train_score = model.score(X_train, y_train) +test_score = model.score(X_test, y_test) + +print("Training score:", train_score) +print("Testing score:", test_score) + +# Plot residuals +plt.scatter(y_train_pred, y_train_pred - y_train, c='blue', marker='o', label='Training data') +plt.scatter(y_test_pred, y_test_pred - y_test, c='lightgreen', marker='s', label='Testing data') +plt.xlabel('Predicted values') +plt.ylabel('Residuals') +plt.legend(loc='upper left') +plt.hlines(y=0, xmin=0, xmax=50, lw=2, color='red') +plt.title('Residual plot') +plt.show() From 93dc4e486f47bfcf6c3ab5f415dc065bc05ee4b0 Mon Sep 17 00:00:00 2001 From: Nithish0904 <145535396+Nithish0904@users.noreply.github.com> Date: Tue, 4 Jun 2024 08:44:14 -0700 Subject: [PATCH 4/4] Create Task4 --- Nithish Reddy/Task4 | 52 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 Nithish Reddy/Task4 diff --git a/Nithish Reddy/Task4 b/Nithish Reddy/Task4 new file mode 100644 index 0000000..b8ed498 --- /dev/null +++ b/Nithish Reddy/Task4 @@ -0,0 +1,52 @@ +from PIL import Image +import os + +def get_size_format(b, factor=1024, suffix="B"): + """ + Scale bytes to its proper byte format. + e.g: 1253656 => '1.20MB', 1253656678 => '1.17GB' + """ + for unit in ["", "K", "M", "G", "T", "P", "E", "Z"]: + if b < factor: + return f"{b:.2f}{unit}{suffix}" + b /= factor + return f"{b:.2f}Y{suffix}" + +def compress_img(image_name, new_size_ratio=0.9, quality=90, width=None, height=None, to_jpg=True): + # Load the image into memory + img = Image.open(image_name) + + # Print the original image shape + print("[*] Image shape:", img.size) + + # Get the original image size in bytes + image_size = os.path.getsize(image_name) + print("[*] Size before compression:", get_size_format(image_size)) + + if new_size_ratio < 1.0: + # If resizing ratio is below 1.0, multiply width & height with this ratio to reduce image size + img = img.resize((int(img.size[0] * new_size_ratio), int(img.size[1] * new_size_ratio)), Image.ANTIALIAS) + elif width and height: + # If width and height are set, resize with them instead + img = img.resize((width, height), Image.ANTIALIAS) + + # Split the filename and extension + filename, ext = os.path.splitext(image_name) + + # Make a new filename appending "_compressed" to the original file name + if to_jpg: + # Change the extension to JPEG + new_filename = f"{filename}_compressed.jpg" + else: + # Retain the same extension of the original image + new_filename = f"{filename}_compressed{ext}" + + # Save the compressed image + img.save(new_filename, optimize=True, quality=quality) + + # Print the new image shape + print("[+] New Image shape:", img.size) + print(f"[*] Compressed image saved as: {new_filename}") + +# Example usage: +compress_img("wp1966881.jpg", new_size_ratio=0.8, quality=80, width=800, height=600)