import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score, confusion_matrix import joblib np.random.seed(42) n_samples = 700 data = { "age": np.random.randint(18, 65, n_samples), "monthly_income": np.random.randint(200, 2000, n_samples), "debt_amount": np.random.randint(0, 5000, n_samples), "job_years": np.random.randint(0, 20, n_samples) } df = pd.DataFrame(data) # Target (0 = to‘laydi, 1 = muammo bo‘lishi mumkin) df["risk"] = ( (df["monthly_income"] < 500).astype(int) + (df["debt_amount"] > 3000).astype(int) + (df["job_years"] < 2).astype(int) ) df["risk"] = (df["risk"] >= 2).astype(int) print(df.head()) feature_cols = ["age", "monthly_income", "debt_amount", "job_years"] X = df[feature_cols].values y = df["risk"].values X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=200, random_state=42, stratify=y ) print("Train:", len(X_train)) print("Test:", len(X_test)) model = LogisticRegression(max_iter=1000) model.fit(X_train, y_train) y_pred = model.predict(X_test) acc = accuracy_score(y_test, y_pred) print("Accuracy:", acc) cm = confusion_matrix(y_test, y_pred) print("Confusion matrix:\n", cm) plt.hist(model.predict_proba(X_test)[:,1], bins=20) plt.xlabel("Risk ehtimoli") plt.ylabel("Odamlar soni") plt.title("Risk ehtimollari taqsimoti") plt.show() def predict_person(age, income, debt, job_years): data = np.array([[age, income, debt, job_years]]) prob = model.predict_proba(data)[0][1] pred = model.predict(data)[0] return pred, prob result, probability = predict_person(30, 400, 3500, 1) print("Natija:", result) print("Ehtimol:", probability) joblib.dump(model, "risk_model.pkl") print("Model saqlandi")