Python | Machine Learning | Coding | R
67.3K subscribers
1.25K photos
89 videos
153 files
907 links
Help and ads: @hussein_sheikho

Discover powerful insights with Python, Machine Learning, Coding, and R—your essential toolkit for data-driven solutions, smart alg

List of our channels:
https://t.me/addlist/8_rRW2scgfRhOTc0

https://telega.io/?r=nikapsOH
Download Telegram
In Python, the re module handles regular expressions (regex) for pattern matching in strings—vital for text processing like validating emails, extracting data from logs, or cleaning user input in interviews; it's compiled for efficiency but can be complex, so start simple and test with tools like regex101.com.

import re

# Basic search: Find if pattern exists (returns Match object or None)
txt = "The rain in Spain"
match = re.search(r"Spain", txt) # r"" for raw string (avoids escaping issues)
if match:
print(match.group()) # Output: Spain (full match)
print(match.start(), match.end()) # Output: 12 17 (positions)

# findall: Extract all matches as list (non-overlapping)
txt = "The rain in Spain stays mainly in the plain"
emails = re.findall(r"\w+@\w+\.com", "Contact: user1@example.com or user2@test.com")
print(emails) # Output: ['user1@example.com', 'user2@test.com']

# split: Divide string at matches (like str.split but with patterns)
words = re.split(r"\s+", "Hello world\twith spaces") # \s+ matches whitespace
print(words) # Output: ['Hello', 'world', 'with', 'spaces']

# sub: Replace matches (count limits replacements; use \1 for groups)
cleaned = re.sub(r"\d+", "***", "Phone: 123-456-7890 or 098-765-4321", count=1)
print(cleaned) # Output: Phone: *** or 098-765-4321 (first number replaced)

# Metacharacters basics:. (any char except \n), ^ (start), $ (end), * (0+), + (1+),? (0-1)
match = re.search(r"^The.*Spain$", txt) # ^ start, $ end,. any, * 0+ of previous
print(match.group() if match else "No match") # Output: The rain in Spain

# Character classes: \d (digit), \w (word char), [a-z] (range), [^0-9] (not digit)
nums = re.findall(r"\d+", "abc123def456") # \d+ one or more digits
print(nums) # Output: ['123', '456']

words_only = re.findall(r"\w+", "Hello123! World?") # \w+ word chars (alphanum + _)
print(words_only) # Output: ['Hello123', 'World']

# Groups: () capture parts; use for extraction or alternation
date = re.search(r"(\d{4})-(\d{2})-(\d{2})", "Event on 2023-10-27")
if date:
print(date.groups()) # Output: ('2023', '10', '27') (tuples of captures)
print(date.group(1)) # Output: 2023 (first group)

# Alternation: | for OR (e.g., cat|dog)
animals = re.findall(r"cat|dog", "I have a cat and a dog")
print(animals) # Output: ['cat', 'dog']

# Flags: re.IGNORECASE (case-insensitive), re.MULTILINE (^/$ per line)
text = "Spain\nin\nSpain"
matches = re.findall(r"^Spain", text, re.MULTILINE) # ^ matches start of each line
print(matches) # Output: ['Spain', 'Spain']

# Advanced: Greedy vs non-greedy (*? or +?) to match minimal
html = "<div><p>Text</p></div>"
content = re.search(r"<div>.*?</div>", html) #.*? non-greedy (stops at first </div>)
print(content.group()) # Output: <div><p>Text</p></div>

# Edge cases: Empty string, no match
print(re.search(r"a", "")) # Output: None
print(re.findall(r"\d", "no numbers")) # Output: []

# Compile for reuse (faster for multiple uses)
pattern = re.compile(r"\w+@\w+\.com")
email = pattern.search("email@example.com")
print(email.group() if email else "No email") # Output: email@example.com


Regex tips: Escape special chars with \ (e.g., . for literal dot); use raw strings (r""); test incrementally to avoid frustration—common pitfalls include forgetting anchors (^/$) or overusing.*. For performance, compile patterns; in interviews, explain your pattern step-by-step for clarity. #python #regex #re_module #patterns #textprocessing #interviews #stringmatching

😱 https://t.me/CodeProgrammer
Please open Telegram to view this post
VIEW IN TELEGRAM
7
In Python, NumPy is the cornerstone of scientific computing, offering high-performance multidimensional arrays and tools for working with them—critical for data science interviews and real-world applications! 📊

