Datawhale《动手学数据分析》Task05:模型建立和评估1

第三章 模型搭建和评估

完成泰坦尼克号存活预测

3.1建模

任务一:切割训练集和测试集

这里使用留出法划分数据集

  • 将数据集分为自变量和因变量
  • 按比例切割训练集和测试集(一般测试集的比例有30%、25%、20%、15%和10%)
  • 使用分层抽样
  • 设置随机种子以便结果能复现

任务提示1

  • 切割数据集是为了后续能评估模型泛化能力
  • sklearn中切割数据集的方法为train_test_split
  • 查看函数文档可以在jupyter noteboo里面使用train_test_split?后回车即可看到
  • 分层和随机种子在参数里寻找

要从clear_data.csv和train.csv中提取train_test_split()所需的参数

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from IPython.display import Image

%matplotlib inline

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
plt.rcParams['figure.figsize'] = (10, 6)  # 设置输出图片大小

#读取原始数据
train = pd.read_csv('train.csv')
#读取清洗过后的数据
clear_data = pd.read_csv('clear_data.csv')

from sklearn.model_selection import train_test_split

x=clear_data
y=train['Survived']
#划分训练集和测试集
x_train,x_test,y_train,y_test= train_test_split(x,y,stratify=y,random_state=0)

x_train.describe()
x_test.describe()
 

【参考】https://zhuanlan.zhihu.com/p/248634166

任务二:模型创建

  • 创建基于线性模型的分类模型(逻辑回归)
  • 创建基于树的分类模型(决策树、随机森林)
  • 分别使用这些模型进行训练,分别的到训练集和测试集的得分
  • 查看模型的参数,并更改参数值,观察模型变化

提示

  • 逻辑回归不是回归模型而是分类模型,不要与LinearRegression混淆
  • 随机森林其实是决策树集成为了降低决策树过拟合的情况
  • 线性模型所在的模块为sklearn.linear_model
  • 树模型所在的模块为sklearn.ensemble
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn import tree


#模型比较
    
#逻辑回归
lr = LogisticRegression()
lr.fit(x_train, y_train)

print("Score_LRtrain =",round(lr.score(x_train, y_train),3))
print("Score_LRtest  =",round(lr.score(x_test, y_test),3))

#决策树
model = tree.DecisionTreeClassifier()    
model.fit(x_train, y_train)
    
print("Score_DTtrain =",round(model.score(x_train, y_train),3))
print("Score_DTtest  =",round(model.score(x_test, y_test),3))
    
#随机森林
rf = RandomForestClassifier()
rf.fit(x_train, y_train)
    
print("Score_RFtrain =",round(rf.score(x_train, y_train),3))
print("Score_RFtest  =",round(rf.score(x_test, y_test),3))
    
 
#调参后模型比较
    
#逻辑回归
lr = LogisticRegression(C=0.9)
lr.fit(x_train, y_train)

print("Score_LRtrain_new =",round(lr.score(x_train, y_train),3))
print("Score_LRtest_new  =",round(lr.score(x_test, y_test),3))

#决策树
model = tree.DecisionTreeClassifier(max_depth=10)    
model.fit(x_train, y_train)
    
print("Score_DTtrain_new =",round(model.score(x_train, y_train),3))
print("Score_DTtest_new  =",round(model.score(x_test, y_test),3))
    
#随机森林
rf = RandomForestClassifier(n_estimators=100,max_depth=10)
rf.fit(x_train, y_train)
    
print("Score_RFtrain_new =",round(rf.score(x_train, y_train),3))
print("Score_RFtest_new  =",round(rf.score(x_test, y_test),3))

 

任务三:输出模型预测结果

  • 输出模型预测分类标签
  • 输出不同分类标签的预测概率

提示3

  • 一般监督模型在sklearn里面有个predict能输出预测标签,predict_proba则可以输出标签概率
#逻辑回归
y_predict_train=lr.predict(x_train)
predicted_probs_train = lr.predict_proba(x_train)
    
#决策树
y_predict_train=model.predict(x_train)
predicted_probs_train = model.predict_proba(x_train)
    
#随机森林
y_predict_train=rf.predict(x_train)
predicted_probs_train = rf.predict_proba(x_train)

                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值