天池预测题目——最最最基础版流程

98 阅读2分钟

天池预测

方法流程

1. 数据加载

2. 做标签,训练集、测试集合并

df1["flag"] = "train"
​
df2["flag"] = "test"df =pd.concat([train, test], axis=0)

3. 数据编码

  1. 对非数值型数据编码

    • 数序编码

      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.特征选择

1.png

2.png

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)

补充

  1. 编码规则

    < zhongqiang.blog.csdn.net/article/det… >

    • 离散数据进行编码的总原则:

      • OneHot编码

        离散特征的取值之间没有大小的意义,比如color:[red,blue], 性别的男女等,那么就使用

      • 数值的映射(数字)

        离散特征的取值有大小的意义,比如size:[X,XL,XXL],身高的高,中,低等,那么就使用{X:1,XL:2,XXL:3}进行编码