import numpy as np

# Array Creation - The foundation of NumPy
arr = np.array([1, 2, 3])
zeros = np.zeros((2, 3)) # 2x3 matrix of zeros
ones = np.ones((2, 2), dtype=int) # Integer matrix
arange = np.arange(0, 10, 2) # [0 2 4 6 8]
linspace = np.linspace(0, 1, 5) # [0. 0.25 0.5 0.75 1. ]
print(linspace)


# Array Attributes - Master your data's structure
matrix = np.array([[1, 2, 3], [4, 5, 6]])
print(matrix.shape) # Output: (2, 3)
print(matrix.ndim) # Output: 2
print(matrix.dtype) # Output: int64
print(matrix.size) # Output: 6


# Indexing & Slicing - Precision data access
data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(data[1, 2]) # Output: 6 (row 1, col 2)
print(data[0:2, 1:3]) # Output: [[2 3], [5 6]]
print(data[:, -1]) # Output: [3 6 9] (last column)


# Reshaping Arrays - Transform dimensions effortlessly
flat = np.arange(6)
reshaped = flat.reshape(2, 3)
raveled = reshaped.ravel()
print(reshaped)
# Output: [[0 1 2], [3 4 5]]
print(raveled) # Output: [0 1 2 3 4 5]


# Stacking Arrays - Combine datasets vertically/horizontally
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(np.vstack((a, b))) # Vertical stack
# Output: [[1 2 3], [4 5 6]]
print(np.hstack((a, b))) # Horizontal stack
# Output: [1 2 3 4 5 6]


# Mathematical Operations - Vectorized calculations
x = np.array([1, 2, 3])
y = np.array([4, 5, 6])
print(x + y) # Output: [5 7 9]
print(x * 2) # Output: [2 4 6]
print(np.dot(x, y)) # Output: 32 (1*4 + 2*5 + 3*6)


# Broadcasting Magic - Operate on mismatched shapes
matrix = np.array([[1, 2, 3], [4, 5, 6]])
scalar = 10
print(matrix + scalar)
# Output: [[11 12 13], [14 15 16]]


# Aggregation Functions - Statistical power in one line
values = np.array([1, 5, 3, 9, 7])
print(np.sum(values)) # Output: 25
print(np.mean(values)) # Output: 5.0
print(np.max(values)) # Output: 9
print(np.std(values)) # Output: 2.8284271247461903


# Boolean Masking - Filter data like a pro
temperatures = np.array([18, 25, 12, 30, 22])
hot_days = temperatures > 24
print(temperatures[hot_days]) # Output: [25 30]


# Random Number Generation - Simulate real-world data
print(np.random.rand(2, 2)) # Uniform distribution
print(np.random.randn(3)) # Normal distribution
print(np.random.randint(0, 10, (2, 3))) # Random integers


# Linear Algebra Essentials - Solve equations like a physicist
A = np.array([[3, 1], [1, 2]])
b = np.array([9, 8])
x = np.linalg.solve(A, b)
print(x) # Output: [2. 3.] (Solution to 3x+y=9 and x+2y=8)

# Matrix inverse and determinant
print(np.linalg.inv(A)) # Output: [[ 0.4 -0.2], [-0.2 0.6]]
print(np.linalg.det(A)) # Output: 5.0


# File Operations - Save/load your computational work
data = np.array([[1, 2], [3, 4]])
np.save('array.npy', data)
loaded = np.load('array.npy')
print(np.array_equal(data, loaded)) # Output: True


# Interview Power Move: Vectorization vs Loops
# 10x faster than native Python loops!
def square_sum(n):
arr = np.arange(n)
return np.sum(arr ** 2)

print(square_sum(5)) # Output: 30 (0²+1²+2²+3²+4²)


# Pro Tip: Memory-efficient data processing
# Process 1GB array without loading entire dataset
large_array = np.memmap('large_data.bin', dtype='float32', mode='r', shape=(1000000, 100))
print(large_array[0:5, 0:3]) # Process small slice


By: @DataScienceQ 🚀

#Python #NumPy #DataScience #CodingInterview #MachineLearning #ScientificComputing #DataAnalysis #Programming #TechJobs #DeveloperTips
6
🐍 10 Free Courses to Learn Python

👩🏻‍💻 These top-notch resources can take your #Python skills several levels higher. The best part is that they are all completely free!


1⃣ Comprehensive Python Course for Beginners

