机器学习算法入门与编程实践课后题及答案(唐四新等编著)

目录


习题1

1.无监督学习的两个主要任务是(多选)(BD)。

A.回归         B.降维         C.分类         D.聚类

2.下列对无监督学习描述错误的是(C)。

A.无标签                         B.核心是聚类 

C.不需要降维                 D.具有很好的可解释性

3.下列对有监督学习描述错误的是(D)

A.有标签                  B.核心是分类 

C.分类原因不透明   D.所有数据都相互独立分布

4.在以下学习策略中,使用的训练数据只有部分存在标签的是(C)。

A.监督学习    B.深度学习    C.半监督学习   D.无监督学习

5.下面符合特征选择标准的是(A)

A.能够反映不同事物差异的特征         B.越多越好

C.越少越好                                         D.数值型的比定性数据好

6.给定一定数量的红细胞和白细胞图像及它们对应的标签,设计出一个红细胞和白细胞分类器,这属于(C)问题。      

A.半监督学习

B.无监督学习

C.监督学习 

D.以上都可以

7.给定一定数量的红细胞和白细胞图像,但是并不知道图像与标签的对应关系,设计一个红细胞和白细胞的分类器,这属于(B)问题。

A.半监督学习

B.无监督学习

C.监督学习

D.强化学习

8.机器学习可以用于以下哪些情形(AB)

A.人类无法解释的专业知识   B.模型需要基于大量数据

C.当人类专业知识不存在时  D.模型必须定制

9.以下哪些领域应用机器学习需要考虑样本不平衡问题(ABCD)?

A.医学诊断

B.预测罕见事件

C.检测信用卡欺诈

D.预测故障和失效

10.以下说法正确的是(BCD)

A.特征的个数越多,机器学习的效果越好

B.样本的数量越多,机器学习的效果越好

C.过拟合只在监督学习中出现,在无监督学习中没有过拟合

D.特征的个数应和样本的数量相匹配

11.泛化误差是指(B)

A.训练误差                 B.测试误差

C.学习误差                 D.测量误差

12.与有监督学习相比,下列哪些属于半监督学习的优势(多选)(BD)

A.半监督学习的模型训练时间更短

B.在标注数据量有限时,采用半监督学习有望训练得到更优的机器学习模型

C.半监督学习的数学优化问题更容易求解

D.能够节约大规模数据标注带来的时间和费用开销

13.简述机器学习的主要步骤。

答:研究问题;收集相关样本,特征提取,构建模型,评估模型的有效性,使用模型。

14.简述机器学习中验证集和测试集的区别。

答:验证集是在模型训练的过程中评估模型,评估之后模型还会继续修改。而测试集是在模型训练好之后评估模型,评估后模型不会再修改。

15.什么是泛化能力。

答:模型应用于新样本的能力(有效性)

16.评价机器学习模型优劣的重要指标是。

答:泛化能力

17.简述监督学习和无监督学习的区别。

答:监督学习样本有标签,无监督学习样本没有标签

18.特征选择与数据降维有何区别?

答:数据降维是把多个特征合成为一个特征,而特征选择是在多个特征中提起某些特征。

习题2

1.关于Python语言的语法,下列哪项是错误的?(B)

A.Python程序中的代码缩进不能随意删除

B.import语句必须写在程序的开始位置

C.Print(‘Hey’)输出Hey后会自动换行

D.Python语言是区分大小写的

2.下列不属于NumPy数组属性的是(D)

A.ndim  B. shape  C.size  D.add

3.创建一个3×3维的数组,下列代码中错误的是(D)

A.np.arange(0.9).reshape(3,3)

B.np.eye(3)

C.np.radom.random([3,3,3])

D.np.mat(np.zeros((3,3)))

4.以下关于绘图标准流程语法错误的是(D)

A.绘制最简单的图形可以不用创建画布

B.添加图例可以在绘制图形之前

C.添加x轴、y轴的标签可以在绘制图形之前

