Mehriddin1997's picture
Upload 4 files
d01bcf0 verified
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")