大数据治理(高级) 课件 西财 实训项目9:健康数据挖掘_第1页
大数据治理(高级) 课件 西财 实训项目9:健康数据挖掘_第2页
大数据治理(高级) 课件 西财 实训项目9:健康数据挖掘_第3页
大数据治理(高级) 课件 西财 实训项目9:健康数据挖掘_第4页
大数据治理(高级) 课件 西财 实训项目9:健康数据挖掘_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实训9健康数据挖掘项目背景实训目标实训任务技术准备实训步骤目录项目背景随着生活质量的提高,人们越来越关注自身的健康问题,健康数据是随着近几年数字浪潮和信息现代化而出现的新名词,是指无法在可承受的时间范围内用常规软件工具进行捕捉、管理和处理的健康数据的集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。健康大数据的整合再利用对于身体状况监测,疾病预防和健康趋势分析都具有积极的意义。实训目标理解健康数据分析的意义;掌握项目流程;掌握数据挖掘的基本方法;掌握不同方法的具体使用;掌握实验结果对比分析;掌握算法之间的优劣。实训任务(1)进一步掌握项目流程(Crisp-DM框架)并应用到健康数据挖掘中;(2)对K近邻、逻辑回归、支持向量机、神经网络、决策树、随机森林、Adaboost、朴素贝叶斯种算法应用到健康数据中实践;(3)对多种算法的实验结果进行对比和分析。技术准备监督学习半监督学习无监督学习有特征

有标签即有标准答案有特征

