algoroots
🤔رمزنگاری هش: یک تکنیک که یک ورودی با اندازه دلخواه را به یک خروجی با اندازه ی ثابت تبدیل میکند و خروجی را به اصطلاح هش مینامند! یک الگوریتم بسیار حساس به تغییر و مقاوم کاربرد ها : ذخیره ی امن پسورد امضای دیجیتال بلاک چین
import hashlib
data ="Hello,world!".encode()
hash_value = hashlib.sha256(data).hexdigest()
print("SHA-256 Hash:", hash_value)
❤1👍1👎1
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
#Ml
❤3
🤔الگوریتم k-means
یک الگوریتم کلاسیک و مهم در یادگیریه بدون نظارت که در خوشه بندی استفاده میشود.
این الگوریتم مجموعه ای از نقاط داده را به K خوشه مجزا تقسیم میکند :
به صورتی که نقاط داخل هر خوشه بیشترین همسایگی را با هم داشته باشند و نقاط مختلف هر خوشه بیشترین تفاوت را با هم.
مسئله ریاضی پشت این الگوریتم کمینه کردن مجموع مربع فاصله داده ها از مرکز است.
#ML
یک الگوریتم کلاسیک و مهم در یادگیریه بدون نظارت که در خوشه بندی استفاده میشود.
این الگوریتم مجموعه ای از نقاط داده را به K خوشه مجزا تقسیم میکند :
به صورتی که نقاط داخل هر خوشه بیشترین همسایگی را با هم داشته باشند و نقاط مختلف هر خوشه بیشترین تفاوت را با هم.
مسئله ریاضی پشت این الگوریتم کمینه کردن مجموع مربع فاصله داده ها از مرکز است.
#ML
👍4❤1
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
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…
ساختار الگوریتم KNN مهم و کاربردی برای مسائل دسته بندی و رگرسیون
#ML
#ML
❤1👍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
◽️راهکار جایگزین بردارسازی با نامپای هست
◽️برای تصادفی نشدن نتایج در کلاس ها با رأی برابر شرطی کردن روش خوبی است
بخصوص بررسی میانگین
◽️معیار 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
algoroots
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…
ساختار این الگوریتم برای یافتن بیشینه ی تابع درجه دوم
#python
#python
❤1
algoroots
ساختار این الگوریتم برای یافتن بیشینه ی تابع درجه دوم #python
جایگزین کردن numpy.array به جای str ها برای بهینه کردن سرعت
اگر تابع fitness سنگین باشد باید از memorization استفاده
ارزیابی مکرر پرهزینه است
طراحی کلاس برای کروموزوم بسیار مناسب است(OOP)
اگر نرخ جهش بالا باشد
الگوریتم شبیه جستجوی تصادفی میشود
نداشتن تنوع در جمعیت موجب گیرافتادن در بهینه ی محلی میشود(مهم)
رعایت این نکات الگوریتم را بسیار بهینه میکند
اگر تابع fitness سنگین باشد باید از memorization استفاده
ارزیابی مکرر پرهزینه است
طراحی کلاس برای کروموزوم بسیار مناسب است(OOP)
اگر نرخ جهش بالا باشد
الگوریتم شبیه جستجوی تصادفی میشود
نداشتن تنوع در جمعیت موجب گیرافتادن در بهینه ی محلی میشود(مهم)
رعایت این نکات الگوریتم را بسیار بهینه میکند
❤1🤔1
def is_prime(n):
if n <= 1:
return False
if n <= 3:
return True
if n % 2 == 0 or n % 3 == 0:
return False
i = 5
while i * i <= n:
if n % i == 0 or n % (i + 2) == 0:
return False
i += 6
return True
def next_prime(n):
candidate = n + 1
while not is_prime(candidate):
candidate += 1
return candidate
def sum_with_next_prime(num):
if is_prime(num):
next = next_prime(num)
result =num +next
print(f"{num} is a prime Sum with the next prime {next} is: {result}")
else:
print(f"{num} is not a prime")
number=int(input("Enter a number: "))
sum_with_next_prime(number)
❤2🔥1
عدم پشتیبانی از اعداد بزرگ در این الگوریتم ها به چشم میخورد
که برای پیاده سازی های بزرگ مشکل است
که برای پیاده سازی های بزرگ مشکل است
❤1👍1🤔1