Python医学数据分析(微课版) 课件 第7章 机器学习基础及医学应用_第1页
Python医学数据分析(微课版) 课件 第7章 机器学习基础及医学应用_第2页
Python医学数据分析(微课版) 课件 第7章 机器学习基础及医学应用_第3页
Python医学数据分析(微课版) 课件 第7章 机器学习基础及医学应用_第4页
Python医学数据分析(微课版) 课件 第7章 机器学习基础及医学应用_第5页
已阅读5页,还剩85页未读 继续免费阅读

下载本文档

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

文档简介

《Python医学数据分析(微课版)》第七章机器学习基础及医学应用PythonMedicaldataanalysis机器学习基本概念7.1内容导航CONTENTSscikit-learn库简介及常用API7.2线性回归7.3KNN算法7.4逻辑回归7.5朴素贝叶斯分类器7.6决策树与随机森林7.7支持向量机算法7.8关联规则算法7.9K-means算法7.10

机器学习是人工智能的一个重要分支,专注于开发能够从数据中自动学习并构建模型的方法和技术。这些模型被用来分析新的数据集并做出预测或决策。简而言之,机器学习就是通过数据驱动的方式,构建模型以实现对新数据的有效分析和预测。课件制作人:谢钧谢希仁7.1机器学习基本概念第七章机器学习7.1机器学习基本概念模型训练划分数据集训练集患病血压体温体重身高性别年龄未患病属性/特征/自变量标签数据数据数据数据数据数据数据数据数据数据测试集模型模型评价评价结果假定有一组患者数据集,该数据集包括患者的年龄、性别、身高、体重、体温、血压,以及是否患病等信息,我们用这组数据来构建疾病预测模型。第七章机器学习7.1机器学习基本概念机器学习过程数据采集数据预处理模型训练模型评估模型部署01OPTION02OPTION03OPTION数据采集

指收集和获取用于训练模型的数据。数据预处理指对原始数据进行清洗、转换和整合的过程。模型训练

指使用训练数据对模型(如决策树、逻辑回归、神经网络、支持向量机、贝叶斯网络等模型)进行训练和优化04OPTION05OPTION模型评估使用测试数据评估模型性能。模型部署将模型部署到业务系统(如疾病诊断小程序)进行应用。第七章机器学习7.1机器学习基本概念有监督学习是指利用带标签(如“是否患病”)的样本来优化算法参数使其性能提高的过程。输出变量为连续变量的预测问题称为回归问题,如,通过房屋面积预测房屋价格;输出变量为有限个离散变量的预测问题称为分类问题,如,通过患者症状预测疾病类型。有监督算法常见的有:线性回归,神经网络,决策树,逻辑回归,支持向量机,KNN等。课件制作人:谢钧谢希仁1.有监督学习无监督学习是指在没有标签信息的情况下对数据进行建模和分析的过程。在无监督学习中,标签是模型根据特征按某种规则归纳出来的,聚类算法是典型的无监督学习算法。2.无监督学习半监督学习是指在部分样本带有标签而其他样本没有标签的情况下进行的学习过程。这种学习方法结合了有监督学习和无监督学习的特点,旨在利用少量的标注数据和大量的未标注数据来改进模型的性能。3.半监督学习第七章机器学习机器学习基本概念7.1内容导航CONTENTSscikit-learn库简介及常用API7.2线性回归7.3KNN算法7.4逻辑回归7.5朴素贝叶斯分类器7.6决策树与随机森林7.7支持向量机算法7.8关联规则算法7.9K-means算法7.107.2scikit-learn库简介及常用APIscikit-learn是一个基于python的机器学习库,提供了简单而高效的工具用于机器学习和数据分析。它涵盖了包括分类、回归、聚类、降维、模型选择和数据预处理在内的多种机器学习算法。sklearn库是在Numpy、Scipy和matplotlib的基础上开发而成的,因此在安装sklearn前,需要先安装这些依赖库。在安装好依赖库之后,可以使用pip命令安装scikit-learn库:pipinstallscikit-learn课件制作人:谢钧谢希仁第七章机器学习7.2scikit-learn库简介及常用APIsklearn库共分为6大部分,分别用于完成分类任务、回归任务、聚类任务、降维任务、模型选择以及数据预处理。7.2.1scikit-learn库常用API第七章机器学习分类模型加载模块最近邻算法neighbors.NearestNeighbors

支持向量机svm.SVC

朴素贝叶斯naive_bayers.GussianNB决策树tree.DecisionTreeClassifier集成方法ensemble.BaggingClassifier神经网络neural_network.MLPClassifier7.2scikit-learn库简介及常用API课件制作人:谢钧谢希仁表1分类任务的常用API接口第七章机器学习回归模型加载模块岭回归linear_model.RidgeLasso回归linear_model.Lasso

