logo资料库

数据挖掘大作业.docx

第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
资料共10页,剩余部分请下载后查看
数据挖掘课程实验报告
一、实验要求
二、数据说明
三、实验内容
(3)算法思想:
四、任务分析
五、程序实现
1.数据预处理
2.数据划分及模型训练等操作
3. 使用决策树模型预测并得到结果:
4.调试过程
六、实验总结
实验报告 课程名称: 数据挖掘 学 院: 计算机科学与工程学院 专 业: 软件工程 班 级: 2016-1 姓 名: 陈 立 学 号:201601060801 2019 年 5 月 31 日 山 东 科 技 大 学 教 务 处 制
目录 数据挖掘课程实验报告 ................................................................................................................................................3 一、实验要求..................................................................................................................................................3 二、数据说明..................................................................................................................................................3 三、实验内容..................................................................................................................................................3 (1)环境:..........................................................................................................................................3 (2)编程语言......................................................................................................................................3 (3)算法思想:..................................................................................................................................3 四、任务分析..................................................................................................................................................5 五、程序实现..................................................................................................................................................6 1.数据预处理 .........................................................................................................................................6 2.数据划分及模型训练等操作 ............................................................................................................ 7 3. 使用决策树模型预测并得到结果:.............................................................................................. 7 4.调试过程 .............................................................................................................................................8 六、实验总结................................................................................................................................................10
数据挖掘课程实验报告 一、实验要求 本次设计要求实现信贷用户逾期预测功能。具体要求如下:利用所学数据挖掘算法对给定 数据进行训练得出信用评估模型,依据模型对 1000 个贷款申请人是否逾期做出预测(0-未逾 期 1-逾期)。 二、数据说明 数据概述 : 数据包括脱敏后的个人基本信息、持卡信息、消费信息及信贷信息等。详见字段解释.xlsx。 数据结构和数据规模 : 数据分为训练集和验证集。 详见 model.csv 和 test.csv。 三、实验内容 (1)环境:windows10、python3、Anaconda Navigator (2)编程语言:python (3)算法思想: SVM(support Vector Mac)又称为支持向量机,是一种二分类的模型。当然如果进行修改之后也是可 以用于多类别问题的分类。支持向量机可以分为线性核非线性两大类。其主要思想为找到空间中的一个更 够将所有数据样本划开的超平面,并且使得本本集中所有数据到这个超平面的距离最短。 《统计学习方法》对 SVM 的数学原理做了详细推导与论述,本文仅做整理。由简至繁 SVM 可分类为三 类:线性可分(linear SVM in linearly separable case)的线性 SVM、线性不可分的线性 SVM、非线性(nonlinear) SVM。
对于二类分类问题,训练集 T={(x1,y1),(x2,y2),⋯,(xN,yN)},其类别 yi∈{0,1},线性 SVM 通过学习得到 分离超平面(hyperplane): w⋅x+b=0 以及相应的分类决策函数: f(x)=sign(w⋅x+b) 有如下图所示的分离超平面 直观上,超平面 B1 的分类效果更好一些。将距离分离超平面最近的两个不同类别的样本点称为支持向量 (support vector)的,构成了两条平行于分离超平面的长带,二者之间的距离称之为 margin。显然,margin 更大,则分类正确的确信度更高(与超平面的距离表示分类的确信度,距离越远则分类正确的确信度越高)。 通过计算容易得到: 从上图中可观察到:margin 以外的样本点对于确定分离超平面没有贡献,换句话说,SVM 是有很重要的训 练样本(支持向量)所确定的。至此,SVM 分类问题可描述为在全部分类正确的情况下,最大化 (等 价于最小化 );线性分类的约束最优化问题: 对每一个不等式约束引进拉格朗日乘子(Lagrange multiplier)αi≥0,i=1,2,⋯,N;构造拉格朗日函数 (Lagrange function):
根据拉格朗日对偶性,原始的约束最优化问题可等价于极大极小的对偶问题: 将 L(w,b,α)对 w,b 求偏导并令其等于 0,则 将上述式子代入拉格朗日函数(3)中,对偶问题转为 等价于最优化问题: 线性可分是理想情形,大多数情况下,由于噪声或特异点等各种原因,训练样本是线性不可分的。因此, 需要更一般化的学习算法。 四、任务分析 1. 导入数据后,首先,由于数据中存在缺失值,因此需要对缺失值数据进行预处理。 2. 其次,对明显与模型无关的特征进行删除。 3. 最后,分别采用 SVM 进行模型训练,预测结果以及输出评分。
五、程序实现 1.数据预处理 (1)删除 dataset=dataset.drop(["user_id","x_062","x_063","x_064", …… ,"x_101","x_118","x_119","x_120"],axis=1) (2)类型转换 dataset = dataset.convert_objects(convert_numeric=True) (3)使用 0 替换以下列所有 NaN 的值 fill_zero_cols = ['x_121','x_122','x_123', …… ,'x_074','x_075','x_076','x_077','x_078','x_079','x_080'] for col in fill_zero_cols: dataset.loc[dataset[col].isnull(), col] = 0 (4)均值替换以下空值 fill_mean_cols = ['x_065','x_066','x_067',…… ,'x_098','x_099','x_102','x_103',……,'x_115' ,'x_130'] for col in fill_mean_cols: dataset.loc[dataset[col].isnull(), col] = dataset[col].mean() (5)使用众数替换剩下所有空值 col = dataset.columns.tolist()[1:] def missing(df, columns): col = columns for i in col: df[i].fillna(df[i].mode()[0], inplace=True) df[i] = df[i].astype('float') missing(dataset, col)
2.数据划分及模型训练等操作 (1)数据划分 X = dataset.drop(["y"],axis=1) Y = dataset["y"] X_train, X_test, y_train, y_test = train_test_split(X, Y,test_size=0.2, random_state=6000) (2)归一化操作 from sklearn.preprocessing import minmax_scale X_train = minmax_scale(X_train) X_test = minmax_scale(X_test) (3)模型训练 linearSVC = LinearSVC() linearSVC.fit(X_train, y_train) linearSVC_predict = linearSVC.predict(X_test) (4)输出 print("predict:",linearSVC.score(X_test, y_test)) 3. 使用决策树模型预测并得到结果: testdata = pd.read_csv('C:\\Users\\tingf\\Desktop\\dazuoye\\dazuoye\\test.csv',encoding='gbk') …… pY = linearSVC.predict(testdata) …… print(pY)
4.调试过程 经过对数据的分析和实验后,我选择了将部分列分别做删除、用 0 和均值填充空值操作,将其余的列 中的空值用众数填充。 实验过程中,对于空值较多的列做预处理之后,发现这些列的预处理操作对实验结果的影响比较大, 列举记录下的数次结果如下: (1)此次未保存 predict 值,大致等于 0.814 左右 predict: 0.8143 预测结果为: (2)
分享到:
收藏