📃A complete video course that teaches Python from basic to advanced with clear and organized explanations.


2⃣ Intensive Python Training

📃A 4-hour intensive course, fast, focused, and to the point.


3⃣ Comprehensive Python Course

📃Training with lots of real examples and exercises.


4⃣ Introduction to Python

📃Learn the fundamentals with a focus on logic, clean coding, and solving real problems.


5⃣ Automate Daily Tasks with Python

📃Learn how to automate your daily project tasks with Python.


6⃣ Learn Python with Interactive Practice

📃Interactive lessons with real data and practical exercises.


7⃣ Scientific Computing with Python

📃Project-based, for those who want to work with data and scientific analysis.


8⃣ Step-by-Step Python Training

📃Step-by-step and short training for beginners with interactive exercises.


9⃣ Google's Python Class

📃A course by Google engineers with real exercises and professional tips.


1⃣ Introduction to Programming with Python

📃University-level content for conceptual learning and problem-solving with exercises and projects.

🌐 #DataScience #DataScience

https://t.me/CodeProgrammer
Please open Telegram to view this post
VIEW IN TELEGRAM
11
In Python, image processing unlocks powerful capabilities for computer vision, data augmentation, and automation—master these techniques to excel in ML engineering interviews and real-world applications! 🖼 

# PIL/Pillow Basics - The essential image library
from PIL import Image

# Open and display image
img = Image.open("input.jpg")
img.show()

# Convert formats
img.save("output.png")
img.convert("L").save("grayscale.jpg")  # RGB to grayscale

# Basic transformations
img.rotate(90).save("rotated.jpg")
img.resize((300, 300)).save("resized.jpg")
img.transpose(Image.FLIP_LEFT_RIGHT).save("mirrored.jpg")


more explain: https://hackmd.io/@husseinsheikho/imageprocessing

#Python #ImageProcessing #ComputerVision #Pillow #OpenCV #MachineLearning #CodingInterview #DataScience #Programming #TechJobs #DeveloperTips #AI #DeepLearning #CloudComputing #Docker #BackendDevelopment #SoftwareEngineering #CareerGrowth #TechTips #Python3
5👍1
💡 Building a Simple Convolutional Neural Network (CNN)

Constructing a basic Convolutional Neural Network (CNN) is a fundamental step in deep learning for image processing. Using TensorFlow's Keras API, we can define a network with convolutional, pooling, and dense layers to classify images. This example sets up a simple CNN to recognize handwritten digits from the MNIST dataset.

import tensorflow as tf
from tensorflow.keras import layers, models
from tensorflow.keras.datasets import mnist
import numpy as np

# 1. Load and preprocess the MNIST dataset
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

# Reshape images for CNN: (batch_size, height, width, channels)
# MNIST images are 28x28 grayscale, so channels = 1
train_images = train_images.reshape((60000, 28, 28, 1)).astype('float32') / 255
test_images = test_images.reshape((10000, 28, 28, 1)).astype('float32') / 255

# 2. Define the CNN architecture
model = models.Sequential()

# First Convolutional Block
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(layers.MaxPooling2D((2, 2)))

# Second Convolutional Block
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))

# Flatten the 3D output to 1D for the Dense layers
model.add(layers.Flatten())

# Dense (fully connected) layers
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10, activation='softmax')) # Output layer for 10 classes (digits 0-9)

# 3. Compile the model
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])

# Print a summary of the model layers
model.summary()

# 4. Train the model (uncomment to run training)
# print("\nTraining the model...")
# model.fit(train_images, train_labels, epochs=5, batch_size=64, validation_split=0.1)

# 5. Evaluate the model (uncomment to run evaluation)
# print("\nEvaluating the model...")
# test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)
# print(f"Test accuracy: {test_acc:.4f}")


Code explanation: This script defines a simple CNN using Keras. It loads and normalizes MNIST images. The Sequential model adds Conv2D layers for feature extraction, MaxPooling2D for downsampling, a Flatten layer to transition to 1D, and Dense layers for classification. The model is then compiled with an optimizer, loss function, and metrics, and a summary of its architecture is printed. Training and evaluation steps are included as commented-out examples.

#Python #DeepLearning #CNN #Keras #TensorFlow

━━━━━━━━━━━━━━━
By: @CodeProgrammer
16
🔥 A huge collection of the 17 best GitHub repositories for learning Python.

Perfect for those who want to level up from print('Hello') to advanced projects.