弹性网络linear_model.ElasticNet最小角回归linear_model.Lars贝叶斯回归linear_model.BayesianRidge逻辑回归linear_model.LogisticRegression多目标回归multioutput.MultiOutputRegressor7.2scikit-learn库简介及常用API课件制作人:谢钧谢希仁表2回归任务的常用API接口第七章机器学习回归模型加载模块K-meanscluster.KMeansAP聚类cluster.AffinityPropagation均值漂移聚类cluster.MeanShift层次聚类cluster.AgglomerativeClusteringDBSCANcluster.DBSCANBIRCHcluster.Birch谱聚类cluster.SpectralCoclustering7.2scikit-learn库简介及常用API课件制作人:谢钧谢希仁表3聚类任务的常用API接口第七章机器学习回归模型加载模块主成分分析decomposition.PCA

截断SVD和LSAdecomposition.TruncatedSVD字典学习decomposition.DictionaryLearning因子分析decomposition.FactorAnalysis独立成分分析decomposition.FastICA非负矩阵分解decomposition.NMFLDAdecomposition.LatentDirichletAllocation7.2scikit-learn库简介及常用API课件制作人:谢钧谢希仁表4降维任务的常用API接口第七章机器学习数据集加载函数波士顿房价数据集load_boston

鸢尾花数据集load_iris糖尿病数据集load_diabetes数字数据集load_digitslinnerud物理锻炼数据集load_linnerud葡萄酒数据集load_wine威斯康星州乳腺癌数据集load_breast_cancer7.2scikit-learn库简介及常用API课件制作人:谢钧谢希仁表5scikit-learn库内置数据集第七章机器学习7.2scikit-learn库简介及常用API例7-1乳腺癌威斯康星诊断数据集(WisconsinBreastCancerDataset,WBCD)是机器学习领域常用的基准数据集之一,用于研究乳腺癌的诊断问题。这个数据集最初由美国威斯康星大学的研究者们收集整理,并于1990年代初首次公开使用。WBCD数据集包含了从乳房肿块细胞样本中提取的一系列特征,这些特征通过细针穿刺活检获得,旨在帮助医生判断肿瘤是良性还是恶性。该数据集中的每个样本代表一个病人的肿瘤细胞核图像分析结果,通常包括肿瘤平均半径、平均平滑度、半径标准差,面积标准差等特征变量和结果变量Diagnosis(即,诊断结果)。下面通过案例代码加载该数据集并显示前5行和前5列数据。课件制作人:谢钧谢希仁7.2.2加载数据集案例实践第七章机器学习7.2scikit-learn库简介及常用APIfromsklearn.datasetsimportload_breast_cancerimportpandasaspd#加载乳腺癌威斯康星诊断数据集data=load_breast_cancer()#获取数据的行数和列数num_rows,num_columns=data.data.shape#打印数据的行数和列数print(f"数据集的行数:{num_rows}")print(f"数据集的列数:{num_columns}")课件制作人:谢钧谢希仁#将数据转换为DataFrame格式,方便查看df=pd.DataFrame(data=data.data,columns=data.feature_names)#添加目标列(即是否为恶性)df['target']=data.target#打印自变量(特征)print("输出自变量(特征)和因变量(目标):")#print(df.feature_names)print(df.columns)print()#打印数据集的前5行print("数据集的最后5行及部分列:")print(df.tail()[['meanradius','meantexture','meanperimeter','meanarea','target']])第七章机器学习7.2scikit-learn库简介及常用API这段代码首先从sklearn.datasets导入load_breast_cancer函数并加载乳腺癌威斯康星诊断数据集,然后获取并打印数据集的行信息和列信息。接着,将数据集转换为pandasDataFrame格式,之后,打印数据集的特征名称和目标名称,最后打印数据集的前5行和前5列数据,展示数据的结构和内容。课件制作人:谢钧谢希仁第七章机器学习机器学习基本概念7.1内容导航CONTENTSscikit-learn库简介及常用API7.2线性回归7.3KNN算法7.4逻辑回归7.5朴素贝叶斯分类器7.6决策树与随机森林7.7支持向量机算法7.8关联规则算法7.9K-means算法7.107.3线性回归

