版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机导论试题一、选择题1、在逻辑回归中,使用什么函数进行预测?CA.线性函数B.指数函数C.对数函数D.平方函数2、ROC曲线和AUC曲线常用于评估什么类型的模型性能?AA.分类模型性能B.回归模型性能C.聚类模型性能D.异常检测模型性能3、在k-邻近算法中,如何选择最佳的k值?AA.使用交叉验证B.根据数据集大小确定C.根据模型复杂度确定D.选择任意的k值都可以4、决策树的剪枝操作是为了解决什么问题?BA.模型欠拟合B.模型过拟合C.数据稀疏性D.特征选择5、决策树的核心概念是什么?DA.信息熵B.梯度下降C.聚类中心D.特征选择6、后剪枝是在决策树生长过程中的什么时候进行?BA.在节点划分之前B.在节点划分之后C.在树的生长过程中的任意时刻D.在测试集上评估之后7、在线性支持向量机中,如何处理线性不可分的数据?AA.使用核函数进行映射B.调整正则化参数C的值C.增加样本数据的维度D.改变损失函数的定义8、线性支持向量机的决策边界是由什么决定的?BA.支持向量的数量B.正则化参数C的值C.样本特征的线性关系D.样本数据的分布情况9、K-means是一种常用的聚类算法,它的基本思想是什么?CA.将样本分配到不同的簇中,使得簇内的样本相似度最大化B.利用密度来划分样本,形成不同的簇C.利用样本之间的距离进行聚类,使得簇内的样本方差最小化D.基于概率模型对样本进行聚类10、在层次聚类中,聚类的结果可以用什么方式表示?BA.聚类中心B.树状图(树状聚类图)C.样本之间的距离矩阵D.聚类的类别标签判断题:1.在层次聚类中,每个样本最初被视为一个独立的簇。(√)2.聚类是一种无监督学习方法,不需要事先标注数据的类别。(√)3.在训练卷积神经网络时,通常会使用反向传播算法来更新网络参数。(√)4.卷积神经网络可以有效地处理具有时序性的数据,如音频信号和时间序列数据。(√)5.反向传播算法不会遇到梯度消失或梯度爆炸的问题。(×)6.反向传播算法用于计算神经网络中每个参数的梯度,以便进行参数更新。(√)7.反向传播算法的关键步骤包括后向传播、计算损失函数的梯度和参数更新。(×)8.主成分分析(PCA)是一种常用的降维方法,可以通过线性变换将数据投影到一个低维子空间中。(√)9.在降维过程中,丢失一些特征可能会导致信息损失,但可以提高计算效率。(√)10.降维只适用于具有数值型特征的数据,无法处理分类或文本数据。(×)填空题:1.反向传播算法的一个常见问题是_梯度消失_,即梯度变得非常小,导致参数几乎不再更新。2卷积神经网络中的_池化层_层用于减小特征图的尺寸,同时保留关键特征。3.朴素贝叶斯分类器假设各个特征之间是_条件独立__的,即每个特征对于类别的贡献是相互独立的。4.在提升树分类器中,每棵树都是在前一棵树的_残差基础_上进行构建,目标是逐步减少残差误差。5.在提升树分类器中,为了控制模型的复杂度和过拟合的风险,会使用_正则化/剪枝__来限制树的深度或节点的最小样本数。6.余弦相似度是一种__相似度__度量,它衡量两个样本之间的方向一致性,而不考虑其长度。7__闵可夫斯基__距离是一种距离度量,它包括欧氏距离和曼哈顿距离作为特例。8.在EM算法中,E步骤(ExpectationStep)的目标是计算隐变量的__后验概率__。9.在EM算法中,M步骤(MaximizationStep)的目标是通过最大化完全数据的__似然__函数来更新模型参数。10.生成对抗网络由两个部分组成,一个是生成器(Generator),另一个是__判别器(Discriminator)__。四、简答题1.简要阐述预剪枝和后剪枝的区别以及各自的优缺点。答案:预剪枝(Pre-Pruning):预剪枝是在决策树构建过程中,在节点划分前进行剪枝操作。它基于一些停止条件,如节点样本数小于阈值、信息增益小于阈值等,来判断是否停止继续划分子节点。预剪枝的优点是简单、高效,并且可以减少决策树的构建时间。然而,预剪枝可能会导致决策树过于保守,无法充分利用训练数据,从而导致欠拟合的问题。后剪枝(Post-Pruning):后剪枝是在决策树构建完成后,通过对节点进行剪枝来减小决策树的规模。后剪枝的优点是可以充分利用训练数据构建初始决策树,并通过剪枝过程来降低模型复杂度,减小过拟合的风险。然而,后剪枝需要额外的计算开销,并且剪枝过程可能导致部分节点的信息丢失,降低模型的准确性。2.k-近邻算法的优缺点是什么?答案:k-近邻算法具有以下优点和缺点:优点:(1)简单直观:k-近邻算法的原理简单易懂,容易实现和理解。(2)无需训练过程:k-近邻算法属于懒惰学习(lazylearning),无需显式的训练过程,对新样本的预测速度较快。(3)适用于多类别问题:k-近邻算法适用于多类别的分类任务。缺点:(1)计算复杂度高:在进行预测时,k-近邻算法需要计算新样本与所有训练样本的距离,当训练集很大时,计算复杂度较高。(2)对异常值敏感:k-近邻算法对于异常值敏感,异常值可能会影响最近邻的选择,从而导致预测不准确。(3)需要确定k值:k-近邻算法中的k值需要事先确定,选择不合适的k值可能导致过拟合或欠拟合的问题。3.支持向量机中的软间隔和硬间隔有何区别?为什么要引入软间隔?答案:硬间隔:硬间隔是指在支持向量机中严格要求训练样本能够被一个超平面完全正确地分隔开,不允许任何分类错误。但在现实应用中,数据往往包含噪声或存在一些不可分的情况,导致严格的硬间隔难以实现。软间隔:软间隔允许在支持向量机中存在一定的分类错误。它引入了一个松弛变量(slackvariable),允许部分样本被错误分类或处于分类边界上。通过在最大化间隔的同时,控制松弛变量的数量,可以得到更具鲁棒性的分类模型。引入软间隔的目的是为了增加支持向量机对噪声和不可分样本的容错能力,使其能够更好地适应现实数据中的复杂情况。4.请解释生成式对抗网络(GAN)的原理和核心思想。答案:生成式对抗网络是一种由生成器和判别器组成的对抗性模型。其核心思想是通过让生成器和判别器相互对抗的方式来学习生成模型。生成器试图生成逼真的样本,而判别器则试图区分生成器生成的样本和真实样本。训练过程中,生成器和判别器相互竞争,并通过反馈迭代来提高自身的能力。生成器的目标是生成能够欺骗判别器的样本,而判别器的目标是准确判断样本的真实性。通过不断的迭代训练,生成器和判别器的性能逐渐提升,最终生成器能够生成与真实样本相似的新样本。5.聚类距离度量的选择有何影响?如何选择适合的距离度量方法?答案:聚类距离度量的选择对聚类结果具有重要影响。选择适合的距离度量方法需要考虑数据的特征以及聚类任务的要求。一般来说,合适的距离度量应该满足以下几个方面的要求:(1)数据特征:不同的距离度量方法适用于不同类型的数据。连续属性的数据适合使用欧氏距离或闵可夫斯基距离,而离散属性的数据适合使用曼哈顿距离或切比雪夫距离。(2)数据分布:聚类任务的数据分布特征也会影响距离度量的选择。如果数据呈现出高度非线性或非球形分布,可以考虑使用其他更复杂的距离度量,如核函数距离或非参数距离度量方法。五、应用题:1.本题数据来源是附件中1_5_1_data.txt,文件中有两列数据,每行数据代表一个点的x,y坐标并且中间用空格隔开,请用梯度法求其回归方程,并画出图(要求对代码进行注释)答案:方程:h拟合结果:h代码例程:importnumpyasnp
importmatplotlib.pyplotasplt
importmath
classLinerFit:
#在这里我们假设方程为y(x)=theta0+theta1*x
def__init__(self,data_path):
self.x=[]
self.y=[]
self.step_size=0.0
self.thetas=[]
self.thetas_historty=[]
#---数据读取---#
data=np.loadtxt(data_path)
foriinrange(len(data)):
self.x.append(data[i][0])
self.y.append(data[i][1])
plt.figure(1)
plt.scatter(self.x,self.y)
print("Initfinish")
#求解梯度
defgradient(self,x,y,thetas):
m=len(x)
grad0=1.0/m*sum([(thetas[0]+thetas[1]*x[i]-y[i])foriinrange(m)])
grad1=1.0/m*sum([(thetas[0]+thetas[1]*x[i]-y[i])*x[i]foriinrange(m)])
return[grad0,grad1]
defstep(self,thetas,dirctions,step_size)->list:
result=[]
fortheta,dirctioninzip(thetas,dirctions):
result.append(theta-dirction*step_size)
returnresult
#两个参数点之间的距离,用于判断是否迭代到符合学习率条件(没写三维及以上,是适用于二维条件)
defdistance(self,point1:list,point2:list)->float:
returnmath.sqrt((point1[0]-point2[0])**2+(point1[1]-point2[1])**2)
#梯度下降开始求解
'''''
alpha
学习速率(步长)
max_iter
最大迭代次数
epsilon
精度
theta_init
theta初始值
'''
defgradient_descent(self,alpha=0.01,eps=0.01,max_iter=100000,
theta_init=[0,0])->[list,list]:
#迭代次数
iter=0
#thetas初始值
self.thetas=theta_init
whileTrue:
self.thetas_historty.append(self.thetas)
gradients=self.gradient(self.x,self.y,self.thetas)
next_thetas=self.step(self.thetas,gradients,alpha)
#如果迭代的thetas值与原有值的距离<学习率则可以判定收敛成功
ifself.distance(self.thetas,next_thetas)<eps:
break
self.thetas=next_thetas
iter+=1
#到达最大迭代次数但还未收敛
ifiter==max_iter:
print("[Warning]:到达最大迭代次数,未收敛")
break
returnself.thetas,self.thetas_historty
if__name__=="__main__":
liner_fitter=LinerFit("./ch3_linear_data1.txt")
result_thetas,history=\
liner_fitter.gradient_descent(alpha=0.0005,
eps=0.00001,
max_iter=100000,
theta_init=[0,0])
print(result_thetas)
#foriinrange(len(history)):
#
x=np.linspace(-1,50,50)
#
y=history[i][0]+history[i][1]*x
#
plt.plot(x,y,"black")
x=np.linspace(-1,50,50)
y=result_thetas[0]+result_thetas[1]*x
plt.plot(x,y,"red")
plt.show()2.本题数据来源是附件中1_5_2_data.txt,文件中有两列数据,分别表示点的x,y坐标,每一行是一组数据,请编写K-means算法并使用其将数据分为K=6聚类,最后输出聚类中心点坐标,并做出聚类后的图形(要求对代码进行注释)答案:聚类中心点坐标:1.[x,y]:[2.3535,2.9557]2.[x,y]:[-4.0488,-2.7763]3.[x,y]:[2.9267,-2.7015]4.[x,y]:[-2.4615,2.7874]5.[x,y]:[3.7188,3.7207]6.[x,y]:[-2.0679,-3.2148]代码例程:importnumpyasnpimportmatplotlib.pyplotasplt#两点距离defdistance(e1,e2):
returnnp.sqrt((e1[0]-e2[0])**2+(e1[1]-e2[1])**2)#集合中心defmeans(arr):
returnnp.array([np.mean([e[0]foreinarr]),np.mean([e[1]foreinarr])])#arr中距离a最远的元素,用于初始化聚类中心deffarthest(k_arr,arr):
f=[0,0]
max_d=0
foreinarr:
d=0
foriinrange(k_arr.__len__()):
d=d+np.sqrt(distance(k_arr[i],e))
ifd>max_d:
max_d=d
f=e
returnf#arr中距离a最近的元素,用于聚类defclosest(a,arr):
c=arr[1]
min_d=distance(a,arr[1])
arr=arr[1:]
foreinarr:
d=distance(a,e)
ifd<min_d:
min_d=d
c=e
returncif__name__=="__main__":
##生成二维随机坐标,手上有数据集的朋友注意,理解arr改起来就很容易了
##arr是一个数组,每个元素都是一个二元组,代表着一个坐标
##arr形如:[(x1,y1),(x2,y2),(x3,y3)...]
arr=np.random.randint(100,size=(100,1,2))[:,0,:]
#数据导入------------------------------------------------------------
#基于txt文档
#path='./ch6_kmeans_data1.txt'
#arr=np.loadtxt(path,
#
delimiter='\t')
#基于csv文档
path='./xxxxx.csv'
arr=np.loadtxt(open(path,'rb'),delimiter=',',skiprows=0,usecols=[0,1])
##初始化聚类中心和聚类容器
#分类数量
m=6
r=np.random.randint(arr.__len__()-1)
k_arr=np.array([arr[r]])
cla_arr=[[]]
foriinrange(m-1):
k=farthest(k_arr,arr)
k_arr=np.concatenate([k_arr,np.array([k])])
cla_arr.append([])
##迭代聚类
n=100
cla_temp=cla_arr
foriinrange(n):
#迭代n次
foreinarr:
#把集合里每一个元素聚到最近的类
ki=0
#假定距离第一个中心最近
min_d=distance(e,k_arr[ki])
forjinrange(1,k_arr.__len__()):
ifdistance(e,k_arr[j])<min_d:
#找到更近的聚类中心
min_d=distance(e,k_arr[j])
ki=j
cla_temp[ki].append(e)
#迭代更新聚类中心
forkinrange(k_arr.__len__()):
ifn-1==i:
break
k_arr[k]=means(cla_temp[k])
cla_temp[k]=[]
##可视化展示
col=['HotPink','Aqua','Chartreuse','yellow','LightSalmon','red','blue','purple','green']
foriinrange(m):
plt.scatter(k_arr[i][0],k_arr[i][1],linewidth=10,color=col[i])
plt.scatter([e[0]foreincla_temp[i]],[e[1]foreincla_temp[i]],color=col[i])
foriinrange(m):
print("{}.[x,y]:[{:.4f},{:.4f}]".format(i+1,k_arr[i][0],k_arr[i][1]))plt.show()卷2选择题1.PR曲线的横轴表示的是(A)。A召回率B精确率C阈值D错误率2.PR曲线用于评估机器学习模型在(A)问题上的性能。A分类B回归C聚类D降维3.L1正则化和L2正则化都可以用来控制模型的复杂度,它们的主要区别在于(A)。A惩罚项的形式B正则化参数的选择C目标函数的定义D特征选择的策略4.正则化参数控制着正则化对模型的影响程度,当正则化参数越大时,模型的(A)。A复杂度越低B复杂度越高C方差越低D方差越高5.k-邻近算法基于样本的距离来确定近邻,常用的距离度量方法包括(D)。A欧氏距离B曼哈顿距离C余弦相似度D所有以上选项6.在k-邻近算法中,选择的邻居数量k的大小会影响预测的结果。当k较小时,模型会更加(B)。A简单B复杂C鲁棒D不确定7.Bagging和Boosting是集成学习中常见的两种策略,它们的主要区别在于(B)。A数据的划分方式B模型的组合方式C预测结果的综合方法D集成学习的目标函数8.在随机森林中,每棵决策树是通过对原始数据集进行有放回的(C)采样得到的。A欠采样B过采样C自助采样D重采样9.DBSCAN是一种基于(A)的密度聚类算法。A距离B相似度C样本标签D邻居数量10.DBSCAN通过定义__________和__________两个参数来划分簇(A)。A邻域半径、最小样本数B簇大小、簇中心C邻居数量、核心点阈值D样本距离、簇间距离判断题1.K-Medoids聚类算法的优点之一是对离群点具有较好的鲁棒性。(√)2.在K-Medoids聚类算法中,质心(medoid)是由聚类簇中具有最小平均距离的样本点表示。(√)3.K-means聚类算法是一种基于密度的聚类算法。(×)4.K-means聚类算法的初始质心的选择对最终聚类结果没有影响。(×)5.SVD是一种用于降维的技术,它可以将高维数据转换为低维表示。(√)6.SVD只适用于稠密矩阵,对于稀疏矩阵则无法进行奇异值分解。(×)7.PCA是一种用于特征选择的技术,它可以选择最具代表性的特征子集。(×)8.PCA可以用于数据降维,通过保留最重要的特征来减少数据的维度。(√)9.最大池化是一种常用的池化方法,它选择每个池化区域中的最大值作为池化后的值。(√)10.GMM是一种生成模型,用于对数据进行聚类或概率密度估计。(√)填空题1.GMM模型假设数据由多个_高斯分布(或正态分布)_组成的混合分布。2.GMM的参数估计通常使用_EM(Expectation-Maximization)_算法,该算法通过迭代估计模型参数。3.隐马尔可夫模型由_状态序列_和__状态序列__两部分组成。4.隐马尔可夫模型中的参数包括状态转移概率矩阵、观测概率矩阵和初始状态概率,这些参数通常通过_Baum-Welch算法__算法进行估计。5.图卷积神经网络通过迭代地进行图卷积层的计算,每一层的输入是上一层的_节点特征_。6.梯度爆炸问题通常发生在深层神经网络中,其中梯度的幅度逐渐__增大___。7.当在深层神经网络中使用某些激活函数时,梯度消失问题可能会发生,导致在反向传播中梯度逐渐___缩小___。8.K-means是一种常用的聚类算法,其步骤包括随机初始化聚类中心、迭代更新聚类中心和重新分配数据点到最近的聚类中心,直到_收敛(或达到停止条件)_。9.DBSCAN是一种基于密度的聚类算法,将数据点划分为核心点、边界点和噪声点,通过定义__邻域密度___来确定簇的边界。10.对于两个二进制字符串,汉明距离等于它们之间不相同位的___数量___。四、简答题1.简要阐述池化操作在卷积神经网络中的作用和优势。答案:池化操作是卷积神经网络中的一种降采样技术。它的作用是通过减小特征图的空间尺寸,降低模型的参数数量和计算复杂度,同时保留重要的特征信息。池化操作通常有两种形式:最大池化和平均池化。最大池化从局部区域中选择最大值作为池化后的值,而平均池化则取局部区域的平均值。池化操作的优势在于:(1)降低数据维度:通过减小特征图的尺寸,降低了后续层的计算复杂度。(2)提高特征的不变性:池化操作对输入的微小变化具有一定的鲁棒性,能够提取出具有平移不变性和部分尺度不变性的特征。(3)减少过拟合:池化操作通过减少参数数量和模型复杂度,有助于防止模型过拟合,并提高模型的泛化能力。2.请解释奇异值分解与主成分分析(PrincipalComponentAnalysis,PCA)之间的关系。答案:奇异值分解和主成分分析有一定的关系。主成分分析是一种常用的降维技术,通过线性变换将原始数据映射到新的坐标系中,使得新坐标系下的数据具有最大的方差。而奇异值分解可以对数据矩阵进行分解,并提供了数据的主成分。具体来说,奇异值分解提供了矩阵的奇异值和对应的左奇异向量(U矩阵),而左奇异向量可以表示数据在新的坐标系下的主成分。因此,奇异值分解可以用于实现主成分分析,并在降维过程中提供了主要信息的保留。3.请解释层次聚类算法的原理和优点。答案:层次聚类算法是一种基于树状结构的聚类方法,它将数据样本逐步合并或分裂,形成一个聚类层次结构。层次聚类算法的原理是通过计算样本之间的相似度或距离来构建聚类树,根据相似度或距离的不同度量方式,可以分为凝聚型和分裂型层次聚类。凝聚型层次聚类从单个样本开始,逐步合并最相似的样本或簇,形成越来越大的簇,直到所有样本都合并为一个簇;分裂型层次聚类则从所有样本作为一个簇开始,逐步分裂为越来越小的簇。层次聚类算法的优点包括:(1)不需要事先指定聚类数量,能够自动探索数据的内在结构。(2)可以提供聚类结果的层次结构,有助于理解数据的分组关系。(3)可以基于不同的相似度或距离度量方式进行灵活的聚类分析。4.请阐述隐马尔可夫模型的基本原理和应用场景。答案:隐马尔可夫模型是一种统计模型,用于建模具有潜在状态的序列数据。它由两个主要部分组成:状态序列和观测序列。状态序列表示不可见的隐藏状态,而观测序列表示可见的观测结果。隐马尔可夫模型基于两个基本假设:1)齐次马尔可夫性假设,即当前状态只依赖于前一个状态;2)观测独立性假设,即观测结果只依赖于当前状态。隐马尔可夫模型的应用场景广泛,包括语音识别、自然语言处理、生物信息学、时间序列分析等。它可以用于解决序列数据的分类、预测和生成问题,对于具有时序关系的数据分析具有重要意义。5.简要阐述随机森林算法的原理和优点。答案:随机森林算法是一种集成学习方法,基于Bagging技术构建的决策树模型集合。它在每个决策树的构建过程中引入了随机性。具体来说,随机森林在每次划分节点时,随机选择一个特征子集作为候选划分特征。通过构建多个随机选择特征的决策树,并基于投票的方式进行预测,随机森林能够有效地减少模型的方差和过拟合风险。随机森林的优点包括:(1)高度鲁棒性:通过集成多个决策树的预测结果,随机森林对于噪声和异常值具有较好的鲁棒性。(2)特征重要性评估:随机森林可以评估每个特征的重要性,帮助我们了解不同特征对于模型的贡献程度。(3)并行化处理:由于每个决策树可以独立构建,随机森林可以很好地进行并行化处理,提高训练速度。(4)适用于高维数据:随机森林对于高维数据的处理能力较强,不需要对数据进行特征选择或降维。五、应用题:1.有一所学校,学生入学需参加入学考试。考试有2门科目(设为exam1与exam2)。在2_5_1_data.txt中,有每位学生的考试成绩。此外,根据历史数据形成的标准,给出了每位学生是否录取的初步意见(‘1’为录取,‘0’为拒录取)。现在需要做的工作就是根据学生的成绩,建立逻辑回归模型,预测每位学生被录取的机会,并对每位学生是否录取进行0-1判定(录取机会大于0.5即判定为1)。1)绘制数据样本图像及判定曲线。2)假设某学生成绩为38,72,请问他被录取的概率为多大?(要求对代码进行注释)答案:1)2)录取概率[63.363097677078784%]代码例程:importmatplotlib.pyplotasplt
importnumpyasnp
#定义一个逻辑回归求解器
classLinearLogsiticRegression:
def__init__(self)->None:
self.l_rate
=0.003
#学习率
self.iter_max
=10000000
#最大迭代次数
self.eps
=1e-8
#损失函数误差
self.loss_log
=[]
#损失函数LOG
self.data
=[]
#数据
self.label
=[]
#标签
self._1
=[]
#标签为1的数据
self._0
=[]
#标签为0的数据
self.best_fit
=[]
#最新回归计算结果
#数据载入
defload_data(self,data_path):
data=[]
file=open(data_path,"r")
lines=file.readlines()
forrowinlines:
row.replace("\n",'')
tmp_list=row.split(',')
tmp_num=[]
tmp_num.append(float(tmp_list[0]))
tmp_num.append(float(tmp_list[1]))
tmp_num.append(int(tmp_list[2]))
data.append(tmp_num)
self.data=np.array(data)
#---数据根据标签分类
data=self.data
foriinrange(data.shape[0]):
#print(data[i])
ifdata[i][2]==0.0:
self._0=np.append(self._0,data[i][0:2])
else:
self._1=np.append(self._1,data[i][0:2])
self._0=self._0.reshape(-1,2)
self._1=self._1.reshape(-1,2)
self.label=self.data[:,2]
self.data=self.data[:,0:2]
print("[INFO]:DATALOADED")
#sigmido函数计算
defsigmoid(self,z):
return1/(1+np.exp(-z))
#梯度下降计算
defgradient_desent(self):
flag=False
X
=self.data
X
=np.insert(X,0,np.ones(X.shape[0]),axis=1)
y
=self.label.reshape(-1,1)
data_num
=y.shape[0]
Thetas=0.001*np.random.randn(3,1).reshape(-1,1)
#Thetas=np.zeros((3,1))
loss_last=1e10
foritersinrange(self.iter_max):
#计算假设函数h(x)(sigmoid函数)
g_x=np.dot(X,Thetas)
h_x=self.sigmoid(g_x)
#计算损失函数
loss=np.log(h_x)*y+(1-y)*np.log(1-h_x)
loss=-np.sum(loss)/data_num
self.loss_log.append(loss)
#梯度下降更新权重
dThetas=np.dot(X.T,h_x-y)/data_num
Thetas+=-self.l_rate*dThetas
self.best_fit=Thetas
#损失函数精度更新
ifabs(loss_last-loss)<=self.eps:
print("[INFO]:已收敛")
flag=True
break
loss_last=loss
ifnotflag:
print("[INFO]:未收敛")
print("[INFO]:[BestFit]\n
theta0={}\n
theta1={}\n
theta2={}"
.format(self.best_fit[0],self.best_fit[1],self.best_fit[2]))
print()
#单点测试输入np.array([1,x1,x2])
deftest(self,test_x):
test_y=1/(1+np.exp(-np.dot(test_x,self.best_fit)))
returntest_y
if__name__=="__main__":
solver=LinearLogsiticRegression()
solver.load_data("ch4_logistics_data1.txt")
solver.gradient_desent()
result=solver.best_fit
#作业中的单体预测
#x1=38,x2=72
test_x=np.array([1,38,72])
print("[INFO]:单体预测结果->{}%".format(solver.test(test_x)[0]*100))
#绘制数据散点
plt.figure()
plt.scatter(solver._0[:,0],solver._0[:,1],color='red',marker='s')
plt.scatter(solver._1[:,0],solver._1[:,1],color='blue',marker='o')
plt.xlabel("score-1")
plt.ylabel("score-2")
plt.title("Data&Result")
#绘制决策边界
x=np.linspace(15,85,100)
y=(-result[0]-result[1]*x)/result[2]
plt.plot(x,y,color='black')
#plt.legend()
plt.grid(True)
#绘制损失下降曲线
plt.figure()
m=len(solver.loss_log)
plt.plot(np.linspace(1,m,m),solver.loss_log[0:m],'red')
plt.xlabel("iters")
plt.ylabel("J")
plt.title("LOSS")
#plt.legend()
plt.grid(True)
plt.show()2.本题数据来源是附件2_5_2_data.mat,其中三种数据Xval,yval,X分别表示训练集坐标数据,训练集数据标签、以及测试集数据坐标,请使用DBSCAN算法对其进行聚类并查找异常点。(要求对代码进行注释)答案:代码例程:#DBSCAN#author:20375011盖巍奇importnumpyasnpimportmatplotlib.pyplotaspltimportscipy.ioasscioimportmatplotlibfromsklearn.clusterimportDBSCANdata=scio.loadmat("./ch8_detection_data1.mat")X=data['X']X_train=data['Xval']y_train=data['yval']colors=['red','blue']data=X_train#基于密度的聚类算法,不需要标注一共有几类model=DBSCAN(eps=0.5,
min_samples=1,
leaf_size=30).fit(data)plt.figure()plt.scatter(
X[:,0],
X[:,1],
c=model.labels_,
cmap=matplotlib.colors.ListedColormap(colors))plt.xlabel("X")plt.ylabel("Y")plt.title("ScatterPlotofFeatureXandY")plt.show()机器学习原理及应用试题选择题(每题2分)1、以下关于机器学习说法错误的是(B)-(回归问题)机器学习中的经验称为模型分类问题以连续变量作为预测输出典型的判别模型有逻辑回归、决策树、支持向量机等降维、聚类是最典型的无监督学习算法2、(B)用于对训练的模型进行验证挑选、辅助调参A.训练集B.验证集C.测试集D.生成集3、当模型存在多个解时,(A)指出应该选择最简单的那个A.奥卡姆剃刀原则B.最大熵原理C.投票法的准则D.随机森林原理4、小明在使用决策树模型时,以下操作能够降低模型模型复杂度,提高泛化能力的是(D)A.对决策树模型进行预剪枝B.在代价函数变为最小的时候,自下而上地将某个子树剪枝C.直到代价函数变为最小前,重复剪枝过程D.以上方法都行5、多分类学习的基本思路时“拆解法”,经典的拆分策略是(D)A.一对一B.一对多C.多对多D.以上都是6、以下关于集成学习的说法,正确的是(C)-(A-方差越来越大,B-优化方差,D-Stacking)A.随着模型复杂度的最佳,模型的偏差会越来越小,同时方差也会越来越小B.Bagging优化的对象是模型的偏差,对模型方差的影响很小C.AdaBoost在数据挖掘、模式识别等领域有着广泛的应用D.Boosting的思想是拼接不同特征的子模型成一个特征向量7、(B)是一种机器学习中的常用算法,被广泛应用于数据降维、数据压缩等,在实际应用中,可以用于实现图片压缩。A.主成分分析B.奇异值分解C.层次聚类D.K-Means聚类8、常用的神经元模型激活函数有(D)A.SigmoidB.ReLUC.TanhD.以上都是9、主要用于对序列数据进行建模,如处理句子的单词序列数据、视频的图像序列等的是(C)A.卷积神经网络B.图卷积神经网络C.循环神经网络D.生成对抗网络10、10、Python中的tsfresh开源包可以对(C)特征进行升维操作A.图像B.语音C.时序D.以上都是对错题(每题2分)1、回归模型的典型应用有图像分类、视频分类、文本分类、机器翻译、语言识别等(x)-(分类模型)2、最大熵原理是指描述一个概率分布时,在满足所有约束条件的情况下,熵最小的模型就是最好的(x)-(大)3、召回率又叫查全率,表示在实际为正的样本中被预测为正样本的概率(√)4、极大似然估计拥有很强的数据拟合能力,往往会产生过拟合现象(x)-(决策树)5、典型的提升树算法有GBDT、XGBOOST等,有着可解释性强、伸缩不变性、对异常样本不敏感等优点(√)6、隐马尔可夫模型在实际应用中对应的核心问题是计算观测序列的输出概率,即给定模型参数即观测序列,求从模型产生当前观测的概率(x)-(估计隐马尔可夫模型的参数)7、降维的目的是对样本集合进行自动分类,以挖掘数据中隐藏的消息、结构,从而发现可能的商业价
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 事业单位财会岗面试高频考题题库及参考答案2026
- 2027年备考会计基础 【零基础学员必练】能力测验试题(备用卷)附答案
- 2026年湖南软件职业学院高职单招笔试数学历年参考题库含答案解析
- 2026年湖南幼儿师范高等专科学校高职单招笔试语文历年参考题库含答案解析
- 2026年湖南信息职业技术学院高职单招笔试数学历年参考题库含答案解析
- 2026年浙江经贸职业技术学院高职单招笔试职业技能测验历年参考题库含答案解析
- 2026年浙江医药高等专科学校高职单招笔试物理历年参考题库含答案解析
- 2026年泊头职业学院高职单招笔试英语历年参考题库含答案解析
- 2026年河南经贸职业学院高职单招笔试职业适应性测验历年参考题库含答案解析
- 2026年河南农业职业学院高职单招笔试职业适应性测验历年参考题库含答案解析
- 2026年中医康复理疗师题库及参考答案
- 个人雇佣房东护工协议书5篇
- 长征胜利 90 周年 赓续长征血脉 坚守教书育人初心使命课件
- 2026年广西农信社招聘笔试真题及答案解析
- 陈旧性脊柱骨折后凸畸形
- 2026年广东省职业病诊断医师试题(职业性放射性疾病)(附答案)
- 2026年广州银行校招试题及答案
- 2026 年掌握消防技能守护生命安全课件
- 2026年道德与法治六年级上册第6课《了解国家机构》教案设计(2课时)
- 【答案】《智能感知技术》(国家高等教育智慧教育平台)章节作业中国大学慕课答案
- 广东聚德阀门科技异址新建项目环境影响报告表
评论
0/150
提交评论