训练样本是166组客户基础信息,包括职业,年龄,性别,手机入网时长,信用卡额度5个变量, 职业包含,房地产服务人员,工程技术人员,企事业单位负责人,有空值。 年龄包含,从18岁到60岁,有空值。 性别包含,M和F。 手机入网时长包含,半年至一年,二至六个月,两年至三年,三年以上,一个月以内,一年至两年,一至两个月。 信用卡额度包含,0-6K,6K-10K,10K-20K,20K-30K,30K-50K,50K以上,有空值。 是否涉案是因变量,1代表是,0代表否。即模型需要预测的结果。 请选择合适的变量,建立逻辑回归模型,将数据集拆分为训练集和测试集,预测新客户的风险情况。 提交python代码,需要输出模型的查准率,查全率,AUC,KS
时间: 2023-06-17 16:03:02 浏览: 52
首先,我们需要对数据进行预处理。对于空值,我们可以选择将其删除或者用平均值/中位数/众数进行填充。这里我们选择用平均值进行填充。
```python
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, precision_score, recall_score, roc_auc_score
# 读取数据集
data = pd.read_csv('data.csv')
# 将空值用平均值进行填充
data.fillna(data.mean(), inplace=True)
# 将分类变量转换为哑变量
data = pd.get_dummies(data, columns=['职业', '性别', '手机入网时长', '信用卡额度'])
# 将因变量移到最后一列
cols = list(data.columns)
cols.remove('是否涉案')
cols.append('是否涉案')
data = data[cols]
# 将数据集拆分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(data.iloc[:, :-1], data.iloc[:, -1], test_size=0.2, random_state=42)
```
接着,我们可以使用逻辑回归模型进行训练,并使用测试集进行预测。
```python
# 建立逻辑回归模型
logistic = LogisticRegression()
# 在训练集上拟合模型
logistic.fit(X_train, y_train)
# 在测试集上进行预测
y_pred = logistic.predict(X_test)
```
最后,我们可以计算模型的评价指标,并输出结果。
```python
# 计算查准率、查全率和AUC
accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred)
recall = recall_score(y_test, y_pred)
auc = roc_auc_score(y_test, logistic.predict_proba(X_test)[:, 1])
# 计算KS值
prob = pd.DataFrame(logistic.predict_proba(X_test), columns=['prob_0', 'prob_1'])
prob['y_true'] = y_test.values
prob = prob.sort_values('prob_1', ascending=False)
prob['cumsum'] = prob['y_true'].cumsum()
prob['cumcnt'] = range(1, len(prob) + 1)
prob['cumrate'] = prob['cumsum'] / max(prob['cumsum'])
prob['noncumrate'] = (prob['cumcnt'] - prob['cumsum']) / (len(prob) - max(prob['cumsum']))
prob['gap'] = prob['cumrate'] - prob['noncumrate']
ks = max(prob['gap'])
# 输出结果
print('查准率:', precision)
print('查全率:', recall)
print('AUC:', auc)
print('KS:', ks)
```
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_lunwen.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)