部分标签训练部分有标准答案有特征,无标签即无标准答案分类回归分类回归聚类聚类技术准备由于数据挖掘的应用领域十分广泛,因此产生了多种数据挖掘的算法和方法。对于某一数据集很有效的算法,对另一数据集却有可能完全无效。因此,要针对具体的挖掘目标和应用对象设计不同的算法。技术准备本章节主要采用的是分类。使用以下八种算法进行实验:K近邻、逻辑回归、支持向量机、神经网络、决策树、随机森林、Adaboost、朴素贝叶斯算法K近邻算法K-近邻(k-NearestNeighbor,KNN)算法是一种基本分类方法。最简单最初级的分类器是将全部的训练数据所对应的类别都记录下来,当测试对象的属性和某个训练对象的属性完全匹配时,便可以对其进行分类。但测试对象与训练对象的完全匹配是不现实的,一个训练对象可能被分到多个类中,由此诞生了K-近邻算法。它是通过测量不同特征值之间的距离进行分类,如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别,其中K通常是不大于20的整数。K近邻算法K-近邻算法的基本思路是:选择未知样本在一定范围内确定个数的K个样本,该K个样本大多数属于某一类型,则未知样本九被判定为该类型。K近邻算法1、导入K近邻算法模块fromsklearn.neighborsimportKNeighborsClassifier2、建模model=KNeighborsClassifier()KNeighborsClassifier(n_neighbors=5,weights='uniform',algorithm='auto',leaf_size=30,p=2,metric=’minkowski’,metric_params=None,n_jobs=1)K近邻算法KNeighborsClassifier类常用的参数及其说明如下表所示。参数名称说明n_neighbors接收int。表示“邻居”数。默认为5weights接收str。表示分类判断时最近邻的权重,可选参数为uniform和distance,uniform表示权重相等,distance表示按距离的倒数赋予权重。默认为uniformalgorithm接收str。表示分类时采取的算法,可选参数为auto、ball_tree、kd_tree和brute,一般选择auto自动选择最优的算法。默认为autometric接收str。表示距离度量。默认为minkowskip接收int。表示距离度量公式,p=1表示曼哈顿距离,p=2表示欧式距离。默认为2n_jobs接收int。表示计算时使用的核数。默认为1K近邻算法3、调用模型对象中的fit()方法,对数据进行拟合训练model=model.fit(X_train,y_train)model4、调用模型中的score()方法,考察训练效果,训练集上的准确率判断rv=model.score(X_train,y_train)rvK近邻算法5、调用模型中的predict()方法,对测试样本进行预测,获得预测结果。y_test_pred=model.predict(X_test)判断模型准确的的机器学习相关包:#导入相关的数据包fromsklearn.metricsimportconfusion_matrix,classification_reportfromsklearn.metricsimportaccuracy_score,precision_score,recall_scoreK近邻算法6、调用模型中的predict_proba()方法,对测试样本的概率进行预测,获得预测结果的概率。y_pred_proba=model.predict_proba(X_train)K近邻算法优点:简单易懂缺点:计算量太大逻辑回归算法本质是分类算法逻辑回归一般指logistic回归(logistic回归分析),常用于数据挖掘,疾病自动诊断,经济预测等领域。例如,探讨引发疾病的危险因素,并根据危险因素预测疾病发生的概率等。逻辑回归算法Sigmoid函数公式:g(z)=1/(1+e-z)自变量取值为任意实数,值域[0,1]解释:将任意的输入值映射到[0,1]区间通过对原始数据的处理可以得到一个值,将该值映射到Sigmoid函数中,就完成了由值到概率的转换,也就是分类任务。逻辑回归算法1、导入逻辑回归模块fromsklearn.linear_modelimportLogisticRegression2、建模对象(逻辑回归建模)model=LogisticRegression(penalty='l2',dual=False,tol=0.0001,C=1.0,fit_intercept=True,intercept_scaling=1,class_weight=None,random_state=None,solver='liblinear',max_iter=100,multi_class='ovr',verbose=0,warm_start=False,n_jobs=1)逻辑回归算法LogisticRegression类常用的参数及其说明如下表所示。参数名称说明penalty接收str。表示正则化选择参数,可选l1或l2。默认为l2solver接收str。表示优化算法选择参数,可选参数为newton-cg,lbfg,liblinear,sag,当penalty='l2'时,4种都可选;当penalty='l1'时,只能选liblinear。默认liblinearmulti_class接收str。表示分类方式选择参数,可选ovr和multinomial。默认ovrclass_weight接收balanced以及字典,表示类型权重参数,如对于0,1的二元模型,可以定义class_weight={0:0.9,1:0.1},这样类型0的权重为90%,而类型1的权重为10%。默认Nonecopy_X接收bool。表示是否复制数据表进行运算。默认Truen_jobs接收int。表示计算时使用的核数。默认为1逻辑回归算法3、调用模型对象中的fit()方法,对数据进行拟合训练model=model.fit(X_train,y_train)model4、调用模型中的score()方法,考察训练效果,训练集上的准确率判断rv=model.score(X_train,y_train)rv逻辑回归算法5、调用模型中的predict()方法,对测试样本进行预测,获得预测结果。y_test_pred=model.predict(X_test)判断模型准确的的机器学习相关包:#导入相关的数据包fromsklearn.metricsimportconfusion_matrix,classification_reportfromsklearn.metricsimportaccuracy_score,precision_score,recall_score逻辑回归算法6、调用模型中的predict_proba()方法,对测试样本的概率进行预测,获得预测结果的概率。y_pred_proba=model.predict_proba(X_test)逻辑回归算法逻辑回归的优点1)预测结果是介于0和1之间的概率;2)可以适用于连续性和类别性自变量;3)容易使用和解释。逻辑回归算法逻辑回归的缺点:1)对模型中自变量多重共线性较为敏感,例如两个高度相关自变量同时放入模型,可能导致较弱的一个自变量回归符号不符合预期,符号被扭转。需要利用因子分析或者变量聚类分析等手段来选择代表性的自变量,以减少候选变量之间的相关性;2)预测结果呈“S”型,因此从log(odds)向概率转化的过程是非线性的,在两端随着log(odds)值的变化,概率变化很小,边际值太小,而中间概率的变化很大,很敏感。导致很多区间的变量变化对目标概率的影响没有区分度,无法确定阀值。支持向量机算法支持向量机(SupportVectorMachine,SVM)是用来解决二分类问题的有监督学习算法,它的基本模型是在特征空间上找到最佳的分离超平面使得训练集上正负样本间隔最大,在引入了核方法之后,SVM也可以用来解决非线性问题。SVC、NuSVC、linearSVC都能够实现多元分类,其中SVC与NuSVC比较相似,但两者参数略有不同,而LinearSVC如其名字所示,仅支持线性核函数的分类。支持向量机算法支持向量机目的:找到一条线将样本分类w1x+w2y+b=0向量化:[w1

w2][xy]T+b=02维扩展到n维[w1

wn][x1xn]T+b=0即WTx+b=0支持向量机算法1、导入支持向量机模块fromsklearn.svmimportSVC2、建模

