Something went wrong. Try again.
💙 A custom feed platform for Bluesky bsky.app/profile/cuducos.me/feed/aaahlw3uvkhgq
feed bluesky atproto
Something went wrong. Try again.
1.3 kB · 45 lines
Python
at main
12345678910111213141516171819202122232425262728293031323334353637383940414243444546from sklearn.ensemble import RandomForestClassifierfrom sklearn.feature_extraction.text import TfidfVectorizerfrom sklearn.metrics import classification_reportfrom sklearn.model_selection import StratifiedKFold, cross_val_predict
from classifier import load_data
def _vectorizer(): return TfidfVectorizer( max_features=10_000, ngram_range=(1, 2), sublinear_tf=True, min_df=2, )
def _classifier(): return RandomForestClassifier( n_estimators=200, class_weight="balanced", random_state=42 )
def evaluate(path): texts, y = load_data(path) x = _vectorizer().fit_transform(texts) cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=42) y_pred = cross_val_predict(_classifier(), x, y, cv=cv) report = classification_report( y, y_pred, target_names=["unrelated", "related"], output_dict=True ) return { "accuracy": report["accuracy"], "f1_related": report["related"]["f1-score"], "f1_unrelated": report["unrelated"]["f1-score"], }
def train(path): texts, y = load_data(path) vec = _vectorizer() x = vec.fit_transform(texts) clf = _classifier() clf.fit(x, y) return clf, {"vectorizer": vec, "type": "tfidf"}