😰 Let's go:
1. 30-Days-Of-Python — a 30-day Python challenge covering the basics of the language.

2. Python Basics — simple and clear Python basics for beginners.

3. Learn Python — a topic-based guide with examples and code.

4. Python Guide — best practices, tools, and advanced topics.

5. Learn Python 3 — an easy-to-understand guide to Python 3 with practice.

6. Python Programming Exercises — 100+ Python exercises.

7. Coding Problems — algorithmic problems, perfect for interview prep.

8. Project-Based-Learning — learn Python through real projects.

9. Projects — ideas for practical projects and skill improvement.

10. 100-Days-Of-ML-Code — a step-by-step guide to Machine Learning in Python.

11. TheAlgorithms/Python — a huge collection of algorithms in Python.

12. Amazing-Python-Scripts — useful scripts from automation to advanced utilities.

13. Geekcomputers/Python — a collection of practical scripts: networking, files, automation.

14. Materials — code, exercises, and projects from Real Python.

15. Awesome Python — a top list of the best frameworks and libraries.

16. 30-Seconds-of-Python — short snippets for quick solutions.

17. Python Reference — life hacks, tutorials, and useful scripts.

👍 Save this so you don't have to search again.

#python #doc #github #soft
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍3🔥1💯1
🤖🧠 Reflex: Build Full-Stack Web Apps in Pure Python — Fast, Flexible and Powerful

🗓️ 29 Oct 2025
📚 AI News & Trends

Building modern web applications has traditionally required mastering multiple languages and frameworks from JavaScript for the frontend to Python, Java or Node.js for the backend. For many developers, switching between different technologies can slow down productivity and increase complexity. Reflex eliminates that problem. It is an innovative open-source full-stack web framework that allows developers to ...

#Reflex #FullStack #WebDevelopment #Python #OpenSource #WebApps
2
💡 NumPy Tip: Efficient Filtering with Boolean Masks

Avoid slow Python loops for filtering data. Instead, create a "mask" array of True/False values based on a condition. Applying this mask to your original array instantly selects only the elements where the mask is True, which is significantly faster.

import numpy as np

# Create an array of data
data = np.array([10, 55, 8, 92, 43, 77, 15])

# Create a boolean mask for values greater than 50
high_values_mask = data > 50

# Use the mask to select elements
filtered_data = data[high_values_mask]

print(filtered_data)
# Output: [55 92 77]


Code explanation: A NumPy array data is created. Then, a boolean array high_values_mask is generated, which is True for every element in data greater than 50. This mask is used as an index to efficiently extract and print only those matching elements from the original array.

#Python #NumPy #DataScience #CodingTips #Programming

━━━━━━━━━━━━━━━
By: @CodeProgrammer
2
💡 Python F-Strings Cheatsheet

F-strings (formatted string literals) provide a concise and powerful way to embed expressions inside string literals for formatting. Just prefix the string with an f or F.

1. Basic Variable and Expression Embedding
name = "Alice"
quantity = 5
print(f"Hello, {name}. You have {quantity * 2} items in your cart.")
# Output: Hello, Alice. You have 10 items in your cart.

• Place variables or expressions directly inside curly braces {}. Python evaluates the expression and inserts the result into the string.

2. Number Formatting
Control the appearance of numbers, such as padding with zeros or setting decimal precision.
pi_value = 3.14159
order_id = 42
print(f"Pi: {pi_value:.2f}")
print(f"Order ID: {order_id:04d}")
# Output:
# Pi: 3.14
# Order ID: 0042

:.2f formats the float to have exactly two decimal places.
:04d formats the integer to be at least 4 digits long, padding with leading zeros if necessary.

3. Alignment and Padding
Align text within a specified width, which is useful for creating tables or neatly formatted output.
item = "Docs"
print(f"|{item:<10}|") # Left-aligned
print(f"|{item:^10}|") # Center-aligned
print(f"|{item:>10}|") # Right-aligned
# Output:
# |Docs |
# | Docs |
# | Docs|

• Use < for left, ^ for center, and > for right alignment, followed by the total width.

4. Date and Time Formatting
Directly format datetime objects within an f-string.
from datetime import datetime
now = datetime.now()
print(f"Current time: {now:%Y-%m-%d %H:%M}")
# Output: Current time: 2023-10-27 14:30

• Use a colon : followed by standard strftime formatting codes to display dates and times as you wish.

