algoroots
105 subscribers
5 photos
2 videos
5 files
6 links
جایی برای تقویت ذهن الگوریتمی با
الگوریتم های کاربردی در حوزه های جذاب
Download Telegram
algoroots
@MachineLearning_ir - Interactive Linear Algebra.pdf
📚پایه ای بسیار مهم برای فهم و توسعه ی مدل های یادگیری ماشین
#Ml
2
@MachineLearning_ir - ML with Python Cookbook.pdf
1.8 MB
کتاب یادگیری ماشین با پایتون

از : Chris Albon
4
algoroots
@MachineLearning_ir - ML with Python Cookbook.pdf
📚پر از مسائل متداول و عملی
دارای راهکار های سریع و کاربردی
#Ml
3
🤔رمزنگاری هش:

یک تکنیک که یک ورودی با اندازه دلخواه را به
یک خروجی با اندازه ی ثابت تبدیل میکند
و خروجی را به اصطلاح هش می‌نامند!

یک الگوریتم بسیار حساس به تغییر و مقاوم

کاربرد ها :
ذخیره ی امن پسورد
امضای دیجیتال
بلاک چین
2👎1
lecture_notes.pdf
989.7 KB
carnegie mellon جزوه ی مبانی رمز دانشگاه
🤔21
algoroots
lecture_notes.pdf
مناسب برای یادگیری الگوریتم های رمز

#cryptography
2
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score, classification_report

iris=load_iris()
X = iris.data
y = iris.target

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

model = KNeighborsClassifier(n_neighbors=3)
model.fit(X_train, y_train)

y_pred=model.predict(X_test)

accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy * 100:.2f}%")
print("\nClassification Report:")
print(classification_report(y_test, y_pred, target_names=iris.target_names))
2
Chip_Huyen_Designing_Machine_Learning_Systems_An_Iterative_Process.pdf
15.5 MB
کتابی برای پیاده سازی سیستم های ماشین لرنینگ به صورت واقعی و عملی
#Ml
3
🤔الگوریتم k-means

یک الگوریتم کلاسیک و مهم در یادگیریه بدون نظارت که در خوشه بندی استفاده میشود.

این الگوریتم مجموعه ای از نقاط داده را به K خوشه مجزا تقسیم می‌کند :
به صورتی که نقاط داخل هر خوشه بیشترین همسایگی را با هم داشته باشند و نقاط مختلف هر خوشه بیشترین تفاوت را با هم.


مسئله ریاضی پشت این الگوریتم کمینه کردن مجموع مربع فاصله داده ها از مرکز است.

#ML
👍41
import numpy as np

def initialize_centroids(X, k):
indices = np.random.choice(len(X), size=k, replace=False)
return X[indices]

def assign_clusters(X,centroids):
distances = np.linalg.norm(X[:, np.newaxis] -centroids, axis=2)
return np.argmin(distances, axis=1)

def update_centroids(X, labels, k):
return np.array([X[labels== i].mean(axis=0) for i in range(k)])

def has_converged(old_centroids, new_centroids, tolerance=1e-4):
shifts = np.linalg.norm(new_centroids - old_centroids, axis=1)
return np.all(shifts < tolerance)

def kmeans(X, k, max_iterations=100):
centroids=initialize_centroids(X, k)

for _ in range(max_iterations):
labels = assign_clusters(X, centroids)
new_centroids = update_centroids(X, labels, k)

if has_converged(centroids, new_centroids):
break

centroids=new_centroids

return centroids, labels
1
◻️ارزیابی Silhouette Score :

یکی از بهترین ارزیابی ها برای خوشه بندی

اندازه‌گیری میزان شباهت هر نقطه به خوشه اش نسبت به خوشه های دیگر

مقدار در بازه ی [1,1-]
نزدیک به 1 یعنی خوشه بندی عالی
نزدیک به صفر یعنی نقاط بین دو خوشه است
نزدیک به 1- یعنی اشتباه در خوشه بندی
#ML
👍21
import numpy as np
from collections import Counter

