天池预测
方法流程
1. 数据加载
2. 做标签,训练集、测试集合并
df1["flag"] = "train"
df2["flag"] = "test"
df =pd.concat([train, test], axis=0)
3. 数据编码
-
对非数值型数据编码
-
数序编码
joblist = set(file['job']) jobmp = {} for i, v in enumerate(joblist): jobmp[v] = i + 1; jobl = [] for t in file['job']: jobl.append(jobmp[t]) file['job'] = jobl print(file['job']) -
分段编码
-
One-Hot编码
for state in set(file['marital']): file["marital_%s"%state] = [1 if t==state else 0 for t in file['marital']]
-
-
4. 数据清洗
- 删除
DataFrame.drop(labels=None,axis=0, index=None, columns=None, inplace=False)
| 参数说明 | |
|---|---|
| labels | 就是要删除的行列的名字,用列表给定 |
| axis | 默认为 0,指删除行,因此删除 columns 时要指定 axis=1 |
| index | 直接指定要删除的行 |
| columns | 直接指定要删除的列 |
| inplace=False | 默认该删除操作不改变原数据,而是返回一个执行删除操作后的 新 dataframe |
| inplace=True | 则会直接在原数据上进行删除操作,删除后无法返回。 |
-
异常值
file["contact"]=file["contact"].replace("unknown","celluar") file['month'] = file['month'].replace(['jan', 'feb','mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'],[1,2,3,4,5,6,7,8,9,10,11,12])
-
缺失值
file['job']=file['job'].replace('unknown',file['job'].mode()[0])
均值填充
Mean
中位数填充
median
众数填充
mode
删除该行数据
5.数据标准化
中心化
6.特征选择
| 0-0.09 | 无相关 |
|---|---|
| 0.1-0.3 | 弱相关 |
| 0.3-0.5 | 中等相关 |
| 0.5-1.0 | 强相关 |
7.划分训练集
from sklearn.model_selection import train_test_split
#训练-测试划分
trainX,testX,trainY,testY=train_test_split(df.iloc[:,0:21],df['y'],test_size=0.3,random_state=0)
8.导入定义训练模型
导入
from sklearn import svm
from sklearn.linear_model import LogisticRegression
from sklearn.linear_model import Lasso
from sklearn.tree import DecisionTreeClassifier
#定义模型
model_svm = svm.SVC()
model_lr = LogisticRegression(penalty="l2")
model_la = Lasso(alpha=0.01)
DT = DecisionTreeClassifier()
#训练模型
model_svm.fit(trainX,trainY)
model_lr.fit(trainX,trainY)
model_la.fit(trainX,trainY)
DT.fit(trainX,trainY)`
9.评价
pred1 = model_svm.predict(testX)
pred2 = model_lr.predict(testX)
pred3 = DT.predict(testX)
补充
-
编码规则
< zhongqiang.blog.csdn.net/article/det… >
-
离散数据进行编码的总原则:
-
OneHot编码
离散特征的取值之间没有大小的意义,比如color:[red,blue], 性别的男女等,那么就使用
-
数值的映射(数字)
离散特征的取值有大小的意义,比如size:[X,XL,XXL],身高的高,中,低等,那么就使用{X:1,XL:2,XXL:3}进行编码
-
-