model=SVC(C=1.0,kernel=’rbf’,degree=3,gamma=’auto’,coef0=0.0,shrinking=True,probability=False,tol=0.001,cache_size=200,class_weight=None,verbose=False,max_iter=-1,decision_function_shape=’ovr’,random_state=None)其中核函数可以选择线性核函数、多项式核函数、高斯核函数、sigmoid核,分别用linear、poly、rbf、sigmoid表示,默认情况下选择高斯核函数。支持向量机算法SVC类常用的参数及其说明如表所示。参数名称说明C接收int或float。表示对误分类的惩罚参数。默认为1.0kernel接收str。表示核函数,可选参数为linear、poly、rbf、sigmoid、precomputed。默认为rbfdegree接收int。表示多项式核函数poly的维度。默认为3gamma接收str。表示rbf、poly、sigmoid核函数的参数,若是auto,则自动设置参数。默认为autocoef0接收int或float。表示核函数的常数项,对poly和sigmoid有效,默认为0.0tol接收float。表示停止训练的误差大小。默认为0.001max_iter接受int。表示最大迭代次数,-1表示无限制。默认为-1支持向量机算法3、调用模型对象中的fit()方法,对数据进行拟合训练model=model.fit(X_train,y_train)model4、调用模型中的score()方法,考察训练效果,训练集上的准确率判断rv=model.score(X_train,y_train)rv支持向量机算法5、调用模型中的predict()方法,对测试样本进行预测,获得预测结果。y_test_pred=model.predict(X_test)判断模型准确的的机器学习相关包:#导入相关的数据包fromsklearn.metricsimportconfusion_matrix,classification_reportfromsklearn.metricsimportaccuracy_score,precision_score,recall_score支持向量机算法6、调用模型中的predict_proba()方法,对测试样本的概率进行预测,获得预测结果的概率。y_pred_proba=model.predict_proba(X_train)支持向量机算法优点:1.由于SVM是一个凸优化问题,所以求得的解一定是全局最优而不是局部最优。2.不仅适用于线性线性问题还适用于非线性问题(用核技巧)。3.拥有高维样本空间的数据也能用SVM,这是因为数据集的复杂度只取决于支持向量而不是数据集的维度,这在某种意义上避免了“维数灾难”。4.理论基础比较完善(例如神经网络就更像一个黑盒子)。支持向量机算法缺点:1.二次规划问题求解将涉及m阶矩阵的计算(m为样本的个数),因此SVM不适用于超大数据集。(SMO算法可以缓解这个问题)2.只适用于二分类问题。(SVM的推广SVR也适用于回归问题;可以通过多个SVM的组合来解决多分类问题)神经网络算法神经网络(NeuralNetworks)能在外界信息的基础上改变内部结构,是一个具备学习功能的自适应系统。神经网络算法输入原始数据信息通过迭代学习算法,对参数进行更新估计,使得模型的输出逼近于样本真实结果的过程。神经网络算法BP神经网络算法流程如下:1、在(0,1)范围内随机初始化网络中所有权值和阈值。2、将训练样本提供给输入层神经元,然后逐层将信号前传,直到产生输出层的结果,这一步一般称为信号向前传播。3、根据

计算输出层误差,将误差逆向传播至隐层神经元,再根据隐层神经元误差来对权值和阈值进行更新,这一步一般称为误差向后传播。4、循环执行步骤2和步骤3,直到达到某个停止条件,一般为训练误差小于某个阈值或迭代次数大于某个阈值。神经网络算法1、导入神经网络分类模块fromsklearn.neural_networkimportMLPClassifier2、建模对象model=MLPClassifier(hidden_layer_sizes=(100,),activation=’relu’,solver=’adam’,alpha=0.0001,batch_size=’auto’,learning_rate=’constant’,learning_rate_init=0.001,power_t=0.5,max_iter=200,shuffle=True,random_state=None,tol=0.0001,verbose=False,warm_start=False,momentum=0.9,nesterovs_momentum=True,early_stopping=False,validation_fraction=0.1,beta_1=0.9,beta_2=0.999,epsilon=1e-08,n_iter_no_change=10)神经网络算法MLPClassifier类常用的参数及其说明如表所示。参数名称说明hidden_layer_sizes接收tuple。表示隐层结构,其长度表示隐层层数,元素表示每一个隐层的神经元个数。如(80,90)表示包含两个隐层,第一个隐层有80个神经元,第2个隐层有90个神经元。默认为(100,)activation接收str。表示激活函数,可选参数有以下4种。(1)identity:恒等函数,(2)logistics:Sigmooid函数,

(3)tanh:tanh函数,

(4)relu:relu函数,

