- 数据集准备
status表示标签,但是它作为一个特征维度混入到特征列表中,要先将它找出来赋给标签,并按照约定规则将数据分为训练集和测试集
import pandas as pd
from sklearn.model_selection import train_test_split
data = pd.read_csv('venv\data.csv', encoding = 'gb18030')
print(data.shape)
print(data['status'])
Y=data['status']
X=data.drop('status',axis=1)
X_train,X_test,Y_train,Y_test=train_test_split(X,Y,test_size=0.3)
- 数据清洗
(1)无关值去除
bank_card_no一列的所有特征值全部为“卡号1”,认为对最终的任务没有意义,将这一列去除。
(2)缺失值处理
“student_feature”一列的特征值除了1就是NA,根据数据分布,判定其他的缺失值大概率为1,因此该特征意义不大,也将这一列去除。
“cross_consume_count_last_1_month”一列有一部分缺失值,其他值有几种不同的值,不便推测出缺失值,因此,将该特征值为空的一条数据删除。
for i in range(len(X)):
if np.isnan(data['cross_consume_count_last_1_month'][i]):
X = X.drop(i)
Y=Y.drop(i)
如1580行,大部分为缺失值,则这一条数据意义不大,将此行删除。
(3)文本值处理
reg_preference_for_trad特征只有“一线城市””二线城市“”三线城市“”境外“四种,使用one-hot编码
对于id_name,全是不同的文字,但发现名字与编号一一对应,可以先将名字一列删除,处理完成后再用查表方式对应找到id_name.