Mehriddin1997 commited on
Commit
d01bcf0
·
verified ·
1 Parent(s): 29374cb

Upload 4 files

Browse files
Files changed (4) hide show
  1. README.md +98 -0
  2. main.py +85 -0
  3. predict.py +30 -0
  4. risk_model.pkl +3 -0
README.md ADDED
@@ -0,0 +1,98 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 🧠 Risk Prediction Classification Model
2
+
3
+ Bu loyiha foydalanuvchi kiritgan ma’lumotlarga asoslanib risk ehtimolini bashorat qiluvchi Machine Learning modelini o‘z ichiga oladi. Model Logistic Regression algoritmi yordamida o‘qitilgan va saqlangan model fayli orqali yangi ma’lumotlar uchun natija chiqaradi.
4
+
5
+ Loyiha o‘quv va tajriba maqsadida yaratilgan.
6
+
7
+ 🚀 Imkoniyatlar
8
+
9
+ O‘qitilgan modelni yuklash
10
+
11
+ Foydalanuvchi kiritgan qiymatlar asosida bashorat qilish
12
+
13
+ Natijani 0 yoki 1 ko‘rinishida chiqarish
14
+
15
+ Risk ehtimolligini foizda ko‘rsatish
16
+
17
+ Terminal orqali interaktiv ishlash
18
+
19
+ 📦 Texnologiyalar
20
+
21
+ Python
22
+
23
+ NumPy
24
+
25
+ Pandas
26
+
27
+ Scikit-learn
28
+
29
+ Joblib
30
+
31
+ 📁 Loyiha tuzilishi
32
+ project/
33
+
34
+ ├── risk_model.pkl # O‘qitilgan model
35
+ ├── predict.py # Foydalanuvchi kiritib ishlatadigan dastur
36
+ ├── main.py # Modelni o‘qitish kodi
37
+ └── README.md
38
+
39
+ ⚙️ O‘rnatish
40
+
41
+ Kerakli kutubxonalarni o‘rnating:
42
+
43
+ pip install numpy pandas scikit-learn joblib
44
+
45
+ ▶️ Ishga tushirish
46
+
47
+ Terminalda quyidagi buyruqni bajaring:
48
+
49
+ python predict.py
50
+
51
+
52
+ Dastur foydalanuvchidan quyidagi ma’lumotlarni so‘raydi:
53
+
54
+ yosh
55
+
56
+ oylik daromad
57
+
58
+ qarz miqdori
59
+
60
+ ish staji
61
+
62
+ Shundan so‘ng model bashorat natijasini chiqaradi.
63
+
64
+ 🧩 Model qanday ishlaydi
65
+
66
+ Model Logistic Regression algoritmidan foydalanadi.
67
+
68
+ Natija quyidagicha talqin qilinadi:
69
+
70
+ 0 → risk past
71
+
72
+ 1 → risk yuqori
73
+
74
+ Ehtimollik qiymati ham chiqariladi.
75
+
76
+ Agar ehtimollik ≥ 0.5 → risk yuqori
77
+ Agar ehtimollik < 0.5 → risk past
78
+
79
+ 💾 Modelni yuklab ishlatish misoli
80
+ import numpy as np
81
+ import joblib
82
+
83
+ loaded_model = joblib.load("risk_model.pkl")
84
+
85
+ sample = np.array([[30, 400, 3500, 1]])
86
+ prediction = loaded_model.predict(sample)
87
+ probability = loaded_model.predict_proba(sample)
88
+
89
+ print("Natija:", prediction)
90
+ print("Ehtimollik:", probability)
91
+
92
+ ☁️ Modelni ulashish
93
+
94
+ Modelni internetda ulashish uchun Hugging Face platformasiga yuklash mumkin.
95
+
96
+ 📌 Eslatma
97
+
98
+ Bu loyiha faqat o‘rganish va tajriba maqsadida yaratilgan. Natijalar real hayotiy qarorlar uchun ishlatilmasligi kerak.
main.py ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import numpy as np
2
+ import pandas as pd
3
+ import matplotlib.pyplot as plt
4
+
5
+ from sklearn.model_selection import train_test_split
6
+ from sklearn.linear_model import LogisticRegression
7
+ from sklearn.metrics import accuracy_score, confusion_matrix
8
+ import joblib
9
+
10
+
11
+ np.random.seed(42)
12
+
13
+ n_samples = 700
14
+
15
+ data = {
16
+ "age": np.random.randint(18, 65, n_samples),
17
+ "monthly_income": np.random.randint(200, 2000, n_samples),
18
+ "debt_amount": np.random.randint(0, 5000, n_samples),
19
+ "job_years": np.random.randint(0, 20, n_samples)
20
+ }
21
+
22
+ df = pd.DataFrame(data)
23
+
24
+ # Target (0 = to‘laydi, 1 = muammo bo‘lishi mumkin)
25
+ df["risk"] = (
26
+ (df["monthly_income"] < 500).astype(int) +
27
+ (df["debt_amount"] > 3000).astype(int) +
28
+ (df["job_years"] < 2).astype(int)
29
+ )
30
+
31
+ df["risk"] = (df["risk"] >= 2).astype(int)
32
+
33
+ print(df.head())
34
+
35
+ feature_cols = ["age", "monthly_income", "debt_amount", "job_years"]
36
+
37
+ X = df[feature_cols].values
38
+ y = df["risk"].values
39
+
40
+
41
+
42
+ X_train, X_test, y_train, y_test = train_test_split(
43
+ X, y, test_size=200, random_state=42, stratify=y
44
+ )
45
+
46
+ print("Train:", len(X_train))
47
+ print("Test:", len(X_test))
48
+
49
+
50
+
51
+ model = LogisticRegression(max_iter=1000)
52
+ model.fit(X_train, y_train)
53
+
54
+ y_pred = model.predict(X_test)
55
+
56
+
57
+ acc = accuracy_score(y_test, y_pred)
58
+ print("Accuracy:", acc)
59
+
60
+ cm = confusion_matrix(y_test, y_pred)
61
+ print("Confusion matrix:\n", cm)
62
+
63
+
64
+ plt.hist(model.predict_proba(X_test)[:,1], bins=20)
65
+ plt.xlabel("Risk ehtimoli")
66
+ plt.ylabel("Odamlar soni")
67
+ plt.title("Risk ehtimollari taqsimoti")
68
+ plt.show()
69
+
70
+
71
+
72
+ def predict_person(age, income, debt, job_years):
73
+ data = np.array([[age, income, debt, job_years]])
74
+ prob = model.predict_proba(data)[0][1]
75
+ pred = model.predict(data)[0]
76
+ return pred, prob
77
+
78
+ result, probability = predict_person(30, 400, 3500, 1)
79
+
80
+ print("Natija:", result)
81
+ print("Ehtimol:", probability)
82
+
83
+
84
+ joblib.dump(model, "risk_model.pkl")
85
+ print("Model saqlandi")
predict.py ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import numpy as np
2
+ import joblib
3
+
4
+ # 1. Modelni yuklash
5
+ loaded_model = joblib.load("risk_model.pkl")
6
+
7
+ print("=== Risk Bashorat Tizimi ===")
8
+
9
+ # 2. Foydalanuvchidan ma'lumot olish
10
+ age = int(input("Yoshni kiriting: "))
11
+ income = float(input("Oylik daromadni kiriting: "))
12
+ debt = float(input("Qarz miqdorini kiriting: "))
13
+ job_years = float(input("Ish staji (yil): "))
14
+
15
+ # 3. Modelga mos formatga o'tkazish
16
+ sample = np.array([[age, income, debt, job_years]])
17
+
18
+ # 4. Bashorat qilish
19
+ prediction = loaded_model.predict(sample)[0]
20
+ probability = loaded_model.predict_proba(sample)[0][1]
21
+
22
+ # 5. Natijani chiqarish
23
+ print("\n=== NATIJA ===")
24
+
25
+ if prediction == 1:
26
+ print("Risk yuqori bo‘lishi mumkin")
27
+ else:
28
+ print("Risk past")
29
+
30
+ print(f"Ehtimollik: {probability:.2f}")
risk_model.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6be4e42680303e44c0648ceb65806f601b0cbe05a4ccf052e8f909ce7bd7c87a
3
+ size 895