1、数据集来源Divorce Predictors data set Data Set​archive.ics.uci.edu

2、库、函数和数据集的导入

import numpy as np

import pandas as pd

import scipy as sp

import matplotlib.pyplot as plt # 导入常用的基本库

from IPython.display import display # 载入数据查看时需要使用的函数

from sklearn.preprocessing import LabelEncoder # 导入分类变量编码时需要使用的函数

from sklearn import svm # 导入支持向量机函数

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis # 导入LDA判别时需要使用的函数

from sklearn.naive_bayes import MultinomialNB # 导入朴素贝叶斯时需要使用的函数

from sklearn.neighbors import KNeighborsClassifier # 导入KNN判别时需要使用的函数

from sklearn.tree import DecisionTreeClassifier # 导入决策树函数

from sklearn.neural_network import MLPClassifier # 导入神经网络函数

from sklearn.ensemble import ExtraTreesClassifier # 导入ExtraTrees库中的函数

from sklearn.model_selection import train_test_split # 导入数据集划分时需要使用的函数

from sklearn.metrics import confusion_matrix # 导入生成混淆矩阵的函数

from sklearn.metrics import classification_report # 导入分类结果评价时要用到的函数

dt = pd.read_csv('C:/Users/Lenovo/Desktop/divorce.csv',encoding='gbk',engine='python') # 数据集导入

3、数据检查和预处理

(1)缺失值的检查与处理

display(dt.isnull().sum()) # 检查数据集是否有缺失值,未发现数据有缺失

(2)重复值的检查与处理

display(dt.duplicated().sum()) # 检查数据是否有重复值,发现存在重复值

weizhi = pd.DataFrame(dt[dt.duplicated(keep=False)==True].index.tolist()).transpose() # 找到重复值的数据地址,并转置显示,设定keep=False用于输出所有重复值的位置(如果不加,只输出重复值最后出现的位置)

display(weizhi) # 查看缺失值的位置

dt = dt.drop_duplicates() # 去除重复值

display(dt.duplicated().sum()) # 再次检查数据是否有重复值,发现重复值已经被去除

(3)处理后的数据集规模

display(dt.shape) # 查看现在数据集的规模,为150行,55列

(4)数值型变量和分类型变量的分离

dt_use = dt.iloc[:,0:54].values # 提取第1-54个变量的values,注意是[0,54],从0开始,左闭右开

dt_index = dt.iloc[:,54:55].astype('category').values # 提取第55个变量“class”的值,为int型的分类变量,需要转码

le_train = LabelEncoder() # 使用从sklearn.preprocessing中import的LabelEncoder对分类数据进行编码,以便于后续使用交叉验证建模

le_train.fit(dt_index.tolist()) # 对模型进行训练

display(le_train.classes_) # 查看转码后的类别情况

dt_index = le_train.transform(dt_index.tolist()) # 将类别变量另存为dt_index

dt_c = dt.iloc[:,0:54].columns # 提取前1-54个数值型变量的列名,便于后续分析时调用

display(dt_c) # 查看提取后的列名情况

4、建模分析

(1)模型准备

models = {} # 构建一个models集合

models['SVM'] = svm.SVC() # 支持向量机模型

models['LDA'] = LinearDiscriminantAnalysis() # LDA判别模型

models['NB'] = MultinomialNB() # 朴素贝叶斯模型

models['KNN'] = KNeighborsClassifier() # KNN判别模型

models['Detree'] = DecisionTreeClassifier() # 决策树模型

models['Network'] = MLPClassifier() # 神经网络模型

(2)特征选择

model_sl = ExtraTreesClassifier() # 使用ExtraTreesClassifier函数设置ExtraTrees决策树特征选择模型,sl为selection的缩写

model_sl.fit(dt_use, dt_index) # 训练模型

display(np.argsort(model_sl.feature_importances_)) # 得到特征变量的重要性值排序,取重要性排名前10个变量用于建模

im_idx = np.argsort(model_sl.feature_importances_)[0:10] # 提取前10名的下标

dt_into = dt_use[:,im_idx] # 将重要性排名前10的变量提取出来

display(dt_into.shape) # 查看提取出来的数据集规模

(3)训练集、测试集划分

x_train,x_test, y_train, y_test = train_test_split(dt_into,dt_index,test_size=0.3, random_state=0) # 使用train_test_split函数进行训练集、测试集的划分

print('训练集的自变量数据的维度',x_train.shape)

print('训练集的因变量量数据的维度',x_test.shape)

print('测试集的自变量数据的维度',y_train.shape)

print('测试集的因变量数据的维度',y_test.shape) # 查看数据集划分后的维度情况

(4)模型训练与对比

target_names = ['未离', '离婚'] # 生成类别的名称

for key in models:

models[key].fit(x_train,y_train) # 模型训练

display(confusion_matrix(y_test,models[key].predict(x_test))) # 对y_test进行预测,输出混淆矩阵

print('\n')

print(classification_report(y_test,models[key].predict(x_test),target_names=target_names)) # 对y_test进行预测,输出预测的分类评价

print('\n')

[1] 基于svm的模型训练和预测结果

[2] 基于lda判别模型训练和预测结果

[3] 基于朴素贝叶斯模型训练和预测结果

[4] 基于KNN判别模型训练和预测结果

[5] 基于决策树模型训练和预测结果

[6] 基于神经网络模型训练和预测结果