回归分析是一种研究因变量y(或称结果变量、被输出变量、相应变量)与自变量X(或称解释量、独立变量、输入变量)之间关系的数据分析方法,目的在于建立数学模型以便通过自变量来预测因变量。如果这个模型是线性的,即因变量可以表示为自变量的加权和,则称为线性回归模型。例如,用患者的年龄、性别、体重、血压等特征来预测患者未来的血糖水平。只有一个自变量的情况称为简单回归,大于一个自变量情况的叫做多元回归(MultivariableLinearRegression)。课件制作人:谢钧谢希仁第七章机器学习7.3线性回归如果两个变量之间的关系可以用一元一次方如果两个变量之间的关系可以用一元一次方程y=bx+a表示(即在图像上呈现出来的是一条直线),那么这两个变量之间就是线性相关的。构建基于这种关系的数学模型就是线性回归模型。一旦建立了这样的模型,给定一个变量x,就可以预测另一个变量y的值,我们将y的预测值标记为ŷ,其线性回归方程表示如下:ŷ=𝑏+?其中,x为自变量;y为因变量;ŷ为给定x时y的估计值;a为截距;b为回归系数。课件制作人:谢钧谢希仁线性回归方程示意图

如果两个变量之间的关系可以用一元一次方程y=bx+a表示(即在图像上呈现出来的是一条直线),那么这两个变量之间就是线性相关的。构建基于这种关系的数学模型就是线性回归模型。一旦建立了这样的模型,给定一个变量x,就可以预测另一个变量y的值,我们将y的预测值标记为ŷ,其线性回归方程表示如下:

ŷ=𝑏+a

其中,x为自变量;y为因变量;ŷ为给定x时y的估计值;a为截距;b为回归系数。在图中,叉号表示真实数据,直线ŷ=bx+a为基于真实数据训练得到线性回归方程,将自变量xi代入方程即可得到yi的预测值ŷi(线上的圆圈),预测值和真实值之间的差值被称为残差,如下所示:ε=yi-ŷi7.3.1线性回归的基本原理第七章机器学习线性回归如果两个变量之间的关系可以用一元一次方如果两个变量之间的关系可以用一元一次方程y=bx+a表示(即在图像上呈现出来的是以上计算预测值和真实值总体残差的函数就被称为损失函数。因此,RSS就是线性回归的一个损失函数。这个损失函数越小,预测结果与真实值之间的误差就越小,预测就越精确。在构建线性回归模型时,我们的目标是通过反复迭代训练模型来调整参数a和b的值,找到能最小化RSS的最佳拟合直线。一条直线),那么这两个变量之间就是线性相关的。构建基于这种关系的数学模型就是线性回归模型。一旦建立了这样的模型,给定一个变量x,就可以预测另一个变量y的值,我们将y的预测值标记为ŷ,其线性回归方程表示如下:ŷ=𝑏+?其中,x为自变量;y为因变量;ŷ为给定x时y的估计值;a为截距;b为回归系数。课件制作人:谢钧谢希仁

第七章机器学习7.3线性回归以上仅介绍了只有一个自变量x的一元一次线性回归方程及其损失函数,真实世界中更多的是多元线性回归方程,如下所示:课件制作人:谢钧谢希仁

第七章机器学习7.3线性回归例7-2研究男青年前臂长和身高关系,从男青年中随机抽取11名人员分别测量其身高和前臂长,测量结果如下表所示,试计算身高(x)与前臂长(y)之间的线性回归方程。课件制作人:谢钧谢希仁7.3.2线性回归案例实践第七章机器学习7.3线性回归编号身高(x)前臂长(y)11704721734231604441554151734761885071784781834691804910165431116633第七章机器学习7.3线性回归课件制作人:谢钧谢希仁linreg=LinearRegression()###拟合线性回归模型linreg.fit(x.reshape(-1,1),y)y_hat=linreg.predict(x.reshape(-1,1))print('线型模型的系数(a):{}'.format(linreg.coef_))##输出结果print('线型模型的常数项(b):{:.3f}'.format(ercept_))#计算决定系数R²r_squared=linreg.score(x.reshape(-1,1),y)print('决定系数R²:{:.3f}'.format(r_squared))importmatplotlib.pyplotaspltimportnumpyasnpx=[155,160,165,166,170,173,173,178,180,183,188]##输入身高数据y=[41,44,43,44,47,42,47,47,49,46,50]##输入前臂长数据x=np.array(x)y=np.array(y)##将数据转换为NumPy数组fig=plt.figure()##使用散点图查看数据分布,查看是否存在线性关系plt.scatter(x,y)plt.xlabel('Height(cm)')plt.ylabel('ForearmLength(cm)')plt.title('ScatterplotofHeightvsForearmLength')第七章机器学习7.3线性回归课件制作人:谢钧谢希仁#在散点图上绘制回归直线#创建散点图plt.figure()plt.scatter(x,y,color='blue',label='Data')#散点图#在图上绘制回归直线plt.plot(x,y_hat,color='red',label='RegressionLine')#添加标签和标题plt.xlabel('Height(cm)')plt.ylabel('ForearmLength(cm)')plt.title('ScatterplotofHeightvsForearmLengthwithRegressionLine')plt.legend()#添加图例plt.show()#显示图形这段代码输入了男青年前臂长和身高的数据,使用散点图查看了数据分布,如图7-3所示,确定数据之间存在线性关系。随后,根据数据拟合了一个线性回归模型,并且输出回归模型的系数以及常数项,最后,在散点图上可视化了线性回归方程,如图所示。第七章机器学习7.3线性回归课件制作人:谢钧谢希仁由图可知,线型回归模型的系数(a):[0.23024523],线型模型的常数项(b):5.873,决定系数R2为0.641,最终得到线性回归方程:ŷ=5.873+0.23x。身高与前臂长散点图线性回归方程图模型结果图第七章机器学习机器学习基本概念7.1内容导航CONTENTSscikit-learn库简介及常用API7.2线性回归7.3KNN算法7.4逻辑回归7.5朴素贝叶斯分类器7.6决策树与随机森林7.7支持向量机算法7.8关联规则算法7.9K-means算法7.107.4KNN算法K近邻(KNearestNeighbors,KNN)算法是一种常见的监督学习方法,一般多用于分类任务,也可用来处理回归任务。下面详细介绍KNN算法的基本原理以及案例实践。KNN算法的核心思想是:在特征空间中,如果一个样本的大部分近邻都属于某个类别,则该样本也属于这个类别。当KNN用于分类任务时一般采用“投票法”进行预测,即k个邻居中出现最多的类别作为预测结果。课件制作人:谢钧谢希仁第七章机器学习7.4KNN算法KNN算法中K的选择是非常关键的一个环节。假设图7-6中的绿色正方形是我们要进行预测的样本。当k=3时,KNN算法会根据距离计算出距离预测样本最近的3个邻居。在这3个邻居中,蓝色三角形的数量最多。因此,根据“投票法”,KNN算法会将该样本预测为蓝色三角形。课件制作人:谢钧谢希仁7.4.1KNN算法原理第七章机器学习7.4KNN算法