def euclidean_distance(a, b):
return np.sqrt(np.sum((a-b) ** 2))

class KNN:
def __init__(self, k=3):
self.k = k

def fit(self, X, y):
self.X_train = X
self.y_train = y

def predict(self, X):
return [self._predict(x) for x in X]

def _predict(self, x):

distances = [euclidean_distance(x, x_train) for x_train in self.X_train]

k_indics = np.argsort(distances)[:self.k]

k_nearest_labels = [self.y_train[i] for i in k_indics]

most_common = Counter(k_nearest_labels).most_common(1)
return most_common[0][0]
1
algoroots
import numpy as np from collections import Counter def euclidean_distance(a, b): return np.sqrt(np.sum((a-b) ** 2)) class KNN: def __init__(self, k=3): self.k = k def fit(self, X, y): self.X_train = X self.y_train = y…
◼️برای هر نمونه از حلقه های for تو در تو نباید استفاده شه
◽️راهکار جایگزین بردارسازی با نامپای هست

◽️برای تصادفی نشدن نتایج در کلاس ها با رأی برابر شرطی کردن روش خوبی است
بخصوص بررسی میانگین

◽️معیار F1_score حتما در کنار سه معیار شاخص بررسی شود

◽️مقدار خیلی کوچک K باعث نویز میشود
و بزرگ آن دقت را کم میکند
بهینه سازی با Cross_validatiam راهکار خوبی است


رعایت این نکات الگوریتم را بسیار بهینه میکند .

#ML
#python
1👍1
الگوریتم ژنتیک(GA) :

الگوریتمی برای جست و جوی تصادفی با استفاده از تکامل زیستی

عملکرد کلی :

◽️جمعیت اولیه:
از پاسخ های تصادفی به نام کروموزوم ها استفاده میکنیم

◽️ارزیابی:
با استفاده از یک تابع هدف کیفیت هر کروموزوم سنجیده میشود

◽️انتخاب :
کروموزوم های بهتر با احتمال بیشتر برای تولید مثل انتخاب میشوند

◽️کراس اور :
ترکیب دو کروموزوم برای تولید فرزندان جدید

◽️جهش :
برای جلوگیری از گیرافتادن در مینیمم های محلی به طور تصادفی ژن ها در کروموزوم ها تغییر می‌کنند

◽️تکامل نسل :
تکرار مراحل تا به یک شرط توقف یا جواب بهینه برسیم

ویژگی :
عملکرد قوی در فضاهای پیچیده
مناسب برای مسائل غیرخطی و پیچیده
1🔥1
import random

def fitness(x):
return x**2


def decode(chromosome, a, b, bits):
value =int(chromosome, 2)
return a + (b - a) * value / (2**bits - 1)


def random_chromosome(bits):
return ''.join(random.choice('01') for_in range(bits))


def selection(population, scores):
k = 3
selected = random.choices(list(zip(population, scores)), k=k)
selected.sort(key=lambda x: x[1], reverse=True)
return selected[0][0]

def crossover(p1, p2, rate=0.7):
if random.random() < rate:
point = random.randint(1, len(p1) - 1)
return p1[:point] + p2[point:], p2[:point] + p1[point:]
return p1, p2


def mutate(chromosome, rate=0.01):
return ''.join(
bit if random.random() > rate else ('1' if bit == '0' else '0')
for bit in chromosome
)


bits = 10
bounds = (-10, 10)
population_size = 20
generations = 50

population = [random_chromosome(bits) for _ in range(population_size)]


for gen in range(generations):
decoded = [decode(c, *bounds, bits) for c in population]
scores=[fitness(d) for d in decoded]


best_idx = scores.index(max(scores))
print(f"{gen}: x = {decoded[best_idx]:.3f}, f(x) = {scores[best_idx]:.3f}")


select = [selection(population, scores) for _ in range(population_size)]


children = [ ]
for i in range(0, population_size, 2):
p1, p2 = select[i], select[i+1]
c1, c2 =crossover(p1, p2)
c1, c2 =mutate(c1), mutate(c2)
children.extend([c1, c2])

population = children
2