#Python #Programming #CodingTips #FStrings #PythonTips

━━━━━━━━━━━━━━━
By: @CodeProgrammer
3🎉1
💡 Keras: Building Neural Networks Simply

Keras is a high-level deep learning API, now part of TensorFlow, designed for fast and easy experimentation. This guide covers the fundamental workflow: defining, compiling, training, and using a neural network model.

from tensorflow import keras
from tensorflow.keras import layers

# Define a Sequential model
model = keras.Sequential([
# Input layer with 64 neurons, expecting flat input data
layers.Dense(64, activation="relu", input_shape=(784,)),
# A hidden layer with 32 neurons
layers.Dense(32, activation="relu"),
# Output layer with 10 neurons for 10-class classification
layers.Dense(10, activation="softmax")
])

model.summary()

Model Definition: keras.Sequential creates a simple, layer-by-layer model.
layers.Dense is a standard fully-connected layer. The first layer must specify the input_shape.
activation functions like "relu" introduce non-linearity, while "softmax" is used on the output layer for multi-class classification to produce probabilities.

# (Continuing from the previous step)
model.compile(
optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy']
)

print("Model compiled successfully.")

Compilation: .compile() configures the model for training.
optimizer is the algorithm used to update the model's weights (e.g., 'adam' is a popular choice).
loss is the function the model tries to minimize during training. sparse_categorical_crossentropy is common for integer-based classification labels.
metrics are used to monitor the training and testing steps. Here, we track accuracy.

import numpy as np

# Create dummy training data
x_train = np.random.random((1000, 784))
y_train = np.random.randint(10, size=(1000,))

# Train the model
history = model.fit(
x_train,
y_train,
epochs=5,
batch_size=32,
verbose=0 # Hides the progress bar for a cleaner output
)

print(f"Training complete. Final accuracy: {history.history['accuracy'][-1]:.4f}")
# Output (will vary):
# Training complete. Final accuracy: 0.4570

Training: The .fit() method trains the model on your data.
x_train and y_train are your input features and target labels.
epochs defines how many times the model will see the entire dataset.
batch_size is the number of samples processed before the model is updated.

# Create a single dummy sample to test
x_test = np.random.random((1, 784))

# Get the model's prediction
predictions = model.predict(x_test)
predicted_class = np.argmax(predictions[0])

print(f"Predicted class: {predicted_class}")
print(f"Confidence scores: {predictions[0].round(2)}")
# Output (will vary):
# Predicted class: 3
# Confidence scores: [0.09 0.1 0.1 0.12 0.1 0.09 0.11 0.1 0.09 0.1 ]

Prediction: .predict() is used to make predictions on new, unseen data.
• For a classification model with a softmax output, this returns an array of probabilities for each class.
np.argmax() is used to find the index (the class) with the highest probability score.

#Keras #TensorFlow #DeepLearning #MachineLearning #Python

━━━━━━━━━━━━━━━
By: @CodeProgrammer
3🔥3👍1
💡 {{Python Exam}}

Python dictionaries are a fundamental data structure used to store data as key-value pairs. They are mutable (can be changed), dynamic, and since Python 3.7, they maintain the order of insertion. Keys must be unique and of an immutable type (like strings or numbers), while values can be of any type.

1. Creating and Accessing Dictionaries
# Creating a dictionary
student = {
"name": "Alex",
"age": 21,
"courses": ["Math", "CompSci"]
}

# Accessing values
print(f"Name: {student['name']}")
print(f"Age: {student.get('age')}")

# Safe access for a non-existent key
print(f"Major: {student.get('major', 'Not specified')}")

# --- Sample Output ---
# Name: Alex
# Age: 21
# Major: Not specified

• A dictionary is created using curly braces {} with key: value pairs.
student['name'] accesses the value using its key. This will raise a KeyError if the key doesn't exist.
student.get('age') is a safer way to access a value, returning None if the key is not found.
.get() can also take a second argument as a default value to return if the key is missing.

2. Modifying a Dictionary
user_profile = {
"username": "coder_01",
"level": 5
}

# Add a new key-value pair
user_profile["email"] = "coder@example.com"
print(f"After adding: {user_profile}")

# Update an existing value
user_profile["level"] = 6
print(f"After updating: {user_profile}")

# Remove a key-value pair
del user_profile["email"]
print(f"After deleting: {user_profile}")