D.添加图的标题可以在plt.show()方法之后

5.下列代码中能够绘制出散点图的是(A)

A.plt.scatter(x,y)

B.plt.plot(x,y)

C.plt.legend(x,y)

D.plt.figure(x,y)

6.下列字符串表示plot线条颜色、点的形状和类型为红色五角星点断虚线的是(D)

A.‘bs-’   B. ‘go-.’  C. ‘r+-.’  D. ‘r*:’

7.train_test_split()函数的返回值有(D)个

A.1     B. 2     C. 3     D. 4

8.数据(B)要求知道标本的最大值和最小值。

A.标椎化  B. 归一化  C. 二值化  D. 正则化

9.要设置x轴的坐标范围需要用到(B)

A.xlabel   B. xlim     C. xticks     D. hlines

10.使用Pandas不能读取下列哪种文件(D)

A.xlsx     B. txt      C. CSV      D. MDB

11.NumPy提供的两种基本对象是 多维数组对象ndarray通用函数对象ufunc

12.将NumPy一堆数组a中所有元素反转,方法是a.T()

13.提取NumPy数组中除了最后一列的所有列,方法是data[:, 0:-1]

14.创建一个范围在(0,1)之间长度为12的等差数列,方法是np.linspace(0, 1, 12, endpoint=False)

15.在Matplotlib中,要绘制多个子图,需要使用subplot()函数

16.train_test_split()函数能将样本划分为训练集测试集

17.数据的z-score 标准化需要计算样本数据的标准差和均值

18.在sklearn中,要用训练数据拟合模型,需要使用fit()方法

19.数据的维度是指样本特征属性的个数

20.主成分分析一般用来实现数据的降维

21.元组与列表的主要区别是什么?S=(9,6,5,1,55,7)能添加元素吗?

答:元组中的元素不能修改,但能添加和删除,可以添加元素。

22.读取鸢尾花数据集,使用循环和子图绘制各个特征之间的散点图。

  import numpy as  np

import matplotlib.pyplot as plt

iris = np.load(‘d:/tmp/iris.npz’,allow_pickle=True)[‘data’][:, :-1]

name = np.load(‘d:/tmp/iris.npz’,allow_pickle=True)[‘features_name’]

plt.rcParams[‘font.sans-serif’] = ‘SimHei’

p = plt.figure(figsize=(16, 16))

plt.title(‘iris散点图矩阵’)

for i in range(4):

    for j in range(4):

        p.add_subplot(4, 4, (i * 4) + (j + 1))

        plt.scatter(iris[:, i], iris[:, j])

        plt.xlabel(name[i])

        plt.ylabel(name[j])        

plt.savefig(‘d:/tmp/矩阵.png’)       

plt.show()

23.创建一个长度为10、一个维全为0的ndarray对象,然后让第5个元素等于1。

代码:import numpy as np

t1 = np.zeros(10,dtype=int)

print(t1)

t1[4]=1

print(t1)

 运行结果:

  [0 0 0 0 0 0 0 0 0 0]

[0 0 0 0 1 0 0 0 0 0]

24.用NumPy库生成范围在0~100之间且服从均匀分布的10行5列的数组。

25.用NumPy生成两个3×3的矩阵,并计算这两个矩阵的乘积。

  import NumPy.matlib

import NumPy as np

array1=np.array([[2,4],[6,8]]) #创建一个二维数组

array2=np.array([[22,44],[66,88]]) #创建一个二维数组

np.dot(array1,array2) #使用dot()函数求数组的乘积

26.使用np.random.random创建一个10×10的ndarray对象,并打印出最大值和最小值元素。

  import numpy as np

a=np.random.rand(10,10)

print(np.max(a))

print(np.min(a))

print(a)

27.创建一个10×10的nadarray对象,并且矩阵边界元素全为1,里面的元素全为0。