从中可以看到,LDA、决策树和神经网络的训练预测效果较好。

python数据集_【Python数据分析实战】divorce数据集相关推荐

  1. knn的python代码_《机器学习实战》之一:knn(python代码)

    数据 标称型和数值型 算法 归一化处理:防止数值较大的特征对距离产生较大影响 计算欧式距离:测试样本与训练集 排序:选取前k个距离,统计频数(出现次数)最多的类别 def classify0(inX, ...

  2. t检验的p值对照表_论文数据分析实战 | 如何对汇总数据进行t检验

    在SPSS统计分析交流群中有学员在阅读论文的过程中看到下面的这张表格: 这张表中记录了第16届世界男子篮球锦标赛中国队与前8名球队进攻指标比较的结果,其中这份表格并没有给出详细的P值,而只是告诉我们P ...

  3. 初识python 视频_#python day02 初识python 学习视频来源于 太白金星

    #python day02 初识python 学习视频来源于 太白金星 ''' 知识点:安装PyCharm''' # 设置鼠标条件字体大小:file ->settings # 搜索mouse E ...

  4. Python 零基础入门数据分析实战之小费数据集应用

    一.数据来源 本节选用的是 Python 的第三方库 seaborn 自带的数据集,该小费数据集为餐饮行业收集的数据,其中 total_bill 为消费总金额.tip 为小费金额.sex 为顾客性别. ...

  5. python的自带数据集_解决Keras自带数据集与预训练model下载太慢问题

    keras的数据集源码下载地址太慢.尝试过修改源码中的下载地址,直接报错. 从源码或者网络资源下好数据集,下载好以后放到目录 ~/.keras/datasets/ 下面. 其中:cifar10需要改文 ...

  6. 泰坦尼克数据集预测分析_探索性数据分析—以泰坦尼克号数据集为例(第1部分)

    泰坦尼克数据集预测分析 Imagine your group of friends have decided to spend the vacations by travelling to an am ...

  7. python产品质量分析_Python数据分析实战之葡萄酒质量分析

    1. 明确需求和目的 以葡萄酒类型为标签,分为白葡萄酒和红葡萄酒.比较这两种葡萄酒的差别并选取葡萄酒的化学成分:固定酸度.挥发性酸度.柠檬酸.氯化物.游离二氧化硫.总硫度.密度.PH值.硫酸盐.酒精度 ...

  8. python建筑案例_Python数据分析实战-链家北京二手房价分析

    前言 最近在自学Python,通过学习大家的分享案例,看到使用Python进行较多的主要4个方面:爬虫,数据处理,数据可视化以及机器学习建模.对我来说目标就是: 熟练使用numpy pandas 进行 ...

  9. 大数据python试卷_大数据分析的python基础-中国大学mooc-试题题目及答案

    大数据分析的python基础-中国大学mooc-试题题目及答案 更多相关问题 [判断题] 只有当晶闸管同时承受正向阳极电压和正向门极电压时,晶闸管才可以导通. [判断题] 换流可以通过机械开关或电子开 ...

  10. python国防_Python+Excel数据分析实战:军事体能考核成绩评定(二)基本框架和年龄计算...

    一.基本框架 项目任务: 每个人的体能测试有单杠.仰卧起坐.30米x2蛇形跑.3000米跑四个项目,外加体型是否合格(BMI身体质量指数或者PBF体脂百分比),每项原始测试数据,通过不同项目各自规定的 ...

最新文章

  1. 鲲鹏高校行太原站来袭,两大课程一站式掌握未来潮流
  2. hadoop yarn的三种资源调度器详解
  3. HDU 2255 二分图最佳匹配 模板题
  4. SQL语句拼接常加 where 1=1 的原因
  5. 动态加载和静态加载及其编译步骤
  6. C#中 Convert与Parse的区别
  7. spdk/dpdk 编译相关问题汇总
  8. openssh8.6升级修复(CVE-2020-15778)(CVE-2018-15919)(CVE-2017-15906)等漏洞
  9. Android绑定服务后出现空指针异常问题
  10. c语言不定参数个数,C语言中不定参数的实现
  11. (带区号)座机号正则_字符串处理之正则表达式(通俗易懂)
  12. php - 获取数组头尾元素
  13. 实时操作系统分类、特点及实现原理
  14. 我从to B 角度看百度
  15. docker-redis配置文件修改
  16. PS自学教程之色彩三原色RGB
  17. springboot注解实现自动插入创建时间和更新时间到数据库
  18. Sicily 1090. Highways
  19. 吕 思 伟 ---- 潘 爱 民 :: ATL 介 绍( 三) (转)
  20. Linux系统的特点有哪些

热门文章

  1. 20190919题目总结——选择题
  2. 自考英语二笔记 Unit1
  3. [除錯]引動過程的目標傳回例外狀況
  4. Unity3D for VR 学习(1): 又一个新玩具 暴风魔镜 4(Android)
  5. 游戏服务器框架概括分析
  6. 艾奇KTV电子相册制作软件 4.7 破解安装版
  7. 开关电源入门01-开关电源的基本形式
  8. 外国语言学c刊集刊联系方式,CSSCI(2017-2018)收录集刊目录 (共189 种).PDF
  9. [渝粤教育] 郑州工程技术学院 大学计算机基础 参考 资料
  10. html颜色代码大全word,DIV+CSS网页设计之网页配色方案