# --- Sample Output ---
# After adding: {'username': 'coder_01', 'level': 5, 'email': 'coder@example.com'}
# After updating: {'username': 'coder_01', 'level': 6, 'email': 'coder@example.com'}
# After deleting: {'username': 'coder_01', 'level': 6}

• A new key-value pair is added using simple assignment dict[new_key] = new_value.
• The value of an existing key is updated by assigning a new value to it.
• The del keyword completely removes a key-value pair from the dictionary.

3. Looping Through Dictionaries
inventory = {
"apples": 430,
"bananas": 312,
"oranges": 525
}

# Loop through keys
print("--- Keys ---")
for item in inventory.keys():
print(item)

# Loop through values
print("\n--- Values ---")
for quantity in inventory.values():
print(quantity)

# Loop through key-value pairs
print("\n--- Items ---")
for item, quantity in inventory.items():
print(f"{item}: {quantity}")

# --- Sample Output ---
# --- Keys ---
# apples
# bananas
# oranges
#
# --- Values ---
# 430
# 312
# 525
#
# --- Items ---
# apples: 430
# bananas: 312
# oranges: 525

.keys() returns a view object of all keys, which can be looped over.
.values() returns a view object of all values.
.items() returns a view object of key-value tuple pairs, allowing you to easily access both in each loop iteration.

#Python #DataStructures #Dictionaries #Programming #PythonBasics

━━━━━━━━━━━━━━━
By: @CodeProgrammer
4👍1
#NLP #Lesson #SentimentAnalysis #MachineLearning

Building an NLP Model from Scratch: Sentiment Analysis

This lesson will guide you through creating a complete Natural Language Processing (NLP) project. We will build a sentiment analysis classifier that can determine if a piece of text is positive or negative.

---

Step 1: Setup and Data Preparation

First, we need to import the necessary libraries and prepare our dataset. For simplicity, we'll use a small, hard-coded list of sentences. In a real-world project, you would load this data from a file (e.g., a CSV).

#Python #DataPreparation

# Imports and Data
import re
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score, classification_report
import nltk
from nltk.corpus import stopwords

# You may need to download stopwords for the first time
# nltk.download('stopwords')

# Sample Data (In a real project, load this from a file)
texts = [
"I love this movie, it's fantastic!",
"This was a terrible film.",
"The acting was superb and the plot was great.",
"I would not recommend this to anyone.",
"It was an okay movie, not the best but enjoyable.",
"Absolutely brilliant, a must-see!",
"A complete waste of time and money.",
"The story was compelling and engaging."
]
# Labels: 1 for Positive, 0 for Negative
labels = [1, 0, 1, 0, 1, 1, 0, 1]


---

Step 2: Text Preprocessing

Computers don't understand words, so we must clean and process our text data first. This involves making text lowercase, removing punctuation, and filtering out common "stop words" (like 'the', 'a', 'is') that don't add much meaning.

#TextPreprocessing #DataCleaning

# Text Preprocessing Function
stop_words = set(stopwords.words('english'))

def preprocess_text(text):
# Make text lowercase
text = text.lower()
# Remove punctuation
text = re.sub(r'[^\w\s]', '', text)
# Tokenize and remove stopwords
tokens = text.split()
filtered_tokens = [word for word in tokens if word not in stop_words]
return " ".join(filtered_tokens)

# Apply preprocessing to our dataset
processed_texts = [preprocess_text(text) for text in texts]
print("--- Original vs. Processed ---")
for i in range(3):
print(f"Original: {texts[i]}")
print(f"Processed: {processed_texts[i]}\n")


---

Step 3: Splitting the Data

We must split our data into a training set (to teach the model) and a testing set (to evaluate its performance on unseen data).

#MachineLearning #TrainTestSplit

# Splitting data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(
processed_texts,
labels,
test_size=0.25, # Use 25% of data for testing
random_state=42 # for reproducibility
)

print(f"Training samples: {len(X_train)}")
print(f"Testing samples: {len(X_test)}")


---

Step 4: Feature Extraction (Vectorization)

We need to convert our cleaned text into a numerical format. We'll use TF-IDF (Term Frequency-Inverse Document Frequency). This technique converts text into vectors of numbers, giving more weight to words that are important to a document but not common across all documents.

#FeatureEngineering #TFIDF #Vectorization
1
#YOLOv8 #ComputerVision #TrafficManagement #Python #AI #SmartCity

Lesson: Detecting Traffic Congestion in Road Lanes with YOLOv8

