训练样本是100组客户基础信息,包括职业,年龄,性别,手机入网时长,信用卡额度5个变量,是否涉案是因变量,即模型需要预测的结果。 职业有,房地产服务人员,工程技术人员,企事业单位负责人,有空值。 年龄从18到60,有空值。 性别有,M和F。 手机入网时长有,半年至一年,二至六个月,两年至三年,三年以上,一个月以内,一年至两年,一至两个月。 信用卡额度有,01,02,03,04,05,06,空值。 是否涉案客户,1代表是,0代表否。 请选择合适的变量,建立逻辑回归模型,预测新客户的风险情况。 请先提供训练样本,并提交python代码,需要输出模型的查准率
时间: 2023-06-16 13:05:14 浏览: 85
由于样本中存在空值,需要对缺失值进行处理,可以使用均值填充或者中位数填充。
首先,我们需要导入必要的库和数据集:
```python
import pandas as pd
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 导入数据
data = pd.read_csv('data.csv')
```
然后,我们需要对数据进行预处理:
```python
# 将职业、性别、手机入网时长以及信用卡额度进行独热编码
data = pd.get_dummies(data, columns=['职业', '性别', '手机入网时长', '信用卡额度'])
# 将年龄的空值填充为中位数
data['年龄'].fillna(data['年龄'].median(), inplace=True)
# 将涉案客户的值转换为数字类型
data['是否涉案客户'] = pd.to_numeric(data['是否涉案客户'])
```
接着,我们需要将数据集分为训练集和测试集:
```python
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(data.drop('是否涉案客户', axis=1), data['是否涉案客户'], test_size=0.2, random_state=0)
```
然后,我们可以使用逻辑回归进行模型训练和预测:
```python
# 创建逻辑回归模型
model = LogisticRegression()
# 训练模型
model.fit(X_train, y_train)
# 预测测试集结果
y_pred = model.predict(X_test)
# 输出查准率
print("查准率为:", accuracy_score(y_test, y_pred))
```
最后,我们可以将完整的代码整合起来:
```python
import pandas as pd
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 导入数据
data = pd.read_csv('data.csv')
# 将职业、性别、手机入网时长以及信用卡额度进行独热编码
data = pd.get_dummies(data, columns=['职业', '性别', '手机入网时长', '信用卡额度'])
# 将年龄的空值填充为中位数
data['年龄'].fillna(data['年龄'].median(), inplace=True)
# 将涉案客户的值转换为数字类型
data['是否涉案客户'] = pd.to_numeric(data['是否涉案客户'])
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(data.drop('是否涉案客户', axis=1), data['是否涉案客户'], test_size=0.2, random_state=0)
# 创建逻辑回归模型
model = LogisticRegression()
# 训练模型
model.fit(X_train, y_train)
# 预测测试集结果
y_pred = model.predict(X_test)
# 输出查准率
print("查准率为:", accuracy_score(y_test, y_pred))
```
需要注意的是,这里的查准率是针对测试集的,如果要对新客户进行预测,需要将新客户的数据集输入到模型中进行预测。
阅读全文