-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDataProcess.py
148 lines (130 loc) · 3.24 KB
/
DataProcess.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
import numpy as np
import pandas as pd
def processTrain (data):
'''
特征 Age 分类:
0: 小于12
1: 大于等于12, 小于30
2: 大于等于30, 小于60
3: 大于等于60, 小于75
4: 大于等于75
5: 缺失
'''
data["Age"] = data["Age"].map (
lambda x:
0 if x < 12
else 1 if x < 30
else 2 if x < 60
else 3 if x < 75
else 4 if x >= 75
else 5
)
'''
特征 SibSp 分类:
0: 小于1
1: 大于等于1, 小于3
2: 大于等于3
'''
data["SibSp"] = data["SibSp"].map (
lambda x:
0 if x < 1
else 1 if x < 3
else 2
)
'''
特征 Parch 分类:
0: 小于1
1: 大于等于1, 小于4
2: 大于等于4
'''
data["Parch"] = data["Parch"].map (
lambda x:
0 if x < 1
else 1 if x < 4
else 2
)
'''
特征 Fare 分类:
0: 对数化后小于1.5
1: 对数化后大于等于1.5, 小于2.5
2: 对数化后大于等于2.5
'''
data["Fare"] = data["Fare"].map (
lambda x:
0 if np.log(x + 1) < 1.5
else 1 if np.log(x + 1) < 2.5
else 2
)
'''
特征 Cabin 分类:
0: 未缺失
1: 缺失
'''
data["Cabin"] = data["Cabin"].map (
lambda x:
0 if type(x) == str
else 1
)
# 特征 Embarked 的缺失数据用众数 S 填充
data["Embarked"].fillna('S', inplace = True)
'''
特征 Embarked 分类:
0: S
1: C
2: Q
'''
data["Embarked"].replace('S', 0, inplace = True)
data["Embarked"].replace('C', 1, inplace = True)
data["Embarked"].replace('Q', 2, inplace = True)
y = data["Survived"]
X = data.drop(['Survived', 'PassengerId', 'Name', 'Ticket'], axis = 1)
X = pd.get_dummies(X)
return X, y
def processTest (data):
# 特征 Age 分类
data["Age"] = data["Age"].map (
lambda x:
0 if x < 12
else 1 if x < 30
else 2 if x < 60
else 3 if x < 75
else 4 if x >= 75
else 5
)
# 特征 SibSp 分类
data["SibSp"] = data["SibSp"].map (
lambda x:
0 if x < 1
else 1 if x < 3
else 2
)
# 特征 Parch 分类
data["Parch"] = data["Parch"].map (
lambda x:
0 if x < 1
else 1 if x < 4
else 2
)
# 特征 Fare 的缺失数据用均值填充
data["Fare"].fillna(data["Fare"].mean(), inplace = True)
# 特征 Fare 分类
data["Fare"] = data["Fare"].map (
lambda x:
0 if np.log(x + 1) < 1.5
else 1 if np.log(x + 1) < 2.5
else 2
)
# 特征 Cabin 分类
data["Cabin"] = data["Cabin"].map (
lambda x:
0 if type(x) == str
else 1
)
# 特征 Embarked 分类
data["Embarked"].replace('S', 0, inplace = True)
data["Embarked"].replace('C', 1, inplace = True)
data["Embarked"].replace('Q', 2, inplace = True)
id = data["PassengerId"]
X = data.drop(['PassengerId', 'Name', 'Ticket'], axis = 1)
X = pd.get_dummies(X)
return id, X