This tutorial will guide you through building a system to monitor traffic on a highway from a video feed. We'll use YOLOv8 to detect vehicles and then define specific zones (lanes) to count the number of vehicles within them, determining if a lane is congested.

---

#Step 1: Project Setup and Dependencies

We need to install ultralytics for YOLOv8 and opencv-python for video and image processing. numpy is also essential for handling the coordinates of our detection zones.

pip install ultralytics opencv-python numpy

Create a Python script (e.g., traffic_monitor.py) and import the necessary libraries.

import cv2
import numpy as np
from ultralytics import YOLO

# Hashtags: #Setup #Python #OpenCV #YOLOv8


---

#Step 2: Model Loading and Lane Definition

We'll load a pre-trained YOLOv8 model, which is excellent at detecting common objects like cars, trucks, and buses. The most critical part of this step is defining the zones of interest (our lanes) as polygons on the video frame. You will need to adjust these coordinates to match the perspective of your specific video.

You will also need a video file, for example, traffic_video.mp4.

# Load a pre-trained YOLOv8 model (yolov8n.pt is small and fast)
model = YOLO('yolov8n.pt')

# Path to your video file
VIDEO_PATH = 'traffic_video.mp4'

# Define the polygons for two lanes.
# IMPORTANT: You MUST adjust these coordinates for your video's perspective.
# Each polygon is a numpy array of [x, y] coordinates.
LANE_1_POLYGON = np.array([[20, 400], [450, 400], [450, 250], [20, 250]], np.int32)
LANE_2_POLYGON = np.array([[500, 400], [980, 400], [980, 250], [500, 250]], np.int32)

# Define the congestion threshold. If vehicle count > this, the lane is congested.
CONGESTION_THRESHOLD = 10

# Hashtags: #Configuration #AIModel #SmartCity


---

#Step 3: Main Loop for Detection and Counting

This is the core of our program. We will loop through each frame of the video, run vehicle detection, and then check if the center of each detected vehicle falls inside our predefined lane polygons. We will keep a count for each lane.

cap = cv2.VideoCapture(VIDEO_PATH)

while cap.isOpened():
success, frame = cap.read()
if not success:
break

# Run YOLOv8 inference on the frame
results = model(frame)

# Initialize vehicle counts for each lane for the current frame
lane_1_count = 0
lane_2_count = 0

# Process detection results
for r in results:
for box in r.boxes:
# Check if the detected object is a vehicle
class_id = int(box.cls[0])
class_name = model.names[class_id]

if class_name in ['car', 'truck', 'bus', 'motorbike']:
# Get bounding box coordinates
x1, y1, x2, y2 = map(int, box.xyxy[0])

# Calculate the center point of the bounding box
center_x = (x1 + x2) // 2
center_y = (y1 + y2) // 2

# Check if the center point is inside Lane 1
if cv2.pointPolygonTest(LANE_1_POLYGON, (center_x, center_y), False) >= 0:
lane_1_count += 1

# Check if the center point is inside Lane 2
elif cv2.pointPolygonTest(LANE_2_POLYGON, (center_x, center_y), False) >= 0:
lane_2_count += 1

# Hashtags: #RealTime #ObjectDetection #VideoProcessing

(Note: The code below should be placed inside the while loop of Step 3)

---

#Step 4: Visualization and Displaying Results
3
#TelegramBot #Python #SQLite #DataExport #CSV #API

Lesson: Creating a Telegram Bot to Export Channel Members to a CSV File

This tutorial guides you through building a Telegram bot from scratch. When added as an administrator to a channel, the bot will respond to an /export command from the channel owner, exporting the list of members (Username, User ID, etc.) to a CSV file and storing a log of the action in a SQLite database.

IMPORTANT NOTE: Due to Telegram's privacy policy, bots CANNOT access users' phone numbers. This field will be marked as "N/A".

---

#Step 1: Bot Creation and Project Setup

First, create a bot via the @BotFather on Telegram. Send it the /newbot command, follow the instructions, and save the HTTP API token it gives you.

Next, set up your Python environment. Install the necessary library: python-telegram-bot.

pip install python-telegram-bot


Create a new Python file named bot.py and add the basic structure. Replace 'YOUR_TELEGRAM_API_TOKEN' with the token you got from BotFather.

import logging
from telegram import Update
from telegram.ext import Application, CommandHandler, ContextTypes