默认为relu神经网络算法MLPClassifier类常用的参数及其说明如表所示。参数名称说明solver接收str。表示优化算法的类型,可选参数有以下3种(1)lbfgs:一种拟牛顿法(2)sgd:随机梯度下降法(3)adam:基于随机梯度的优化器,在大规模数据集上效果较好默认为adamalpha接收float。表示正则化系数。默认为0.0001max_iter接收int。表示最大迭代次数。默认为200tol接收float。表示优化过程的收敛性阈值。默认为0.0001神经网络算法3、调用模型对象中的fit()方法,对数据进行拟合训练model=model.fit(X_train,y_train)model4、调用模型中的score()方法,考察训练效果,训练集上的准确率判断rv=model.score(X_train,y_train)rv神经网络算法5、调用模型中的predict()方法,对测试样本进行预测,获得预测结果。y_test_pred=model.predict(X_test)判断模型准确的的机器学习相关包:#导入相关的数据包fromsklearn.metricsimportconfusion_matrix,classification_reportfromsklearn.metricsimportaccuracy_score,precision_score,recall_score神经网络算法6、调用模型中的predict_proba()方法,对测试样本的概率进行预测,获得预测结果的概率。y_pred_proba=model.predict_proba(X_train)决策树算法决策树是一个预测模型,代表的是对象属性与对象值之间的一种映射关系。决策树可分为分类树和回归树,分类树的输出是样本的类标,回归树的输出是一个预测值。决策树算法决策树是一种基于树结构来进行决策的分类算法。一般地,一棵决策树包含一个根节点、若干个中间节点和若干个叶节点。根节点和中间节点对应于一个属性测试,叶节点对应于决策结果。一般决策树的结构示意图如图所示。决策树算法1、导入决策树模块fromsklearn.treeimportDecisionTreeClassifier2、建模model=DecisionTreeClassifier()决策树算法3、调用模型对象中的fit()方法,对数据进行拟合训练model=model.fit(X_train,y_train)model4、调用模型中的score()方法,考察训练效果,训练集上的准确率判断rv=model.score(X_train,y_train)rv决策树算法5、调用模型中的predict()方法,对测试样本进行预测,获得预测结果。y_train_pred=clf.predict(X_train)y_test_pred=clf.predict(X_test)判断模型准确的的机器学习相关包:#导入相关的数据包fromsklearn.metricsimportconfusion_matrix,classification_reportfromsklearn.metricsimportaccuracy_score,precision_score,recall_score决策树算法6、调用模型中的predict_proba()方法,对测试样本的概率进行预测,获得预测结果的概率。y_pred_proba=clf.predict_proba(X_train)随机森林算法在机器学习中,集成学习算法通过组合使用多种学习算法来获得比单独使用任何单独的学习算法更好的预测性能。假设有个病人去医院看病,希望根据医生的诊断做出治疗。他可能选择看多个医生,而不是一个;如果某种诊断比其他诊断出现的次数多,则将它作为最终的诊断结果。也就是说最终诊断结果是根据多数表决做出的,每个医生都具有相同的权重。随机森林算法把医生换成分类器,就得到Bagging(Bootstrapaggregating)的思想,单个分类器称为基分类器。多数分类器的结果比少数分类器的结果更可靠。随机森林算法(RandomForest,RF)是Bagging的一个拓展,RF在以决策树为基分类器构建Bagging学习器的基础上,进一步在决策树的训练过程中引入了随机属性选择。随机森林除了拥有Bagging方法已有的优点外,还有更加重要的一点:由于随机森林在每次划分时只考虑很少的属性,因此在大型数据上效率更高。随机森林算法1、导入随机森林模块fromsklearn.ensembleimportRandomForestClassifier2、建模对象(随机森林建模)model=RandomForestClassifier(n_estimators=10,criterion=’gini’,max_depth=None,min_samples_split=2,min_samples_leaf=1,min_weight_fraction_leaf=0.0,max_features=’auto’,max_leaf_nodes=None,min_impurity_decrease=0.0,min_impurity_split=None,bootstrap=True,oob_score=False,n_jobs=None,random_state=None,verbose=0,warm_start=False,class_weight=None)随机森林算法RandomForestClassifier类常用的参数及其说明如表所示。参数名称说明n_estimators接收int。表示随机森林中决策树数量。默认为10criterion接收str。表示决策树进行属性选择时的评价标准,可选参数为gini、entropy。默认为ginimax_depth接收int或None。表示决策树划分时考虑的最大特征数。默认为Nonemin_samples_split接收int或float。表示内部结点最小的样本数,若是float,则表示百分数。默认为2min_samples_leaf接收int或float。表示叶结点最小的样本数,若是float,则表示百分数。默认为1max_leaf_nodes接受in-t或None。表示最大的叶结点数。默认为Noneclass_weight接受dict、list、balanced或None。以{class_label:weight}的形式表示类的权重。默认为None随机森林算法3、调用模型对象中的fit()方法,对数据进行拟合训练model=model.fit(X_train,y_train)model4、调用模型中的score()方法,考察训练效果,训练集上的准确率判断rv=model.score(X_train,y_train)rv随机森林算法5、调用模型中的predict()方法,对测试样本进行预测,获得预测结果。y_test_pred=model.predict(X_test)判断模型准确的的机器学习相关包:#导入相关的数据包fromsklearn.metricsimportconfusion_matrix,classification_reportfromsklearn.metricsimportaccuracy_score,precision_score,recall_score随机森林算法6、调用模型中的predict_proba()方法,对测试样本的概率进行预测,获得预测结果的概率。y_pred_proba=model.predict_proba(X_train)Adaboost算法Adaboost算法Adaboost是一种非常流行的提升算法Adaboost算法1、导入Adaboost模块fromsklearn.ensembleimportAdaBoostClassifier2、建模对象(建模)model=AdaBoostClassifier()AdaBoostClassifier(base_estimator=None,n_estimators=50,learning_rate=1.0,algorithm='SAMME.R',random_state=None)Adaboost算法Adaboost常用的参数及其说明如表所示参数名称说明base_estimator基分类器,默认是决策树,在该分类器基础上进行boosting,理论上可以是任一分类器,但是如果是其他分类器时需要指明样本权重。n_estimators基分类器提升(循环)次数,默认是50次,这个值过大,模型容易过拟合;值过小,模型容易欠拟合。learning_rate学习率,表示梯度收敛速度,默认为1,如果过大,容易错过最优值,如果过小,则收敛速度会很慢;该值需要和n_estimators进行一个权衡,当分类器迭代次数较少时,学习率可以小一些,当迭代次数较多时,学习率可以适当放大。algorithmboosting算法,也就是模型提升准则,有两种方式SAMME,和SAMME.R两种,默认是SAMME.R,两者的区别主要是弱学习器权重的度量,前者是对样本集预测错误的概率进行划分的,后者是对样本集的预测错误的比例,即错分率进行划分的,默认是用的SAMME.R。random_state随机种子设置。Adaboost算法3、调用模型对象中的fit()方法,对数据进行拟合训练model=model.fit(X_train,y_train)model4、调用模型中的score()方法,考察训练效果,训练集上的准确率判断rv=model.score(X_train,y_train)rvAdaboost算法5、调用模型中的predict()方法,对测试样本进行预测,获得预测结果。y_test_pred=model.predict(X_test)判断模型准确的的机器学习相关包:#导入相关的数据包fromsklearn.metricsimportconfusion_matrix,classification_reportfromsklearn.metricsimportaccuracy_score,precision_score,recall_scoreAdaboost算法6、调用模型中的predict_proba()方法,对测试样本的概率进行预测,获得预测结果的概率。y_pred_proba=model.predict_proba(X_test)朴素贝叶斯算法朴素贝叶斯分类是一种十分简单的分类算法,其核心就是贝叶斯定理。它的思想基础十分易懂,对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,出现概率最大的类别就被认为是待分类项的所属类别。朴素贝叶斯算法有一个最重要的基本假设,即属性之间相互独立。这个假设在实际应用中往往是不成立的,这给NBC模型的正确分类带来了一定影响。朴素贝叶斯算法P(A)是A的先验概率(边沿概率),不考虑任何B方面的因素。P(B)是B的先验概率(边沿概率),不考虑任何A方面的因素。P(A|B)是已知B发生后A的条件概率,得自B的取值而被称为A的后验概率。P(B|A)是已知A发生后B的条件概率,得自A的取值而被称为B的后验概率。朴素贝叶斯算法

朴素贝叶斯算法----实例学校里有60%男生和40%女生,女生穿裤子的人数和穿裤子的人数和穿裙子的人数相等,所有男生穿裤子,一个人在远处看到了一个穿裤子的学生,这个学生是女生的概率是多少?事件A是看到女生

事件B是看到一个穿裤子的学生

求P(A|B)P(A)忽略其它因素,看到女生的概率P(A)=0.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论