课件制作人:谢钧谢希仁第七章机器学习7.4KNN算法简单易懂,无需参数估计,以及适合多分类问题,具有广泛的适用性。计算量较大,对特征值敏感,以及需要选择合适的k值和距离度量方法。局限性优点第七章机器学习7.4KNN算法例7-3本案例采用Pima印第安人糖尿病数据集。PimaIndians糖尿病数据集来源于美国国家糖尿病、消化和肾脏疾病研究所,包含了来自美国亚利桑那州皮马印第安人女性的医疗记录数据。该数据集含

768条记录,8个数值型特征和

1个目标变量。8个数值型特征分别为怀孕次数(Pregnancies)、血糖(Glucose)、舒张压(BloodPressure)、三头肌皮褶厚度(SkinThickness)、胰岛素水平(Insulin)、BMI、糖尿病遗传系数(DiabetesPedigreeFunction)和年龄(Age),目标变量outcome为二分类变量(1表示患病,0表示未患病)。下面,我们使用KNN算法来构建糖尿病预测模型,其目的是构建分类模型来预测患者五年内是否会发展成糖尿病。课件制作人:谢钧谢希仁7.4.2KNN算法案例实践第七章机器学习7.4KNN算法课件制作人:谢钧谢希仁#初始化KNN分类器并训练(使用8个特征)knn=KNeighborsClassifier(n_neighbors=8)#创建一个KNN分类器对象,设置邻居数为8knn.fit(X_train,y_train)#使用训练集数据训练KNN分类器#使用测试集进行预测y_pred=knn.predict(X_test)#使用训练好的KNN分类器对测试集进行预测forxinzip(y_test,y_pred):#成对输出真实值和预测值print(x,end="")print('\nKNN分类的准确率为:{}'.format(accuracy_score(y_test,y_pred)))##输出KNN分类预测的准确率:importnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltfromsklearn.model_selectionimporttrain_test_splitfromsklearn.neighborsimportKNeighborsClassifierfromsklearn.metricsimportaccuracy_scoredata=pd.read_csv("data.csv",encoding="utf-8")###数据读入X=data.iloc[:,0:8]###获取特征数据y=data.iloc[:,-1]##获取标签数据#数据集分割为训练集和测试集X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42)#划分数据集为80%的训练集和20%的测试集第七章机器学习7.4KNN算法代码运行结果这段代码加载了皮马印第安人糖尿病数据集,按照8:2的比例划分训练集和测试集。随后,它初始化了一个K=7的KNN分类器,并使用训练集执行分类器训练。最后,它对测试集进行预测并输出分类预测的准确率。第七章机器学习机器学习基本概念7.1内容导航CONTENTSscikit-learn库简介及常用API7.2线性回归7.3KNN算法7.4逻辑回归7.5朴素贝叶斯分类器7.6决策树与随机森林7.7支持向量机算法7.8关联规则算法7.9K-means算法7.107.5逻辑回归核心思想:逻辑回归是一种经典的分类算法,用于预测某一事件发生的概率,特别适用于二元分类问题。医学领域应用:疾病预测与诊断:

判断患者是否患有某种疾病(如糖尿病、癌症)。影响因素分析:

识别与疾病相关的危险因素(如年龄、BMI)或保护因素(如健康饮食)特点:模型简单,易于解释,计算效率高。输出结果为0到1之间的概率值,直观易懂。课件制作人:谢钧谢希仁第七章机器学习7.5逻辑回归线性模型的问题线性回归

z=β₀+β₁x₁+...+βₘxₘ

的输出是连续值,无法直接用于分类。引入Sigmoid函数为了将连续值映射到(0,1)的概率区间,逻辑回归使用

Sigmoid函数。公式:f(z)=1/(1+e⁻ᶻ)逻辑回归模型将线性输出

z

代入Sigmoid函数,得到概率

P。P

>0.5,则预测为正类(1);P

≤0.5,则预测为负类(0)课件制作人:谢钧谢希仁基本原理第七章机器学习7.5逻辑回归课件制作人:谢钧谢希仁逻辑回归算法案例实践第七章机器学习7.5逻辑回归课件制作人:谢钧谢希仁逻辑回归算法案例实践第七章机器学习7.5逻辑回归课件制作人:谢钧谢希仁逻辑回归算法案例实践第七章机器学习机器学习基本概念7.1内容导航CONTENTSscikit-learn库简介及常用API7.2线性回归7.3KNN算法7.4逻辑回归7.5朴素贝叶斯分类器7.6决策树与随机森林7.7支持向量机算法7.8关联规则算法7.9K-means算法7.107.6朴素贝叶斯分类器核心思想:基于

贝叶斯定理

特征条件独立假设

的一种简易概率分类器。“朴素(Naive)”的含义:它假设所有特征之间是相互独立的,互不影响。这是一个很强的假设,现实中往往不成立,但模型在很多情况下依然表现出色。优点:模型简单,易于解释,计算效率高。输出结果为0到1之间的概率值,直观易懂。课件制作人:谢钧谢希仁第七章机器学习7.6朴素贝叶斯目标:

对于给定的样本

X,计算它属于每个类别

Cₖ

的后验概率

P(Cₖ|X),并选择概率最大的类别。贝叶斯定理:

P(Cₖ|X)=(P(X|Cₖ)*P(Cₖ))/P(X)利用“朴素”假设进行简化:

P(X|Cₖ)=P(x₁|Cₖ)*P(x₂|Cₖ)*...*P(xₙ|Cₖ)最终分类模型:

ŷ=argmax_{Cₖ}P(Cₖ)*ΠP(xⱼ|Cₖ)

(寻找能使“先验概率”与“条件概率连乘积”最大的那个类别)课件制作人:谢钧谢希仁基本原理第七章机器学习7.6朴素贝叶斯课件制作人:谢钧谢希仁朴素贝叶斯分类器案例实践第七章机器学习7.6朴素贝叶斯课件制作人:谢钧谢希仁朴素贝叶斯分类器案例实践第七章机器学习机器学习基本概念7.1内容导航CONTENTSscikit-learn库简介及常用API7.2线性回归7.3KNN算法7.4逻辑回归7.5朴素贝叶斯分类器7.6决策树与随机森林7.7支持向量机算法7.8关联规则算法7.9K-means算法7.107.7决策树与随机森林核心思想:构建一个树形结构的决策图,每个内部节点代表一个特征判断,每个分支代表一个判断结果,每个叶节点代表一个最终决策(类别)。优点:可解释性强:

决策过程直观,符合人类思维,是“白盒”模型。应用广泛:

在医疗领域常用于辅助诊断和病情评估。课件制作人:谢钧谢希仁第七章机器学习7.7决策树与随机森林随机森林核心思想:集成学习(EnsembleLearning)的一种。它构建多棵决策树,并将它们的结果进行综合,以获得比单一决策树更好的预测性能。工作原理:随机采样:

从原始数据中随机抽取样本和特征,构建多棵不同的决策树。集体决策:

对于一个新样本,每棵树都进行一次预测(投票)。最终结果:

采用“少数服从多数”的原则,得票最多的类别即为最终预测结果。优点:高准确率:

通常比单棵决策树性能更好。抗过拟合:

集成多个模型可以有效降低过拟合风险。特征重要性评估:

能够评估每个特征对预测的贡献度课件制作人:谢钧谢希仁第七章机器学习7.7决策树与随机森林课件制作人:谢钧谢希仁糖尿病诊断决策树根节点:

年龄>21岁?否->预测“未患病”是->进入下一节点内部节点:

BMI>32?否->预测“未患病”是->进入下一节点...以此类推,直到叶节点给出最终预测。第七章机器学习7.7决策树与随机森林目标:

对于给定的样本

X,计算它属于每个类别

Cₖ

的后验概率

P(Cₖ|X),并选择概率最大的类别。贝叶斯定理:

P(Cₖ|X)=(P(X|Cₖ)*P(Cₖ))/P(X)利用“朴素”假设进行简化:

P(X|Cₖ)=P(x₁|Cₖ)*P(x₂|Cₖ)*...*P(xₙ|Cₖ)最终分类模型:

ŷ=argmax_{Cₖ}P(Cₖ)*ΠP(xⱼ|Cₖ)

(寻找能使“先验概率”与“条件概率连乘积”最大的那个类别)课件制作人:谢钧谢希仁基本原理第七章机器学习7.7决策树与随机森林课件制作人:谢钧谢希仁决策树与随机森林案例实践第七章机器学习7.7决策树与随机森林课件制作人:谢钧谢希仁决策树与随机森林案例实践第七章机器学习7.7决策树与随机森林课件制作人:谢钧谢希仁决策树与随机森林案例实践第七章机器学习7.7决策树与随机森林课件制作人:谢钧谢希仁决策树与随机森林案例实践第七章机器学习7.7决策树与随机森林课件制作人:谢钧谢希仁决策树与随机森林案例实践第七章机器学习机器学习基本概念7.1内容导航CONTENTSscikit-learn库简介及常用API7.2线性回归7.3KNN算法7.4逻辑回归7.5朴素贝叶斯分类器7.6决策树与随机森林7.7支持向量机算法7.8关联规则算法7.9K-means算法7.107.8K-means算法原理(1)线性问题对于一个包含不同类别样本的样本集,分类任务要求将不同类别的样本分开,而支持向量机(SupportVectorMachine,SVM)作为一个分类器,它的思想在于试图找到一个超平面(例如,超平面在二维空间中是直线,在三维空间中是平面),这个超平面能够最好地分隔数据中的不同类别。将两类样本分开的超平面第七章机器学习7.8K-means算法原理不难想象,除了A、B以外,还可以绘制无数个超平面将不同样本完美区分开来,那么哪一条直线对于这个分类任务而言是最好的呢?仅就A、B两个超平面而言,似乎A的分类效果是较好的,因为这个划分使得分割界限与训练样本之间的距离更远了。此外由于训练样本的局限,如果模型在训练集上的分割界限离样本太近,或者说分类间隔过小,那么将其应用于未见过的测试集时可能更容易出现错误分类,也就是泛化能力不足。将两类样本分开的超平面第七章机器学习7.8K-means算法原理对于训练样本而言,分割界限或超平面可用如下方程描述:w·x+b=0其中w决定超平面的斜度,b决定超平面的截距。SVM的目标就是通过确定w和b的唯一组合找到一个超平面,使得它能够以最大的间隔,分隔开不同类别的样本。距离超平面最近的几个样本(在右图中被标红的点)被称为支持向量,它们是在所有样本中为数不多参与确定最优超平面的数据点,也直接决定了超平面的位置和方向。间隔是支持向量到超平面的垂直距离,SVM通过最大化这个间隔来提高模型的泛化能力。支持向量与间隔第七章机器学习7.8K-means算法原理(2)非线性问题在实际情况中,样本往往并不如我们之前假设的那样线性可分,如左图所示,我们会发现无论怎样去划分超平面,也无法将两类不同的样本完全正确地分开。在处理这类非线性问题时,我们可以通过一种叫做“特征映射”的方法,将它们从原始的低维空间(比如二维或三维)映射到一个更高维的空间,如右图所示。在这个更高维度的空间里,原本纠缠在一起的样本点可能会被清晰地区分开来,变得线性可分,这就像是在一个全新的视角下,我们发现了问题的解决方案。第七章机器学习7.8K-means算法原理这个过程通常涉及到使用一种称为“核函数”的数学工具。核函数能够在不直接计算高维空间中坐标的情况下,帮助我们确定样本点在高维空间中的相对位置。用的核函数包括线性核、多项式核和径向基函数核(RBF核)。然而,值得注意的是,虽然理论上我们总能找到足够高的维度来解决任何非线性问题,但在实际应用中,我们会受到计算能力和数据规模的限制。随着维度的增加,所需的计算资源和数据量也会急剧增加,这可能导致所谓的“维度灾难”。因此,在实际应用中,我们需要在模型的复杂度和可解性之间找到一个平衡点。此外,选择合适的核函数和确定映射到的维度也是非常关键的。不同的核函数和维度选择可能会对模型的性能产生显著影响。在实践中,我们通常需要通过交叉验证等方法来评估不同设置下模型的表现,并选择最佳的参数。第七章机器学习7.8K-means算法原理在理想情况下,SVM通过找到一个超平面来完全分隔不同类别的数据点,所有样本都划分正确,这称为“硬间隔”。然而,在现实世界中,数据往往是不完全线性可分的,即存在一些点无法被一个单一的超平面完美分隔。在这种情况下,如果我们坚持要求所有点都被正确分类,可能会导致模型过度拟合,即模型对训练数据过于敏感,而失去了对新数据的预测能力。而软间隔的概念允许模型在一定程度上容忍分类错误。第七章机器学习7.8K-means算法原理具体来说,软间隔允许一些数据点位于间隔边界内或位于超平面的错误一侧,但同时,模型仍然努力最大化正确分类的数据点到超平面的距离。这种方法实现了在保持较高分类准确性的同时,对模型的灵活性进行权衡,以适应数据中的噪声和异常值。这样,软间隔SVM能够在追求分类准确性和模型泛化能力之间找到一个平衡点。第七章机器学习7.8K-means算法原理正则化是控制模型复杂度的一种手段,用于防止过拟合现象。在机器学习中,模型复杂度过高可能导致过拟合,即模型在训练数据上表现良好,但在未见过的数据上表现差。正则化通过在模型的目标函数中添加一个额外的项来实现,这个项通常与模型参数的大小有关。在SVM中,正则化项通常是模型权重向量的L2范数(即平方和的平方根)。通过在目标函数中加入这个项,促使模型在追求准确分类的同时,也倾向于选择一个较小规模的权重向量。通过限制权重向量的大小,能够有效防止模型因参数过度复杂而过度拟合训练数据中的噪声,从而显著增强模型的泛化能力,使其在面对新数据时表现更为稳健。第七章机器学习7.8支持向量机案例实践前面介绍了支持向量机SVM的基本算法原理,下面我们通过一个实例来介绍SVM在分类分析中的应用。本小节选用数据集为前列腺肿瘤预警数据(cancer.xlsx),共包含95例样本,其中标签值为1代表该样本为前列腺增生,标签值为2代表该样本为前列腺癌,并包含年龄、身高、体重、球蛋白、碱性磷酸酶等共21个变量。《前列腺肿瘤预警数据》示例数据序号标签年龄身高体重球蛋白碱性磷酸酶…11811758138.651.4…22751626249.187.1…31721636241.479.9…4177165804153.9…51771687139.759.6…61761677337.761…71761686234.4109.3…81791686742.178.4…91731707940.781.5…102851687042.935…第七章机器学习7.8支持向量机案例实践接下来,我们将使用SVM算法试图根据样本的变量去预测对应样本属于前列腺增生或者前列腺癌,代码如下。#导入所需的库和模块importpandasaspdfromsklearn.model_selectionimporttrain_test_splitfromsklearn.svmimportSVCfromsklearn.metricsimportaccuracy_score,classification_report第七章机器学习7.8支持向量机案例实践第一步,数据加载和训练集/测试集划分#加载本地数据df=pd.read_excel('./前列腺肿瘤预警数据.xlsx')#前两列是序号和标签

