python 决策树建立 泰坦尼克号

### 泰坦尼克号海难生存人员预测

# 导入需要的库

import pandas as pd
from sklearn.tree import  DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.model_selection import GridSearchCV
from sklearn.model_selection import cross_val_predict
import matplotlib.pyplot as plt

data = pd.read_csv(r‘file:///E:/学习/python/机器学习课件 9.20-9.21/titanic/train.csv‘,index_col = 0)
# 查看数据集的基本特征
data.head()
data.info
data.shape

#不涉及到训练集和测试集之间相互影响的
#删除缺失值过多的列,和观察判断来说和预测的y没有关系的列
data.drop(["Cabin","Name","Ticket"],inplace=True,axis=1)

data.info
data.head()
# 对数据集中的缺失值进行处理  年龄中缺失值  这里用均值进行填补
data.loc[:,‘Age‘] = data.loc[:,‘Age‘].fillna(data.loc[:,‘Age‘].mean())

# 对缺失数据少的数据直接删除
data = data.dropna()
data.info

# =============================================================================
# #将分类变量转换为数值变量
# # 将二分类变量转化为0,1变量
# # astype能够轻松的将pandas中文本变量转换为数值型变量
# data[‘Sex‘] = (data[‘Sex‘] == ‘male‘).astype("int")
# data.head()
# =============================================================================

labels=data[‘Sex‘].unique().tolist()
# 得到去重之后的数据 将其转换为列表 其各个数值所对应的数据的索引分别为0,1
# 我们用函数将其索引赋值给对应的数据 , 即实现了对其的离散化和数值化
data[‘Sex‘]=[*map(lambda x:labels.index(x),data[‘Sex‘])]

# 将三分类的问题转化为数值变量
labels = data[‘Embarked‘].unique().tolist()  # 对数据列进行去重 并将其转换为列表格式
data["Embarked"] = data["Embarked"].apply(lambda x: labels.index(x))

# 提取标签和特征矩阵  分裂数据集 -- 测试集合训练集

X = data.iloc[:,1:]
Y = data.iloc[:,1]     

# 导入数据划分的包
from sklearn.model_selection import train_test_split
# 注意 这里的X_train,X_test,y_train,y_test的顺序不能颠倒
X_train,X_test,y_train,y_test = train_test_split(X,Y,test_size = 0.3,random_state = 420)

# 首先修正分割后的索引
for i in [X_train,y_train,X_test,y_test]:
    i.index = range(i.shape[0])

# =============================================================================
# # 对数据集进行数据预处理 处理缺失值和异常值
# X_train.info   # 发现年龄这一列中有缺失值  这里用均值进行填补
# X_train.loc[:,‘Age‘] = X_train.Age.fillna(X_train.loc[:,‘Age‘].mean())
#
# X_test.loc[:,‘Age‘] = X_test.Age.fillna(X_test.loc[:,‘Age‘].mean())
# =============================================================================

# 建立预测模型
# 实例化模型

clf = DecisionTreeClassifier(random_state=25)

# 利用训练数据集对实例化后的数据进行训练
clf = clf.fit(X_train,y_train)

# 查看训练后的模型分别在训练集和测试集上面的得分

clf.score(X_train,y_train)

clf.score(X_test,y_test)

clf.feature_importances_
# 显示出各个特征属性所对应的名称以及重要性
[*zip(data.columns,clf.feature_importances_)]

from sklearn.model_selection import cross_val_score
var = cross_val_score(clf,Xtrain,Ytrain,cv=10).var()
var

# 调整树的深度观察模型的拟合程度
tr = []
te = []
test = []
# 设置树的深度在0到10之间
for i in range(1,10):
    clf = DecisionTreeClassifier(max_depth = i,random_state= 666)
    clf = clf.fit(X_train,y_train)
    score_train = clf.score(X_train,y_train)
    score_te = cross_val_score(clf,Xtrain,Ytrain,cv=10).mean()
    tr.append(score_train)
    te.append(score_te)
    # 模型在测试集上面的准确率
    score_test = clf.score(X_test, y_test)
    test.append(score_test)
print(len(test))
print(max(te))
len(tr)

# 切换绘图风格
plt.style.use("ggplot")

plt.plot(range(1,10),tr,color="red",label="train")
plt.plot(range(1,10),te,color="blue",label="cross_val_score")
plt.plot(range(1,10),test,color="green",label="test")
plt.xticks(range(1,10))
plt.legend()
plt.show()

# 用网格搜索调整参数
from sklearn.model_selection import GridSearchCV
import numpy as np

gini_thresholds = np.linspace(0,0.5,20)
gini_thresholds

# 首先构造一个所有搜索参数的字典

parameters = {‘splitter‘:(‘best‘,‘random‘)
,‘criterion‘:("gini","entropy")
,"max_depth":range(1,10)
,‘min_samples_leaf‘:range(1,50,5)
,‘min_impurity_decrease‘:np.linspace(0,0.5,20)
}

# 实例化模型, 先不传参
clf = DecisionTreeClassifier(random_state=25)

# 实例化网格搜索API
GS = GridSearchCV(clf,parameters, cv = 5 , verbose=1 )
# 对数据进行网格搜索
GS.fit(Xtrain, Ytrain)
#属性best_params_查看调整出来的最佳参数
GS.best_params_
#属性best_score_查看最佳分数
GS.best_score_

  

原文地址:https://www.cnblogs.com/manjianlei/p/11569045.html

时间: 2024-10-11 23:19:18

python 决策树建立 泰坦尼克号的相关文章

Python——决策树实战:california房价预测

Python--决策树实战:california房价预测 编译环境:Anaconda.Jupyter Notebook 首先,导入模块: 1 import pandas as pd 2 import matplotlib.pyplot as plt 3 %matplotlib inline 接下来导入数据集: 1 from sklearn.datasets.california_housing import fetch_california_housing 2 housing = fetch_c

eclipse软件安装及python工程建立

原文地址:http://www.cnblogs.com/halfacre/archive/2012/07/22/2603848.html 安装python解释器 安装PyDev: 首先需要去Eclipse官网下载:http://www.eclipse.org/,Eclipse需要JDK支持,如果Eclipse无法正常运行,请到Java官网下载JDK安装:http://www.oracle.com/technetwork/java/javase/downloads. 打开Eclipse,找到Hel

使用python来建立http服务

python建立http服务 首先我们的windos上要安装python解释器,然后进入我要想要传递的文件的目录下,从当前的目录下进入cmd 然后通过Python解释器输入 python -m http.server 就会通过python解释器在这个目录建立了一个http链接 我们在其他的windos电脑上的浏览器上输入这台机器的ip机上8000端口就可以了 python解释器建立http服务 可以windos之间传递 也可以windos与linux之间传递 windos与linux之间的文件相

机器学习之路:python 综合分类器 随机森林分类 梯度提升决策树分类 泰坦尼克号幸存者

python3 学习使用随机森林分类器 梯度提升决策树分类 的api,并将他们和单一决策树预测结果做出对比 附上我的git,欢迎大家来参考我其他分类器的代码: https://github.com/linyi0604/MachineLearning 1 import pandas as pd 2 from sklearn.cross_validation import train_test_split 3 from sklearn.feature_extraction import DictVe

机器学习之路: python 决策树分类 预测泰坦尼克号乘客是否幸存

使用python3 学习了决策树分类器的api 涉及到 特征的提取,数据类型保留,分类类型抽取出来新的类型 需要网上下载数据集,我把他们下载到了本地, 可以到我的git下载代码和数据集: https://github.com/linyi0604/MachineLearning 1 import pandas as pd 2 from sklearn.cross_validation import train_test_split 3 from sklearn.feature_extraction

Python机器学习:泰坦尼克号获救预测一

数据集下载地址: https://github.com/fayduan/Kaggle_Titanic/blob/master/train.csv 视频地址: http://study.163.com/course/courseLearn.htm?courseId=1003551009#/learn/video?lessonId=1004052093&courseId=1003551009 一.项目概要 1.应用 模式识别.数据挖掘(核心).统计学习.计算机视觉.语言识别.自然语言处理 2.模式.

在Python中建立N维数组并赋初值

在Python中,由于不像C++/Java这样的语言可以方便的用a[i][j]=0的方式,建立二维数组并赋初值,所以需要一个相对巧妙的方法. 可以用列表解析的方式,eg: >>> mat=[[0 for i in range(5)] for j in range(5)] >>> mat [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]] 这样就建立了一

一步步学习Python开发-建立django数据库

上篇文章建立了一个空的网站.现在我们要准备正式我们的网站开发咯.那么开发的第一步是啥呢?当然是要确定做什么网站了.每个人的开发习惯可能不尽相同,有点可能是从前端开始设计,有的可能是从数据库开始设计(不得不说django在数据库操作方面是很强大的).我属于后者,因为我对前端不太熟悉,哈哈! 我要做一个公司内部团体订餐系统,方便统一订餐.功能需求很简单:公司每天要订餐,订餐每天定一家餐馆的菜. 我想到需要建立如下数据库表:餐馆(Restaurant).商品分类(Category).商品(good).

cocos3 python脚本建立类文件

以前看过一本关于精简工作内容的书,要把工作中重复的东西都简化 今天我就来简化cocos3建立.h文件和.cpp文件 ClassName="TestSprite" Type="Sprite" #.h file write file = open(ClassName+'.h', 'w') str='''#pragma once #include "cocos2d.h" USING_NS_CC; class ClassName:public Type