数据挖掘决策树设计实验

 目录
数据挖掘课程实验报告	1
一、实验要求	1
二、数据说明	3
三、实验内容	3
四、任务分析	6
五、程序实现及结果	6
六、实验总结	10数据挖掘课程实验报告
一、实验要求 
本次设计要求实现信贷用户逾期预测功能。具体要求如下:利用所学数据挖掘算法对给定数据进行训练得出信用评估模型,依据模型对1000个贷款申请人是否逾期做出预测(0-未逾期 1-逾期)。
二、数据说明 
数据概述 :
数据包括脱敏后的个人基本信息、持卡信息、消费信息及信贷信息等。详见字段解释.xlsx。 
数据结构和数据规模 :
数据分为训练集和验证集。 详见model.csv和test.csv。
三、实验内容
(1)环境:windows10、python3.62)编程语言:python
(3)算法思想:
决策树就是一个类似于流程图的树形结构,树内部的每一个节点代表的是对一个特征的测试,树的分支代表该特征的每一个测试结果,而树的每一个叶子节点代表一个类别。树的最高层是就是根节点。下图即为一个决策树的示意描述,内部节点用矩形表示,叶子节点用椭圆表示。
一棵决策树的生成过程主要分为以下2个部分:
•	特征选择:特征选择是指从训练数据中众多的特征中选择一个特征作为当前节点的分裂标准,如何选择特征有着很多不同量化评估标准标准,从而衍生出不同的决策树算法。
•	决策树生成: 根据选择的特征评估标准,从上至下递归地生成子节点,直到数据集不可分则停止决策树停止生长。 树结构来说,递归结构是最容易理解的方式。
本次实验还用到了ExtraTree算法但预估不准确在这不阐述。四、任务分析
1.	导入数据后,首先,由于数据中存在缺失值,因此需要对缺失值数据进行预处理,比较均值和中位数大的一个填充。
2.	其次,对明显与模型无关的特征uese_id进行删除。
3.	最后,分别采用DecisionTreeClassifeir()进行模型训练,预测结果以及输出评分。
五、程序实现及结果截图
"""
Created on  1 2th  2021
@author: 
"""
from sklearn.model_selection import cross_val_score, train_test_split, GridSearchCV
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
import pandas as pd
import numpy as np
from sklearn.ensemble import ExtraTreesClassifier
import matplotlib.pyplot as plt
aa="10000+100"
bb="1000"
data = pd.read_csv('D:\model.csv')
#数据预处理补空缺值
#选取中位数和均值中最大的
if all(data.mean())>all(data.median()):pda=all(data.mean())
else:pda=all(data.median())
data= data.fillna(pda)
X=data.drop(['user_id','y'],axis=1)
y=data.y
X_train, X_test, y_train, y_test=train_test_split(X,y,test_size=0.3)#使用决策树
rf_model2 = DecisionTreeClassifier()
rf_model2.fit( X_train, y_train)
scores1 = cross_val_score(rf_model2, X_test, y_test)
print("您使用的的决策树得分")
print(scores1.mean())#extraTree使用的所有的样本,特征随机选取
#ExtraTree分类器集合
#输出的类别是由个别树输出的类别的众数而定rf_model = ExtraTreesClassifier(n_estimators=100, max_depth=None,min_samples_split=1.0, random_state=0)
rf_model.fit( X_train, y_train)
print("您使用的ExtraTree分类器集合得分")
scores3 = cross_val_score(rf_model, X_test, y_test)
print(scores3.mean())
#根据决策树输出预测表
print("根据决策树输出"+bb+"个预测的值----0-未逾期 1-逾期")
data_test = pd.read_csv('D:\\test.csv')
data_test=data_test.fillna(0)
test=data_test.drop(['user_id'],axis=1)
test_lable=rf_model2.predict(test)
#预测结果
print(test_lable)
print("Over,此次预测完成!!!!!!!")
结果:[0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 1 0 0 10 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 01 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 00 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 00 0 0 1 1 1 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 01 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 01 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 00 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 01 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 00 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 00 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 1 00 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 1 1 0 0 0 1 0 0 0 0 01 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 01 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 00 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1 1 1 0 0 0 0 0 1 0 0 0 10 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 00 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 1 0 1 0 01 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 00 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 1 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 10 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 00 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 1 1 0 0 01]


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部