,接下来的21列是特征变量X=df.iloc[:,2:23]#特征变量y=df.iloc[:,1]#标签值#划分数据集为训练集和验证集

,7:3的比例X_train,X_val,y_train,y_val=train_test_split(X,y,test_size=0.3,random_state=42)第七章机器学习7.8支持向量机案例实践第二步,模型训练#创建SVM分类器svm_classifier=SVC(kernel='linear')#根据需要选择不同的核函数

,例如"poly"等#训练模型svm_classifier.fit(X_train,y_train)第三步,模型评估#预测验证集y_pred=svm_classifier.predict(X_val)#计算准确率accuracy=accuracy_score(y_val,y_pred)print(f'Accuracy:{accuracy:.2f}')第七章机器学习7.8支持向量机案例实践代码执行结果:svm模型性能评价第七章机器学习机器学习基本概念7.1内容导航CONTENTSscikit-learn库简介及常用API7.2线性回归7.3KNN算法7.4逻辑回归7.5朴素贝叶斯分类器7.6决策树与随机森林7.7支持向量机算法7.8关联规则算法7.9K-means算法7.107.9关联规则算法原理关联规则是一种在数据挖掘中用来发现变量之间关系的方法,它通过分析数据集中的大量数据,找出项目之间的有意义的关联关系。医学应用方向:①药物相互作用分析:发现药物组合对疗效或副作用的影响②症状关联与辅助诊断:识别症状组合与疾病之间的潜在联系③流行病学研究:分析生活习惯、环境因素与疾病的关联,支持公共卫生决策第七章机器学习7.9关联规则算法原理序号商品1面包牛奶啤酒/2面包尿布啤酒鸡蛋3牛奶尿布啤酒可乐4面包尿布尿布啤酒5面包牛奶尿布可乐超市购物篮案例项集:项的集合,如{尿布,啤酒}是一个二项集。关联规则:形如X→Y的蕴含表达式(X∩Y=∅),表示当X出现时,Y也可能出现。√有效规则:{啤酒}→{尿布}×无效规则:{尿布,啤酒}→{啤酒}(项集不独立)第七章机器学习7.9关联规则算法原理1.支持度定义:项集在所有事务中出现的频率。示例:Support({尿布,啤酒})=3/5=0.62.频繁项集定义:支持度≥最小支持度阈值(min_sup)的项集。意义:代表了数据中常见的组合模式。3.置信度定义:在包含X的事务中,同时包含Y的条件概率。示例:Confidence({尿布}→{啤酒})=(3/5)/(4/5)=0.754.提升度定义:衡量规则是否有效的关键指标。解读:Lift>1:正相关,规则有效Lift=1:相互独立,规则无意义Lift<1:负相关,可能互为替代第七章机器学习7.9关联规则算法原理生成频繁项集:找出所有支持度≥min_sup的项集。生成关联规则:从频繁项集中,找出置信度≥min_conf且提升度>1的强规则。第七章机器学习7.9Apriori算法Apriori算法核心思想:基于支持度的反单调性如果⼀个项集是频繁的,它的所有⼦集也⼀定是频繁的如果⼀个项集是⾮频繁的,它的所有超集也⼀定是⾮频繁的整个算法的过程是一个迭代式的探索,从单个项开始,逐步扩大至更大的项集组合,直至无法找到更多符合最小支持度标准的项集为止。这样,Apriori不仅能够高效地识别出有意义的关联模式,还能有效地管理计算资源。第七章机器学习7.9关联规则算法案例实践本节数据集采用的是中药处方数据集,包含某中医师开具的70个不同的处方,以及21味不同中药的组合。值为

