训练样本是100组客户基础信息,包括职业,年龄,性别,手机入网时长,信用卡额度5个变量, 职业包含,房地产服务人员,工程技术人员,企事业单位负责人,有空值。 年龄包含,从18岁到60岁,有空值。 性别包含,M和F。 手机入网时长包含,半年至一年,二至六个月,两年至三年,三年以上,一个月以内,一年至两年,一至两个月。 信用卡额度包含,0-6K,6K-10K,10K-20K,20K-30K,30K-50K,50K以上,有空值。 是否涉案是因变量,1代表是,0代表否。即模型需要预测的结果。 请选择合适的变量,建立逻辑回归模型,将数据集拆分为训练集和测试集,预测新客户的风险情况。 提交python代码,需要输出模型的AUC
时间: 2023-06-17 16:03:13 浏览: 178
首先,我们需要对数据进行预处理,包括处理空值和对类别型变量进行编码。
```python
import pandas as pd
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split
# 读取数据
data = pd.read_csv('data.csv')
# 处理空值
data = data.fillna({'职业': '其他', '年龄': data['年龄'].median(), '信用卡额度': '未知'})
# 对类别型变量进行编码
le = LabelEncoder()
data['职业'] = le.fit_transform(data['职业'])
data['性别'] = le.fit_transform(data['性别'])
data['手机入网时长'] = le.fit_transform(data['手机入网时长'])
data['信用卡额度'] = le.fit_transform(data['信用卡额度'])
# 分离自变量和因变量
X = data.drop('是否涉案', axis=1)
y = data['是否涉案']
# 将数据集拆分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
```
接下来,我们可以建立逻辑回归模型,并在测试集上进行预测。同时,我们可以计算模型的AUC值。
```python
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_auc_score
# 建立逻辑回归模型
lr = LogisticRegression()
lr.fit(X_train, y_train)
# 在测试集上进行预测
y_pred = lr.predict(X_test)
# 计算模型的AUC值
auc = roc_auc_score(y_test, y_pred)
print('模型的AUC值为:', auc)
```
最后,我们可以使用模型对新客户进行风险预测。
```python
# 预测新客户的风险情况
new_customer = {'职业': '企事业单位负责人', '年龄': 30, '性别': 'M', '手机入网时长': '二至六个月', '信用卡额度': '10K-20K'}
new_customer = pd.DataFrame.from_dict(new_customer, orient='index').T
new_customer['职业'] = le.transform(new_customer['职业'])
new_customer['性别'] = le.transform(new_customer['性别'])
new_customer['手机入网时长'] = le.transform(new_customer['手机入网时长'])
new_customer['信用卡额度'] = le.transform(new_customer['信用卡额度'])
risk = lr.predict_proba(new_customer)[:, 1]
print('新客户的风险为:', risk)
```
阅读全文