import numpy as np #arr=np.full(shape=(10,10),fill_value=0)   arr=np.zeros((10,10)) # 创建一个10*10的全0矩阵       arr[[0,-1]]=1 # 将首尾行替换为1 

arr[:,[0,-1]]=1 # 将首尾列替换为1 

arr

28.给定数组[1,2,3,4,5],如何得到在这个数组的每个元素之间插入3个0后的新数组?

  import numpy as np

  arr1 = np.arange(1, 6)

  print(arr1)

  arr2 = np.zeros(shape = 17, dtype = np.int16)

  print(arr2)

  arr2[::4] = arr1

  print(arr2)

29.编写一个函数,实现将NumPy矩阵的每一行都减去该行的平均值。

30.用Matplotlib库绘制函数2×3+(x-5)2+3×4的图形,并使用Scipy库求该函数的最小值。

答:用sklearn中的decomposition模块对sklearn中自带的手写数字数据集(调用方法:load_digits())进行PCA降维,将维度降为2,然后绘制降维后的样本散点图。

习题3

1.下列哪一项不是一个集合?(A)

A.项

B.项集

C.事务

D.事务数据库

2.对于同一个事务数据库中的两条关联规则:A=C和C=A,可知(A)。.

A.它们的支持度一定相等                B.它们的置信度一定相等

C.它们的支持度一定不相等            D.它们的置信度一定不相等

3.设{A,B,C}不是频繁项集,则可知(B)

A.{A,B}一定不是频繁项集            B.{A,B,C,D}一定不是频繁项集

C.{A,B}一定是频繁项集                D.{A,B,C,D}一定是频繁项集

4.若已知{A,B,C}的支持度是50%,C的支持度是75%,则可知(B)。

A.A.B=C的置信度是66.6%X

B.C=A,B的置信度是66.6%

C.A.B=C的置信度是150%X

D.C=A,B的置信度是150%

5.设N(a)={A,B,E}表示对物品a感兴趣的用户有A、B和E,N(b)={A,C,D}表示对物品b感兴趣的用户有A、C和D,每个用户对各物品的感兴趣程度均为1,则物品a、b之间的相似度为(A)

A.1/3        B.1/9       C.1/2       D.1/6

6.寻找关联规则可分为两步,第一步是找频繁项集.

7.协同过滤推荐算法使用余弦相似度作为指标来评价项与项之间的相似度。

8.经典的关联规则挖掘算法是Apriori算法,为提高关联规则的计算效率,改进的关联规则算法是FP-Tree

9.假设事务集有6个项。对于频繁3项集的集{1.23},{12.4},{1.2.5}.{1.3.4}.{2.3,4},{2.3.5},{3.4.6}

(1)列出由Apior算法得到的所有候选4项集。

所有候选四项集{1,2,3,4},{1,2,3,5},{1,2,3,6},{1,2,4,5},{1,2,5,6},{1,3,4,5},{1,3,4,6},{2,3,4,5},{2,3,4,6},{2,3,5,6},{3,4,5,6}

(2)列出剪枝后剩下的候选4项集。

剪枝后的候选四项集{1,2,3,4},{1,2,3,5},{1,2,4,5},{2,3,4,5},{2,3,4,6},{2,3,5,6}