# Enable logging
logging.basicConfig(format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", level=logging.INFO)

TOKEN = 'YOUR_TELEGRAM_API_TOKEN'

def main() -> None:
"""Start the bot."""
application = Application.builder().token(TOKEN).build()

# We will add command handlers here in the next steps
# application.add_handler(CommandHandler("export", export_members))

print("Bot is running...")
application.run_polling()

if __name__ == "__main__":
main()

# Hashtags: #Setup #TelegramAPI #PythonBot #BotFather


---

#Step 2: Database Setup for Logging (database.py)

To fulfill the requirement of using a database, we will log every export request. Create a new file named database.py. This separates our data logic from the bot logic.

import sqlite3
from datetime import datetime

DB_NAME = 'bot_logs.db'

def setup_database():
"""Creates the database table if it doesn't exist."""
conn = sqlite3.connect(DB_NAME)
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS export_logs (
id INTEGER PRIMARY KEY AUTOINCREMENT,
chat_id INTEGER NOT NULL,
chat_title TEXT,
requested_by_id INTEGER NOT NULL,
requested_by_username TEXT,
timestamp TEXT NOT NULL
)
''')
conn.commit()
conn.close()

def log_export_action(chat_id, chat_title, user_id, username):
"""Logs a successful export action to the database."""
conn = sqlite3.connect(DB_NAME)
cursor = conn.cursor()
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
cursor.execute(
"INSERT INTO export_logs (chat_id, chat_title, requested_by_id, requested_by_username, timestamp) VALUES (?, ?, ?, ?, ?)",
(chat_id, chat_title, user_id, username, timestamp)
)
conn.commit()
conn.close()

# Hashtags: #SQLite #DatabaseDesign #Logging #DataPersistence


---

#Step 3: Implementing the Export Command and Permission Check

Now, we'll write the core function in bot.py. This function will handle the /export command. The most crucial part is to check if the user who sent the command is the creator of the channel. This prevents any admin from exporting the data.
3
#PDF #EPUB #TelegramBot #Python #SQLite #Project

Lesson: Building a PDF <> EPUB Telegram Converter Bot

This lesson walks you through creating a fully functional Telegram bot from scratch. The bot will accept PDF or EPUB files, convert them to the other format, and log each transaction in an SQLite database.

---

Part 1: Prerequisites & Setup

First, we need to install the necessary Python library for the Telegram Bot API. We will also rely on Calibre's command-line tools for conversion.

Important: You must install Calibre on the system where the bot will run and ensure its ebook-convert tool is in your system's PATH.

pip install python-telegram-bot==20.3

#Setup #Prerequisites

---

Part 2: Database Initialization

We'll use SQLite to log every successful conversion. Create a file named database_setup.py and run it once to create the database file and the table.

# database_setup.py
import sqlite3

def setup_database():
conn = sqlite3.connect('conversions.db')
cursor = conn.cursor()

# Create table to store conversion logs
cursor.execute('''
CREATE TABLE IF NOT EXISTS conversions (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER NOT NULL,
original_filename TEXT NOT NULL,
converted_filename TEXT NOT NULL,
conversion_type TEXT NOT NULL,
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
)
''')

conn.commit()
conn.close()
print("Database setup complete. 'conversions.db' is ready.")

if __name__ == '__main__':
setup_database()


#Database #SQLite #Initialization

---

Part 3: The Main Bot Script - Imports & Basic Commands

Now, let's create our main bot file, converter_bot.py. We'll start with imports and the initial /start and /help commands.

# converter_bot.py
import logging
import os
import sqlite3
import subprocess
from telegram import Update
from telegram.ext import Application, CommandHandler, MessageHandler, filters, ContextTypes

# Enable logging
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)

# --- Bot Token ---
TELEGRAM_TOKEN = "YOUR_TELEGRAM_BOT_TOKEN"

# --- Command Handlers ---
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
user = update.effective_user
await update.message.reply_html(
rf"Hi {user.mention_html()}! Send me a PDF or EPUB file to convert.",
)

async def help_command(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
await update.message.reply_text("Simply send a .pdf file to get an .epub, or send an .epub file to get a .pdf. Note: Conversion quality depends on the source file's structure.")


#TelegramBot #Python #Boilerplate

---

Part 4: The Core Conversion Logic

This function will be the heart of our bot. It uses the ebook-convert command-line tool (from Calibre) to perform the conversion. It's crucial that Calibre is installed correctly for this to work.