1

表示该处方中包含该味中药,值为

0

则表示该处方未包含该味中药。《中药处方数据集》示例数据ID白及生川乌生草乌生半夏威灵仙全虫白僵蚕

…10101100

…20101000

…30101100

…41000000

…50011010

…60101000

…71101011

…80101000

…90001100…100101000

…第七章机器学习7.9关联规则算法案例实践下面使用Apriori算法研究该中医的用药规律,计算支持度大于0.5,置信度大于0.6,且提升度大于1.5的所有规则。代码如下:#导入所需的库和模块importpandasaspdfrommlxtend.frequent_patternsimportapriorifrommlxtend.frequent_patternsimportassociation_rules第一步,数据加载和训练集/测试集划分df

=

pd.read_excel('chufang.xlsx',

header

=0,

index_col

=0)#

加载本地数据集第七章机器学习7.9关联规则算法案例实践第二步,频繁项集分析#使用Apriori算法计算支持度大于0.5的频繁项集frequent_itemsets=apriori(df,min_support=0.6,use_colnames=True)#添加一个新列

,表示频繁项集的长度frequent_itemsets['length']=frequent_itemsets['itemsets'].apply(lambdax:len(x))print(frequent_itemsets)#打印频繁项集第三步,关联规则分析#根据频繁项集找出关联规则

,增加提升度(lift)指标rules=association_rules(frequent_itemsets,metric="lift",min_threshold=1.5)print(rules)#输出符合条件的关联规则第七章机器学习7.9关联规则算法案例实践代码执行结果1:支持度不小于0.6的频繁项集代码执行结果2:关联规则结果输出第七章机器学习机器学习基本概念7.1内容导航CONTENTSscikit-learn库简介及常用API7.2线性回归7.3KNN算法7.4逻辑回归7.5朴素贝叶斯分类器7.6决策树与随机森林7.7支持向量机算法7.8关联规则算法7.9K-means算法7.107.10K-means算法原理(1)聚类算法聚类算法是无监督学习的一种方法,其目的是将数据集中的样本划分为若干个簇(或称为“类”),使得同一个簇内的样本之间相似度高,而不同簇的样本之间相似度低。聚类算法不依赖于预先标记的训练数据,而是通过分析数据本身的结构来发现数据的内在模式.聚类示意图第七章机器学习7.10K-means算法原理K-means:

一种经典的划分式聚类算法,旨在将数据集划分为K个簇。算法核心思想:通过迭代过程将数据集中的样本划分为K个簇,使得每个簇内的样本尽可能相似,而簇与簇之间的样本尽可能不同。这种相似性通常是通过样本与簇的质心(簇内所有样本的平均值)之间的距离来衡量的,其手段是最小化簇内样本到质心的距离的总和,这个总和也被称为簇内平方和。第七章机器学习7.10K-means算法原理步骤1:初始化随机选择K个样本点作为初始质心。步骤2:

温馨提示

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

评论

0/150

提交评论