10.解释如下关联规则表达式的含义:major(x,”Cs”)^takes(x,”DB”)—grade((x,”A”)[1%,75%]

答:专业为“CS”并且选修了“DB”,且得分为“A”等的同学在所有同学中的比例是1%。“CS”专业的学生选修“数据库原理”,成绩得“A”的可能性是75%.

11.给定事务数据库如表3-7所示,假定数据包含频繁项集L={A,B,D}。问:可以由L产生哪些关联规则?分别列出其置信度。若最小置信度定义为80%,则产生的关联规则中哪些是强关联规则?

ID 购买商品

1 {B,A,D}

2 {D,A,C,E,B}

3 {C,A,B,E}

4 {K,A,D,B}

答:

L的非空子集有{A,B},{A,D},{B,D},{A},{B},{D}

产生关联规则如下

A^B->Dconfidence=75%<80%

A^D->Bconfidence=100%

B^D->Aconfidence=100%

符合题意的强关联规则有:A^D->B;B^D->A

12.编写Python程序,使用Apriori算法挖掘如表3-7所示的事务数据库中的频繁项集,并输出项集为3的关联规则(设最小支持度为75%,最小置信度为80%)。

答:略

习题4

1在统计学中,数据的类型有3种,不包括(B)。

A.定类数据

B.定性数据

C.定距数据

D.定序数据

2下列哪一-项不属于聚类算法?(B)

A.K-中心点

B.K近邻

C.K-means

D.DBSCAN

3.下列哪种距离是两点之间的直线距离?(A)

A.欧氏距离

B.曼哈顿距离

C切比雪夫距离

D.闵可夫斯基距离

4.从性能上看,(C)聚类算法的速度是最快的。

A.K-中心点

B.层次聚类法

C.K-means

D.DBSCAN

5.在DBSCAN中,一个簇是一个(C)的区域。

A.密度可达

B.直接密度可达

C.密度相连

D.直接密度相连

6.聚类算法可分为.层次聚类基于划分基于密度的方法和基于模型的方法。

7.在聚类中是通过距离度量相似度的。

8.在sklearm提供的聚类模块中,参数nclusters用于设置簇的个数

9.DBSCAN算法中定义的3类点分别是核心点、边界点噪音点

10解释语句X=np.array(list(zip(X1,X2)).reshape(len(X1),2)的含义

答:将列表X1和X2打包,然后将形状修改为2维X1长度的列表,再转换为numpy数组

11.分别使用K-means、K-medoids和DBSCAN算法对skle;类(聚类数目设置为3),并评估这3种聚类算法的准确率。

习题5

1.以下哪种算法生成的决策树一定是二叉树?(C)

A.ID3     B.C4.5         C.CART        D.都不一定

2.在C4.5算法中,若特征属性A的取值只有两种,两种取值的样本数都是5个,则属性A的分裂信息split_info(A)的值为(A)。

A.1  B.2  C.3  D.5

3.以下哪个sklearn函数的参数为训练集?(A)

A.fit()     B.predict()      C.fit_predict()    D.transform(x)

4.如果要在大型数据集上训练决策树,为了花费更少的时间来训练这个模型,下列哪种做法是正确的?(C)

A.增加树的深度  B.增加学习率 C.减小树的深度  D.减少树的数量

5.朴素贝叶斯分类是通过比较各个类别的哪个值的大小进行分类的?(A)

A.P(cⱼ|x)    B.P(x|cⱼ;)   C.P(cⱼ)/P(x)   D.P(cⱼ;)

6.混淆矩阵的真负率公式是(D)。

A.TP/(TP+FN)  B.FP/(FP+TN)  C.FN/(TP+FN)  D.TN/(TN+FP)

7.混淆矩阵中的TP=16,FP=12,FN=8,TN=4,F1-score是(B)。

A.4/13 B.8/13  C.4/7  D.2/3

8.若某个消息出现的概率是0.25,则该消息的自信息量是___2___。

9.ID3算法选取信息增益最大的节点作为根节点;C4.5算法选取信息增益率最大的节点作为根节点。

10.在K-近邻算法中,K的含义是近邻点的个数;在K-均值算法中,K的含义是聚类的类别数.

11.对于分类模型,fit()函数的参数为特征属性集,类别属性;对于聚类模型,fit()函数的参数为特征属性集

12.给定贝叶斯公式p(cj|x)=(p(x|cj)p(cj)/p(x))公式中的p(cj|x)称为后验概率(填写先验概率、后验概率或全概率)。朴素贝叶斯分类的依据是要求上式中P(Cj|x)的值最大。

13.在决策树分类中,属性的信息增益等于条件熵的差。

14.决策树是用样本的属性作为节点,用属性的取值作为分支的树结构。

15.CART算法是选择基尼指数最小(填大或小)的节点作为根节点。

16.只能对离散型数据进行决策树分类的算法是ID3

17.Bootstrap重采样技术采用有放回(填有放回或无放回)抽样。

18.在sklearn中,fit()函数的返回值是模型,predict()函数的返回值是标签

19.什么是训练集?聚类的训练集和分类的训练集有何区别?

答:训练集是样本的一部分,用来建立模型和参数估计。

区别:聚类的训练集无标记

20、简述分类的一般步骤。

特征提取→特征选择→建立分类模型→预测新实例→评估效果.

20.简述什么是集成学习。集成学习的精确率一定比单个学习器的精确率更高吗?

(1)集成学习:多个性能一般的普通模型进行有效集成,形成一个性能优良的集成模型的过程

(2)若弱学习器的分类准确率较低,则组合生成的集成学习模型的分类准确率会更低,故集成学习准确率不一定比单个学习器的准确率高

22.设有甲、乙、丙三个车间生产同一种产品,已知各车间的产量分别占全厂产量的25%、35%和40%,各车间的产品次品率依次为5%、4%和2%。现从待出厂的产品中检查出一个次品,试用朴素贝叶斯分类预测该次品最有可能是由哪个车间生产的,并指出该分类的特征属性和类别属性。

答:特征属性:次品

类别属性:车间

23.假设在某地区切片细胞中正常(w₁)和异常(w₂)两类的先验概率分别为p(w₁)=0.9,p(w₂)=0.1。现有一个待识别细胞呈现状态x,由其类条件概率密度分布曲线查得p(x|w₁)=0.2,p(x|w₂)=0.4,试对该细胞进行分类。

答:0.9*0.2>0.1*0.4

故该细胞属于正常类别。

24.试用如表5-21所示的训练数据训练一个朴素贝叶斯模型。表中的x1和x2为特征属性,取值集合分别为x1={1,2,3},x2={S,M,L},y为类别属性,预测新样本x=(3,S)的类别值。

表5-21训练数据如下

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

x1 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3

x2 S M M S S S M M L L L M M L L

y 0 0 1 1 0 0 0 1 1 1 1 1 1 1 0

解:①先验概率

P(y=0)=6/15

p(y=1)=9/15

②后验概率逻辑回归

P(y=0|x1=2,x2=S)=P(x1=2|y=0)×P(x2=S|y=0)×P(y=0)

=2/6*3/6*6/15=1/15

P(y=1|x1=2,x2=S)=P(x1=2|y=1)×P(x2=S|y=1)×P(y=1)

=2/6*1/9*3/5=1/45

因为P(y=0|x1=2,x2=S)>P(y=1|x1=2,x2=S),所以样本x=(2,s)属于第0类。

习题6

1.关于逻辑回归模型,以下说法错误的是(B,D)。

A.逻辑回归属于有监督学习

B.逻辑回归是回归分析的一种

C.逻辑回归使用最大似然估计来训练回归模型

D.逻辑回归的损失函数是通过最小二乘法来定义的

2.hθ(x)=θTX可作为(B)模型的公式

A、逻辑回归                B.多元线性回归

C.多重线性回归           D.神经网络

3.要实现非线性分类,可以使用(B)。

A.多元逻辑回归                B.多项式逻辑回归

C.多重共线性回归            D.非线性逻辑回归

4.对于一个测试样本,逻辑回归模型的输出值等于样本属于该类别的概率值。(填等于、小于或大于)

5.回归与分类的区别是,回归的预测值是连续值。(填回归或分类)

6.逻辑回归使用激活(或Sigmoid)函数对线性回归进行变换。

7.如果直接用线性回归进行分类,会存在什么问题?

答:无法确定分类的阈值取多少合适

8.回归与分类的区别是什么?

答:回归可用于预测连续的目标变量

分类可用于预测离散的目标变量

9.简述使用逻辑回归进行分类的步骤。

答:

①建模

②估计逻辑回归系数

③解释回归系数④检验模型整体

⑤检验特征变量

10.简述使用极大似然估计法求解逻辑回归模型参数的步骤。

答:将正例和反例进行统一,无论正例或反例,都希望P(yi|xi)的值越大越好,将所有样本代入P(yi|xi),都希望P(yi|xi)的值越大越好,由此得到H(X)的似然函数L。显然,该似然函数的值越大越好。为方便求解,将似然函数两边取对数,得到对数似然函数。

习题7

1.人工神经元的公式和逻辑回归的公式相比,逻辑回归的公式中没有(B)。

A.激活函数变换             B.阈值

C.权重值                        D.损失函数

2.以下哪个函数可以对多分类问题的输出值进行归一化处理?(B)

A.Sigmoid        B.softmax

C.Relu                D.hinge

3.如果训练样本的类别值有4个,要构建一个神经网络模型训练该组样本,则神经网络的输出层应该有几个节点?(A)

A.4        B.3

C.2        D.1

4.深度神经网络主要是增加了(B)。

A.隐含层的节点数

B.隐含层的层数

C.输入层的节点数

D.输入层的层数

5.在神经网络的训练过程中,第i层节点的权重值w3要根据哪一层进行更新?(A)

A.i+1                        B.i-1

C.最后一层              D.所有层

6..神经网络的训练一般采用反向传播法。

7.神经网络中的神经元相当于是一个逻辑回归模型。

8.人工神经网络输入层的节点数目和输出层的节点数目如何确定?

答:输入层节点个数即特征属性的个数n

输出层节点个数即类别的个数

9.人工神经网络的4大要素是什么?

答:神经元特征,拓补结构,学习,训练规则

10.神经网络是怎样实现非线性分类的?

答:①有隐含层②激活函数必须是非线性函数

11.对sklearn自带的手写数字数据集(加载方法:load_digits())使用人工神经网络进行分类。要求首先将该数据集划分为训练集和样本集(比例为8:2),对该数据集的标签进行二值化处理,然后构建神经网络模型,每层节点数设为[64,100,10],激活函数使用Sigmoid,最后输出分类的准确率和混淆矩阵。

答:略

习题8

1.使用支持向量机进行非线性分类,需要用到的关键技术是(C)。

A.拉格朗日函数                 B.SMO算法

C.核函数                           D.软间隔方法

2.松弛变量惩罚项系数在sklearn中用哪个参数进行设置?(A)

A.C                   B.degree

C.tol                 D.coef0

3.如果要对环形分布的数据集进行分类,使用哪种核函数的效果最好?(C)

A.Linear

B.poly

C.RBF

D.Sigmoid

4.下列哪种核函数只能设置gamma参数?(C)

A.linear    B.poly

C.RBF      D.Sigmoid

5.SVM分类的目标是分类间隔d最大。

6.SVM间隔的计算公式为d=2/||w||。

7.所谓支持向量是指距离间隔最(填写远或近)的点

8.如果多项式核函数的degree参数设置为1,则相当于线分类。

9.为什么SVM的目标函数必须用拉格朗日对偶法来求解?

答:因为目标函数带有约束条件

10.简述使用SVM进行分类的基本步骤。

答:

1)定义决策边界的数学表达,并基于此表达定义分类函数;

2)为寻找最大间隔,引出损失函数。一般还要添加松弛系数作为惩罚项,以允许部分样本点在边界之内存在。

11.对sklearn自带的手写数字数据集(加载方法:load_digits())使用支持向量机进行分类。要求首先将该数据集划分为训练集和样本集(比例为8:2),然后构建支持向量机分类模型,核函数使用RBF,参数gamma设置为0.001,C设置为100,最后输出分类的准确率和混淆矩阵。

答:略

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2023年7月6日
下一篇 2023年7月6日

相关推荐