-
2021-05-22 13:20:05
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
西工大机考《C语言程序设计》网考
寻求答案(非免费)找我Q和V:2082851315
试卷总分:100 得分:96
一、 单选题 (共 35 道试题,共 70 分)
1. 若有定义:int a[2][3];,以下选项中对a数组元素正确引用的是( )。
A.a[2][!1]
B.a[2][3]
C.a[0][3]
D.a[1>2][!1]
2. 以下描述错误的是( )。
A.break语句不能用于循环语句和switch语句外的任何其他语句
B.在switch语句中使用break语句或continue语句的作用相同
C.在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环
D.在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环
3. 以下存储类型只有在使用时才为该类型变量分配内存的是( )。
A.auto和static
B.auto和register
C.register和static
D.static和extern
4. 若变量已正确定义,有以下程序段
int a=3,b=5,c=7;
if(a>b) a=b; c=a;
if(c!=a) c=b;
printf("%d,%d,%d\n",a,b,c);
其输出结果是( )。
A.程序段有语法错
B.3,5,3
C.3,5,5
D.3,5,7
5. 函数strlen("1234\0xy")的值为( )。
A.7
B.8
C.4
D.9
6. 若二维数组a由m列,则在a[i][j]之前的元素个数为( )。
A.j*m+i
B.i*m+j
C.i*m+j-1
D.i*m+j+1
7. 假定x和y为 double型,则表达式x=2,y=x+3/2的值是( )。
A.3.500000
B.3
C.2.000000
D.3.000000
8. 设变量已正确定义并赋值,以下正确的表达式是( )。
A.x=y*5=x+z
B.int(15.8%5)
C.x=y+z+5,++y
D.x=25%5.0
9. 在C语言中,设一表达式中包含有int,long,char和unsigned类型的变量和数据,则这4种类型数据转换的规则是( )。
A.int→unsingned→long→char
B.char→int→long→unsingned
C.char→int→unsigned→long
D.int→char→unsigned→long
10. 若有说明:int *p,m=5,n;,以下正确的程序段是( )。
A.p=&n;scanf("%d",&p);
B.p=&n;scanf("%d",*p)
C.scanf("%d",&n);*p=n;
D.p=&n;*p=m;
11. 在C语言中,变量的隐含存储类别是( )。
A.auto
B.static
C.extern
D.无存储类别
12. 函数的功能是交换变量x和y中的值,且通过正确调用返回交换的结果。能正确执行此功能的函数是( )。
A.funa(int *x, int *y)
{ int *p;
*p=x; *x=*y; *y=*p;
}
B.funb(int x, int y)
{ int t;
t=x; x=y; y=t;
}
C.func(int *x, int *y)
{ *x=*y; *y=*x;
}
D.{fund(int *x, int *y)
13. 在C语言中,只有在使用时才占用内存单元的变量,其存储类型是 ( )。
A.auto和register
B.extern和register
C.auto和static
D.static和register
14. 以下定义语句中正确的是( )。
A.int a=b=0;
B.char A=65+1,b=′b′;
C.float a=1,*b=&a,*c=&b;
D.double a=0.0;b=1.1;
15. 以下描述中正确的是( )。
A.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B.do-while循环由do开始,用while结束,在while(表达式)后面不能写分号
C.在do-while循环体中,是先执行一次循环,再进行判断
D.do-while循环中,根据情况可以省略while
16. 下面程序的输出结果是( )。
main()
{
int s,k;
for(s=1,k=2;k<5;k++) s+=k;
printf("%d\n",s);
A.1
B.9
C.0
D.15
17. 以读写方式打开一个已有的文件file1,下面有关fopen函数正确的调用方式为( )。
A.FILE *fp;fp=fopen("file1";"f");
B.FILE *fp;fp=fopen("file1","r+");
C.FILE *fp;fp=fopen("file1","rb");
D.FILE *fp;fp=fopen("file1","rb+");
18. 设int a=12,则执行完语句a+=a-=a*a后,a的值是( )。
A.552
B.264
C.144
D.-264
19. 阅读下列程序,则运行结果为( )。
#include "stdio.h"
fun()
{ static int x=5;
x++;
return x;\
A.5
B.6
C.7
D.8
20. 运行下面程序:
main()
{
int n1,n2;
scanf("%d",&n2);
while(n2!=0)
\ n1=n2%10;
n2=n2/10;
}
printf("%d",n1);
}若从键盘上输入298↙ ,则输出结果为( )。
A.2
B.29
C.8
D.0
21. C语言规定,在一个源程序中,main函数的位置( )。
A.必须在最开始
B.必须在系统调用的库函数的后面
C.可以任意
D.必须在最后
22. 已知double *p[6]; 它的含义是( )。
A.p是指向double类型变量的指针
B.p是double类型数组
C.p是指针数组
D.p是数组指针
23. 以下叙述中错误的是( )。
A.在程序中凡是以"#"开始的语句行都是预处理命令行
B.预处理命令行的最后不能以分号表示结束
C.#define MAX 是合法的宏定义命令行
D.C程序对预处理命令行的处理是在程序执行的过程中进行的
24. 为了判断两个字符串s1和s2是否相等,应当使用( )。
A.if(s1==s2)
B.if(s1=s2)
C.if(strcpy(s1, s2))
D.if(strcmp(s1, s2)==0)
25. 在下列结论中,只有一个是正确的,它是( )。
A.递归函数中的形式参数是自动变量
B.递归函数中的形式参数是外部变量
C.递归函数中的形式参数是静态变量
D.递归函数中的形式参数可以根据需要自己定义存储类型
26. 以下不正确的定义语句是( )。
A.double x[5]={2.0,4.0,6.0,8.0,10.0;
B.int y[5]={0,1,3,5,7,9;
C.char c1[]={′1′,′2′,′3′,′4′,′5′;
D.char c2[]={′\x10′, ′xa′, ′\x8′;
27. 有以下程序段
int n=0,p;
do
{ scanf("%d",&p);n++;
}while(p!=123&&n<10);
此处do-while循环的结束条件是( )。
A.P的值不等于123或者n的值小于10
B.P的值等于123并且n的值大于等于10
C.P的值不等于123并且n的值小于10
D.P的值等于123或者n的值大于等于10
28. 以下叙述中错误的是( )。
A.改变函数形参的值,不会改变对应实参的值
B.函数可以返回地址值
C.可以给指针变量赋一个整数作为地址值
D.当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL
29. 当变量c的值不为2、4、6时,值也为"真"的表达式是( )。
A.(c==2)︱︱(c==4)︱︱(c==6)
B.(c>=2&& c<=6)︱︱(c!=3)︱︱(c!=5)
C.(c>=2&&c<=6)&&!(c%2)
D.(c>=2&& c<=6)&&(c%2!=1)
30. 运行程序:
#include
main()
{
int n='c';
switch(n++)
{ default: printf("error");break;
case 'a':case 'A':case 'b':case 'B':printf("good");break;
case 'c':case 'C':printf("pass");
case 'd':case 'D':printf("warn");
}
}则输出结果是( )。
A.good
B.pass
C.warn
D.passwarn
31. 设有 int x=8; 则表达式 (++x*1/3) 的值是( )。
A.2
B.3
C.2.6
D.0
32. 下面程序的输出结果是( )。
main()
{ int x=5,y=9,z=1,t;
t=(x>y||x>z);
printf("%d\n",t);
A.1
B.0
C.5
D.3
33. 有以下程序
#include
main()
{ int x=1,y=0,a=0,b=0;
switch(x)
{ case 1:
switch(y)
{ case 0:a++; break;
case 1:b++; break;
}
case 2:a++; b++; break;
case 3:a++; b++;
}
printf("a=%d,b=%d\n",a,b);
}
A.a=1,b=0
B.a=2,b=2
C.a=1,b=1
D.a=2,b=1
34. 一个C程序的执行是从( )。
A.本程序的main函数开始,到main函数结束
B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C.本程序的main函数开始,到本程序文件的最后一个函数结束
D.本程序文件的第一个函数开始,到本程序main函数结束
35. 有以下程序
main()
{ int i,s=1;
for (i=1;i<50;i++)
if(!(i%5)&&!(i%3)) s+=i;
printf("%d\n",s);
A.409
B.277
C.1
D.91
二、 判断题 (共 15 道试题,共 30 分)
1. C语言的编译系统对宏命令的处理是和c程序中的其他语句同时进行编译的。
A.错误
B.正确
2. 设变量 a 为整型,f 是实型,i 是双精度型,则表达式10+'a'+i * f 值的数据类型不能确定为何类型。
A.错误
B.正确
3. (a=3)>(b=5) 是合法的关系表达式。
A.错误
B.正确
4. 预处理指令只能位于C源程序文件的首部。
A.错误
B.正确
5. 在c程序中,语句之间必须要用分号";"来分隔。
A.错误
B.正确
6. for循环是先执行循环体语句,后判断表达式。
A.错误
B.正确
7. 在C语言中char型数据在内存中的存储形式为ASCII码。
A.错误
B.正确
8. 声明语句可放在函数体中的任何位置。
A.错误
B.正确
9. 在C程序中,%是只能用于整数运算的运算符。
A.错误
B.正确
10. 设int a=12;则执行完语句a+=a-=a*a后,a的值为144。
A.错误
B.正确
11. 两个字符串所包含的字符个数相同时才能比较字符串大小。
A.错误
B.正确
12. %x是格式符的一种,它可以适用于任何一种类型的数据。
A.错误
B.正确
13. 若a和b类型相同,在执行了语句a=b后,b中的值将放入a中,b中的值不变。
A.错误
B.正确
14. 用typedef可以定义各种类型名,但不能用来定义变量。
A.错误
B.正确
15. C语言认为变量number和NuMbEr是相同的。
A.错误
B.正确
更多相关内容 -
对数几率回归(Logistic Regression)分析与实践
2018-11-07 16:31:25目录 1 对数几率回归原理分析 ...Logistic回归算法描述(改进的随机梯度下降) 《机器学习实战》第五章代码解析 5-1 Logistic回归梯度上升优化方法 5-2 画出数据集和Logistic回归最佳拟合直线的函数 ...目录
1 对数几率回归原理分析
1.1 引入
Logistic Regression,对数几率回归,又称逻辑斯谛回归。该模型最初是用来解决0/1二分类问题,明明是分类问题,为何叫回归?科普一下,线性回归是找到一条直线或超平面尽可能地接近所有的训练数据点(就是用线性方程来拟合数据),而对数几率回归是找到一条直线或超平面尽可能地分开两种不同类别的数据点(就是在公式中的线性部分来做了回归)。
首先,我们要解决的问题是:在线性模型上做二分类(这里不讨论多分类)。
把问题转化为,让模型输出为0或者1,而且在分界处变化很陡。
直接想法是套一个函数来实现一个单位阶跃函数,如下:
也就是把 线性模型
看作为一个两种类别的分界线。
由于分段函数性质太差,不符合优化问题的目标函数要连续可微的特点。所以我们找一个形似的函数(由下图可见),Sigmoid 函数(S型函数)中的杰出代表——对数几率函数(一个任意阶可导的凸函数,有良好的数学性质,很适合优化问题)。将线性模型
代入就得到总的模型
其实,对数几率回归模型就是在拟合 线性模型
,使得这条直线尽可能地将原始数据中的两个类别正确的划分开(引用张磊的知乎)。
单位阶跃函数与对数几率函数(来源 周志华《机器学习》) 1.2 损失函数
解决机器学习问题就要明确损失函数,回归问题一般用均方误差(平均损失)或者其平均数——平均误差平方损失来作为损失函数(这就是最小二乘法,用来找到一条直线使所有样本到直线的欧式距离之和最小)。
平均误差平方损失公式如下:Logistic回归模型,要用到的是对数损失来作为损失函数
先来看它的效果,再来说怎么得来的
效果:真实值 是有 0/1 两种情况,而推测值 由于借助对数几率函数,其输出是介于0~1之间连续概率值。这个损失函数其实在每次计算时永远都只有一项在发挥作用,转换为分段函数如下:
所以该损失函数可以达到这样的效果:当真实值 y为1时,输出值 y越接近1,则 L越小,当真实值 y为 0 时,输出值 y尖 越接近于0,则 L越小。
由来:
这与周志华《机器学习》的3.3节的对数几率回归模型最大化“对数似然”的似然项(详细过程看书P59)有着异曲同工之妙,可能存在某种联系吧。
1.3 求最优解
对数几率函数作为高阶可导连续凸函数,根据凸优化理论,典型的数值优化算法如梯度下降算法,牛顿法等
牛顿法的求法看周志华《机器学习》的P59~60。
下面我们用的是梯度下降算法(梯度上升同理,符号变为加号)来得到核心参数的更新方式:
w看做是一个向量的话,迭代同样要加减一个向量,α是每次迭代的步长(大小),α后面的偏导表示的是迭代的方向,这种通过多次迭代能够使得函数收敛到局部最小值。具体怎么得来的看张磊知乎梯度下降算法,写得很棒。
通过链式求导法则,(具体推导见张磊知乎梯度下降算法)
最终迭代方式为(矩阵形式,也是接下来实践用到的公式,其实是通过一系列推导得来的):
(
归入了矩阵中
)
2 对数几率回归实践
-
Logistic回归的一般过程
(1)收集数据:采用任意方法收集数据。
(2)准备数据:由于需要进行距离计算,因此要求数据类型为数值型。(有限)另外,结构化数据格式则最佳。
(3)分析数据: 采用任意方法对数据进行分析。
(4)训练算法:大部分时间将用于训练,训练的目的是为了找到最佳的分类回归系数
(5)测试算法:一旦训练完成,分类将会很快。
(6)使用算法:首先,我们需要输入一些数据,并将起转化成对应的结构化数值。接着,基于训练好的回归系数既可以 对这些数值进行简单的回归计算,在这之后,我们就可以在输出的类别上做一些其他分析工作。-
Logistic回归的优缺点
优点:计算代价不高,易于理解和实现。
缺点:容易欠拟合,分类精度可能不高。-
Logistic回归算法描述(改进的随机梯度下降)
输入:训练集
,
是
维样本向量,即
,
是对应的分类标签
学习率
过程:- 由对数似然得到代价函数
- ##下面采用梯度下降对代价函数
进行迭代,迭代
次(选择一个较大值,如500),得到最终的参数向量
- 初始化
为全1矩阵
- repeat:
- for all
do(这里采用随机选取样本来更新回归系数)
- 动态调整
-
- 从数据集中删除该样本(避免重复)
- util: 迭代了
次(要到达
达到局部最小的效果)
输出:
的最优解
-
《机器学习实战》第五章代码解析
5-1 Logistic回归梯度上升优化方法
- 算法伪代码:
每个回归系数初始化为1 重复R次: 计算整个数据集的梯度 使用 alpha*gradient 更新回归系数的向量 返回回归系数
- 数据集特点:
testSet.txt每行如下:
-0.017612 14.053064 0
每个样本点包括两个特征值x,y坐标,和对应的分类标签(0或1)from numpy import * def loadDataSet(): # 加载数据集 dataMat = [] # 创建数据列表 labelMat = [] # 创建标签列表 fr = open('testSet.txt') # 打开测试数据文件 for line in fr.readlines(): # 读取文件每一行 lineArr = line.strip().split() # 除去每一行的空格后拆分成列表, 例如 ['0.317029', '14.739025', '0'] dataMat.append([1.0, float(lineArr[0]), float(lineArr[1])]) # 增加子列表,[1.0,lineArr第一个元素(float),lineArr第二个元素(float)] labelMat.append(int(lineArr[2])) # 添加元素,元素来源于 lineArr列表的第三个元素(transform str to int first) return dataMat, labelMat # 返回数据列表,标签列表 # 注:[1.0, float(lineArr[0]), float(lineArr[1])] 中的1.0 表示的是特征X0 的值,一般默认X0 = 1.0(or 1) def sigmoid(inX): # 定义sigmoid函数, 同书P74 return 1.0/(1+exp(-inX)) def gradAscent(dataMatIn, classLabels): # 定义梯度上升函数 dataMatrix = mat(dataMatIn) # 把数据列表转化成矩阵形式(列表和矩阵的简单差别:列表一般是一行,以逗号分隔,而矩阵是多行,没逗号) labelMat = mat(classLabels).transpose() # 把标签列表转化成矩阵形式,然后转置 (行向量 -> 列向量) m,n = shape(dataMatrix) # 取 数据矩阵的行和列 第一个是 行数m=100, 第二个是 列数n=3 alpha = 0.001 # 学习率初始化 = 0.001,步长为0.001 maxCycles = 500 # 最大循环次数 = 500 weights = ones((n,1)) # 权重初始化为全1矩阵 列向量(形式为n行1列) for k in range(maxCycles): h = sigmoid(dataMatrix * weights) # 1.0/(1+exp(-Z) f[x,y] = Z = dataMatrix * weights error = (labelMat - h)#损失函数,真实值与预测值之间的差值 weights = weights + alpha * dataMatrix.transpose() * error # 更新权重 :要注意矩阵运算,几行几列要对应,注意转置,error(m行1列), return weights # 返回 权重 #运行代码 dataArr, labelMat = loadDataSet() dataMatrix = mat(dataArr) #print(dataMatrix) res = gradAscent(dataArr,labelMat) print(res)
- 结果如下:
[[ 4.12414349] [ 0.48007329] [-0.6168482 ]]
5-2 画出数据集和Logistic回归最佳拟合直线的函数
def plotBestFit(weights): import matplotlib.pyplot as plt dataMat, labelMat = loadDataSet() dataArr = array(dataMat) # 列表要转为数组 n = shape(dataArr)[0] # n=100 数组的行n=100,(数组的列m=3) xcord1 = [] #类型1的x,y值 ycord1 = [] xcord2 = [] #类型0的x,y值 ycord2 = [] for i in range(n): # 遍历 (0->100-1) if int(labelMat[i]) == 1: # 如果第i个元素的标签值是 1 xcord1.append(dataArr[i,1]) # 把对应数据数组(形似矩阵)的第i行的第2个元素 增加到 xcord1 ycord1.append(dataArr[i,2]) # 把对应数据数组(形似矩阵)的第i行的第3个元素 增加到 ycord1 else: # 如果标签列表(labelMat)中第i个元素的标签是 0 xcord2.append(dataArr[i,1]) # 同上 ycord2.append(dataArr[i,2]) # 同上 fig = plt.figure()#画图画布 ax = fig.add_subplot(111)#子图 #画散点图 ax.scatter(xcord1, ycord1, s=30, c='red', marker='s') ax.scatter(xcord2, ycord2, s=30, c='green') # 绘制拟合直线 x = arange(-3.0,3.0) # x取值范围 起点-3.0, 终点3.0 步长0.1 y = (-weights[0]-weights[1]*x)/weights[2] # weight[1]是1*1的矩阵,z=w[0]+w[1]*x+w[2]*y, #print(x) #print(y) ax.plot(x,y)#绘制拟合直线 plt.xlabel('X1') plt.ylabel('X2') plt.show() #运行代码 %matplotlib inline#在界面上显示 dataArr, LabelMat = loadDataSet() weights = gradAscent(dataArr,LabelMat) plotBestFit(weights.getA()) #getA()将numpy矩阵转换为数组
- 结果如图
- “梯度上升法”的不足在于每次更新回归系数时都要遍历整个数据集,计算复杂度高
因此,产生了“随机梯度上升法”,即每次仅使用1个样本点数据来更新回归系数
5-3 随机梯度上升算法
随机梯度上升算法:一次仅用一个样本点来更新回归系数 随机梯度上升伪代码: 每个回归系数初始化为1 对数据集中每个样本: 计算该样本的梯度 使用 alpha*gradient 更新回归系数的向量 返回回归系数
- 和梯度上升法的区别:第一,后者的变量h和error都是向量,而前者则全是数值;第二,前者没有矩阵的转化过程,所有变量的数据类型都是Numpy数组
def stocGradAscent0(dataMatrix, classLabels): m,n = shape(dataMatrix) # 取数组的行m, 列n alpha = 0.01 # 学习率初始化 weights = ones(n) # 创建 含有 n 个元素的 数组 for i in range(m): # 循环每一行的元素 h = sigmoid(sum(dataMatrix[i]*weights))# sum(dataMatrix[i]*weights)=w0*x0+w1*x1+w2*x2 error = classLabels[i] - h weights = weights + alpha * error * dataMatrix[i] # 更新权重 return weights # 返回权重 #运行代码: dataArr,labelMat = loadDataSet() weights = stocGradAscent0(array(dataArr), labelMat) plotBestFit(weights)
- 结果如图
- “随机梯度上升法”分错了三分之一,因为原始梯度上升算法(5-1)是在整个数据集上迭代500次得来的,这是不公平,我们对本算法同样进行多次迭代,发现问题如下:
不足在于回归系数存在周期震荡波动。
因此,产生了“改进的随机梯度上升法”,改进之处有两点:
1、动态调整步进因子;
2、随机选取样本来更新回归系数。
5-4 改进的随机梯度上升算法
def stocGradAscent1(dataMatrix, classLabels, numIter = 150):#因为由图可知迭代到150次左右就收敛(达到稳定值) m,n = shape(dataMatrix) # 取数组(narray)的行,列 m=100, n=3 (narray 和 matrix 长的一样) weights = ones(n) # [1. 1. 1.] for j in range(numIter): # 循环到 最大循环次数numIter = 150: # dataIndex = range(m) ### 书中需要更改的地方 tip: TypeError: 'range' object doesn't support item deletion dataIndex = list(range(m)) # 创建一个0到99, 步长为1 的列表 for i in range(m): # 循环listIndex alpha = 4/(1.0+j+i)+0.01#动态调整步进因子 randIndex = int(random.uniform(0, len(dataIndex))) # 随机选取样本来更新回归系数 h = sigmoid(sum(dataMatrix[randIndex]*weights)) # 1.0/(1+exp(-Z)) Z = dataMatrix * weights error = classLabels[randIndex] - h weights = weights + alpha * error * dataMatrix[randIndex] # 更新权重 del(dataIndex[randIndex]) # 删除用过的 随机数 (避免重复) return weights # 返回权重 #运行代码 from numpy import * dataArr,labelMat = loadDataSet() weights = stocGradAscent1(array(dataArr), labelMat) plotBestFit(weights)
- 结果如图
5-5 示例:从疝气病症预测病马的死亡率
def classifyVector(inX, weights): prob = sigmoid(sum(inX*weights)) # 输入Z=inX*weights(特征向量*回归系数) 计算Sigmoid值 if prob > 0.5: return 1.0 else: return 0.0 def colicTest(): frTrain = open('horseColicTraining.txt') # 打开训练集 frTest = open('horseColicTest.txt') # 打开测试集 trainingSet = [] # 训练集列表 trainingLabels = [] # 训练标签列表 #把训练集文本处理放入训练集列表和训练标签列表中 for line in frTrain.readlines(): # 读取训练文本的 每一行 currLine = line.strip().split('\t') # 除去空格,然后用split方法 转化 成list lineArr = [] # 定义行数组(处理每行数据) for i in range(21): #数据有22列,前21个为特征,最后一个是分类标签 lineArr.append(float(currLine[i])) # 添加currLine的第i个元素到lineArr trainingSet.append(lineArr) # 把 lineArr 作为 子列表 添加到 训练集列表trainingSet[ [],[],[],...]的形式 trainingLabels.append(float(currLine[21])) # 把 currLine 最后一个元素(是标签) 添加到训练标签trainingLabels trainWeights = stocGradAscent1(array(trainingSet),trainingLabels,500) # 迭达500次 求 训练权重 errorCount = 0 #错误计数器 numTestVec = 0.0 #总数计数器 #把测试集文本 for line in frTest.readlines(): # 读取测试文本的每一行 numTestVec += 1.0 # numTestVec == 1.0 currLine = line.strip().split('\t') # 除去空格,然后用split方法 转化 成list lineArr = [] # 定义行数组(处理每行数据) for i in range(21): # 数据有22列,前21个为特征,最后一个是分类标签 lineArr.append(float(currLine[i])) # 添加currLine的第i个元素到lineArr if int(classifyVector(array(lineArr), trainWeights)) != int(currLine[21]): # 如果分类有错误 errorCount += 1 errorRate = (float(errorCount)/numTestVec) # 计算错误率 print("the error rate of this test is: %f" % errorRate) return errorRate # errorCount,numTestVec 各变量结果 25, 67.0 def multiTest(): # 调用colicTest()函数10次并求平均值 numTests = 10 errorSum = 0.0 for k in range(numTests): errorSum += colicTest() print("after %d iterations the average error rate is: %f" % (numTests, errorSum/float(numTests))) print(colicTest()) multiTest()
结果 如下:
the error rate of this test is: 0.388060
0.3880597014925373
the error rate of this test is: 0.417910
the error rate of this test is: 0.432836
the error rate of this test is: 0.402985
the error rate of this test is: 0.328358
the error rate of this test is: 0.388060
the error rate of this test is: 0.402985
the error rate of this test is: 0.238806
the error rate of this test is: 0.358209
the error rate of this test is: 0.462687
the error rate of this test is: 0.328358
after 10 iterations the average error rate is: 0.376119
参考资料
【1】https://zhuanlan.zhihu.com/p/36670444
【2】https://zhuanlan.zhihu.com/p/36564434
【3】《机器学习》周志华
【4】《机器学习实战》(仅供个人学习记录)
-
-
Java基础练习题 分享+制作(34道精简)答案在下面!!!!!!
2018-09-10 16:23:371.下面说法正确的是()。(选择两项) A. java程序的main()方法必须写在类里面。 B. java程序必须有多个main()方法。 C. java程序中,如果类名由public修饰,则类名必须与文件名一致。 D. 如果java程序的main()...1.下面说法正确的是()。(选择两项)
A. java程序的main()方法必须写在类里面。
B. java程序必须有多个main()方法。
C. java程序中,如果类名由public修饰,则类名必须与文件名一致。
D. 如果java程序的main()方法只有一条语句,则可以不用{}括起来。
2.在myelipse中,()视图显示输出结果。
A. 包资源管理器。 B. 导航器。
C. 控制台。 D. 问题。
3.为一个boolean类型变量赋值时,可以使用()方式。
A. boolean a=1 B. boolean a=(9>10);
C. boolean a=”真” D. boolean a=false;
4.下列语句中,()正确完成了整型变量的生命和赋值。(选择两项)
A. int count ,count=0 B. int count=0;
C. count=0; D. int count1=0,count2=0
5. java中关于if选择结构描述错误的是()。
A. if选择结构是根据条件判断之后再做处理的一种语法结构。
B. 关键字if后小括号里必须是一个条件表达式,值必须为boolean类型。
C. if小括号里的表达式的值为false时,程序需要执行大括号里的语句。
D. if语句可以和else一起使用。
6. 在流程图中,下面说法正确的是()
A. “菱形”表示计算步骤/处理符号。 B.“长方形”表示程序开始/结束
C. “平行四边形”表示输入/输出指令 D. “圆角长方形”表示判断分支
7. 下列关于if选择结构和switch选择结构的说法正确的是()(选择两项)
A. if-else选择结构中的else语句是必须有的。
B. 多重if选择结构中的else语句可选。
C. 嵌套if选择结构中不能包含else语句。
D. switch选择结构中的default可选。
8. 在JDK1.6中,下列关于switch选择结构的说法,正确的是()(选择两项)
A. switch选择结构可以完全替代多重if选择结构。
B. 当条件判断为等值判断,并且判断的条件为字符串时,可以使用 switch 结构。
C. 当条件判断为等值判断,并且判断的条件为字符时,可以使用switch 选择结构。
D. 当条件判断为等值判断,并且判断的条件为整型变量时,可以使用switch选择结构。
9.以下说法正确的是()。(两项)
A. 如果while 循环结构的循环条件始终为true,则一定会出现死循环。
B.程序调试时假如断点会改变程序的执行流程。
C. do-while循环结构的循环体至少无条件执行一次。
D. while循环结构的循环体有可能一次都不执行。
10. 对以下代码,下列说法正确的是()int k=10; while(k==0){ k=k-1; }
A.循环将执行10次 B. 循环一次也不执行
C. 循环将执行一次 D. 死循环,一直执行下去
11. 以下关于break 和continue 语句的说法正确的是()
A. continue语句的作用是结束整个循环的执行。
B. 在循环体内和switch结构体内可以使用break 语句。
C. 循环体内使用break语句或continue语句的作用相同。
D. 在switch结构体内也可以使用continue。// 不能用continue
12. 下面循环的执行次数是()
for(int i=2; i==0;){
System.out.println(i)
i++;
}
A.0 B.1 C.2 D.无限次
13. 下列数组的初始化正确的是()(选择两项)
A. int score={90,12,34,77,56}; B. int[]score=new int[5];
C. int [] score=new int[3]{90,12,34} ; D. int[]score=new int[]{90,12,34};
14. 以下代码输出的结果为()public calss Test{ public static void main(String[]args){ double[]price=new double[5]; price[0]=98.10; price[1]=32.18; price[2]=77.74; for(int i=0;i<5;i++){ System.out.println((int)price[i]+” ”); } }
}
A. 98 32 77 0 0 B. 98 32 78 0 0
C. 98 32 78 D.编译出错
15. 以下关于二重循环的说的法正确的是()
A. 二重循环就是一段程序中只能有两个循环。
B. while循环不能嵌套在for循环里。
C. 两个不重叠的循环不能嵌套在第三个循环里。
D. 如果一个for循环被嵌套在另一个for循环中,则两个循环中的循环变量名称必须不同。
16.下面说法正确的是()(选择两项)
A. 程序执行到break语句时一定会结束所有循环。
B. 程序执行到continue语句时会结束当前循环即continue语句所在的循环。
C. continue和break语句可以出现在同一个循环体中。
D. continue和break语句的作用相同。
17. ()是拥有属性和方法的实体。(选择两项)
A. 对象 B. 类 C.方法 D. 类的实例
18.对象的静态特征在类中表示为变量,称为类的()
A.对象 B. 属性 C. 方法 D. 数据类型
19. 有一个汽车类Car,包含的属性有:颜色(color)、型号(type)、品牌(brand)。现在要在main()方法中创建Car类的对象,下面代码中,正确的是()
A. Car myCar=new Car; B. Car myCar=new Car();
myCar color=”黑色”; myCar.brand=”宝马”;
C. Car myCar; D. Car myCar=new Car();
myCar.brand = ”宝马”; color=”蓝色”;
20. 编译Java Applet 源程序文件产生的字节码文件的扩展名为()。
A、java B、class C、html D、exe
21.下列哪些是合法变量名()(多选)
A._myCar B. My Variable C. $myCar D.9my
22. 在流程图里的意思为()
A. 计算步骤/处理符号
B. 输入/输出指令
C. 判断和分支
D.程序开始或结束
23. &&、||、! 的意义依次为()
A. 或者,并且,非
B. 或者,非,并且
C. 并且,非,或者
D. 并且,或者,非
24.以下代码的输出结果是()public class Test { public static void main(String[] args) { System.out.println(9+6+“Hello”+2+5); } }
A.96Hello25 B.96Hello7
C.15Hello25 D.15Hello725. 以下()不是合法的标识符
A、 STRING B、 x3x; C、 void D、 de$f
26. 表达式(11+3*8)/4%3的值是()
A、 31 B、 0 C、 1 D、 2
27. ()表达式不可以作为循环条件
A、 i++; B、 i>5; C、 bEqual = str.equals(“q”); D、 count = = i;
28.以下程序的运行结果是()public class Increment{ public static void main(String args[]) { int a; a = 6; System.out.print(a); System.out.print(a++); System.out.print(a); } }
A.666 B.667 C.668 D.669
29.下列输出结果是( )int a = 0 ; while ( a < 5 ) { switch(a){ case 0: case 3 : a = a + 2; case 1 : case 2 : a = a + 3; default : a = a + 5; } } System.out.print ( )
A、 0 B、 5 C、 10 D、 其他
30.下列( )属于引用数据类型(选择两项)
A、 String B、 char C、 用户自定义的Student类类型 D、 int
31.以下( )代码,能够对数组正确初始化。
A、 int a; B、 a = {1, 2, 3, 4, 5};
C、 int[] a = new int[5]{1, 2, 3, 4, 5}; D、 int[] a = new int[5];
32.执行下面代码结果( )
for(int i=0;;){
System.out.println(“这是 “+i);
break;
}
A、 语法错误,缺少表达式2和表达式3 B、 死循环
C、 程序什么都不输出 D、 输出:这是0
33.关于面向对象的说法正确的是( )
A、 类可以让我们用程序模拟现实世界中的实体
B、 有多少个实体就要创建多少个类
C、 对象的行为和属性被封装在类中,外界通过调用类的方法来获得,但是要知道类的内部是如何实现
D、 现实世界中的某些实体不能用类来描述
34. 用于将java源代码文件编译成字节码的编译器是 ()。
A . javac B. java C. jdb D . javah1.AC
2.C
3.BD
4.BD
5.C
6.C
7.BD
8.BD
9.CD
10.B
11.B
12.A
13.BD
14.A
15.D
16.BC
17.AD
18.B
19.B
20.A
21.AC
22.A
23.D
24.C
25.C
26.D
27.C
28.B
29.C
30.AC
31.D
32.D
33.A
34.A -
以下关于Python缩进的描述中,错误的是
2020-12-04 07:56:07以下关于Python缩进的描述中,错误的是在工业企业综合生产计划工作中,对品种指标的优化可采用A:销售收入和利润分析法B:线性规划法C:销售人员意见综合法D:盈亏平衡分析法下面对静态数据成员的描述中,正确的是A:类的...以下关于Python缩进的描述中,错误的是
在工业企业综合生产计划工作中,对品种指标的优化可采用A:销售收入和利润分析法B:线性规划法C:销售人员意见综合法D:盈亏平衡分析法
下面对静态数据成员的描述中,正确的是A:类的每个对象都有自己的静态数据成员B:静态数据成员不能通过类的对象调用只能通过“类名::标识符”调用C:静态数据成员是类的所有对象共享的数据D:类的不同对象有不同的静态数据成员
在PSpiceA/D交流分析的ACSweep/Noise设置中,选用对数坐标,起点可以从0Hz开始。()A:错B:对
依据装卸搬运设备作业原理,装卸搬运设备可以分为()。A:滚上滚下和移上移下B:叉上叉下C:吊上吊下D:散装散卸
米芾()评:"智永临集千文,秀润圆劲,八面具备"。A:《画禅室随笔》B:《海岳名言》C:《广艺舟双楫》D:《书史》
对单纯疱疹病毒性脑炎的临床预后无影响的是()A:免疫治疗是否得当B:脑脊液中的病毒数量C:诊断、治疗是否及时D:抗病物的疗程是否足够E:对症支持处理是否完善
以下哪些是经理支持系统的功能A:提供在线状态的获得具备数据分析能力B:支持对总结性数据背后细节和数据的获得C:提供趋势分析及例外报告D:抽取压缩和跟踪关键数据
企业在国际市场定价中的目标有多个,下列哪些不属于它们的目标?A:增加利润B:实现投资收益率C:扩大市场份额D:增加知名度
质量为m的小球,在水中受到的浮力大小恒为A:B:C:D:
5G基站的功能组成被重构为以下哪几个功能实体?A:DUB:CUC:AAUD:RRU
立式磨的优点是()。A:入磨物料粒度大B:物料在磨内停留时间短C:可利用各种窑炉的废热气烘干物料D:入磨物料粒度小
连锁与互换的细胞学基础:是第一次成熟分裂前期所发生的同源染色体联会与非姊妹染色单体的交叉互换。A:对B:错
下列不是营销组合4P的是()。A:渠道B:需要C:定价D:产品
决明子的主治证是A:肝火头痛B:肠燥便秘C:热淋涩痛D:目赤肿痛E:瘰疬瘿瘤
在一个具有n个顶点的无向连通图中至少有()条边。A:nB:n/2C:n-1D:n+1
水由敞口恒液位的高位槽通过一管道流向压力恒定的反应器,当管道上的阀门开度减小后,管道总阻力损失()A:C、不变B:D、不能判断C:B、减小D:A、增大
用万用表R×1K挡或R×10KA:对B:错
()是指个体接触新的社会情境时,总是按照以往经验,将情境中的人或事进行归类所形成的关于人或事物的概念,是社会知觉的结果。A:想象B:感觉C:知觉D:印象
蜗杆传动中,轮齿承载能力的计算主要针对()来进行。A:蜗轮齿面接触强度和齿根弯曲强度B:蜗杆齿面接触强度和齿根弯曲强度C:蜗杆齿面接触强度和蜗轮齿根弯曲强度D:蜗轮齿面接触强度和蜗杆齿根弯曲强度
以下哪个不属于是人体9大系统:A:泌尿系统B:运动系统C:消化系统D:免疫系统
土地资源分布不平衡,土地生产能力的地区差别显著,可分为A:东南季风区B:西北内陆区C:青藏高原区
“99%的人,都败给了这一个字”这个标题最大的问题在于,标题内没有任何与业务相关的关键词。A:错B:对
分析数字电路的功能的工具有(&nA:波形图B:逻辑表达式C:逻辑状态表D:逻辑代数
文本组件类有以下哪个()。A:WindowB:JTextAreaC:JTextFieldD:JButton
文字的层级关系一般是指版面中文字的大小和色度强弱所形成的由主到次、由近及远、由强到弱的视觉关系,也是一种阅读导向和顺序。A:对B:错
,对变量的描述正确的是:A:变量是公有变量B:变量是私有变量C:变量是公有变量D:变量是公有变量
在记账无误的情况下,银行对账单与企业银行存款日记账账面余额不一致的原因是()A:在途货币资金B:应付款C:未达账项D:外均存款
微机组装完成,加电开机后提示找不到引导盘,不可能是()。A:硬盘自身故障B:主板CMOS硬盘有关参数的设置错误C:显示器连接不良D:硬盘连接不良
可以作为决定系数的值的是()。A:πB:1.5C:√2D:-0.5
下列关于负反馈调节的叙述,错误的是A:是维持内环境稳态的重要调节形式B:与神经调节和体液调节无关C:是一个闭环系统D:反馈信号能减弱控制部分的活动E:反馈信息与控制信息的作用性质相反
减肥计划模型属于哪类模型?A:代数方程模型B:稳定性模型C:优化模型D:微分方程模型
常见的封闭抗体的类型有A:抗Fc受体抗体B:抗TLX抗体C:抗冷B细胞抗体D:抗HLA-D/DR抗体
常与曲池穴相配治疗荨麻疹的穴位是:A:箕门B:风市C:阴陵泉D:地机E:血海
蒸发温度不变的情况下,升高冷凝温度可以提高制冷系数。A:对B:错
菊科植物主要分布于温带,热带较少,是药用种类最多的科,菊科植物的化学成分的复杂性和多样性均居植物界之首。A:对B:错
采购到货单A:对B:错
由曲线及A:B:C:D:
当代海洋问题是局部问题,个别问题。A:错B:对
以下测量方法中,测距精度高而且速度快的是()。A:钢尺量距B:视距仪测距C:电磁波测距D:目估
大学男生穿紧身裤最好用长款上衣来遮挡一下。A:错B:对
原核生物的肽链延伸过程有下列哪些物质不用参与()。A:鸟苷三磷酸B:EF-Tu、EF-Ts、EF-GC:肽基转移酶D:甲酰甲硫氨酰-tRNA
运动技能是在大脑皮质指挥下由骨骼肌参与的非随意运动。A:错B:对
梁的最大挠度必产生于最大弯矩处。()A:错B:对
从病毒体进入易感细胞到子代病毒生成并释放这一过程称为一个复制周期()A:错B:对
在DW检验中,当DW统计量为2时,下面哪些说法是正确的?()A:存在完全负自相关B:不能判定C:存在完全正自相关D:不存在自相关
扣件式钢管脚手架中常用的扣件有:()A:插销B:对接扣件C:旋转扣件D:直角扣件
意见性问题主要是想A:对B:错
-
Java基础第一阶段测试题
2021-02-28 16:45:24下面有关for循环的描述正确的是( )(选择一项) A、 for循环体语句中,可以包含多条语句,但要用大括号括起来 B、 for循环只能用于循环次数已经确定的情况 C、 在for循环中,不能使用break语句跳出循环 D、... -
超硬核十万字!全网最全 数据结构 代码,随便秒杀老师/面试官,我说的
2021-04-11 01:11:23本文代码实现基本按照《数据结构》课本目录顺序... 下面给出不带头的单链表标准实现: 定义节点: typedef struct node { int data; struct node * next; }Node; 尾插: void pushBackList(Node ** list, int data) { ... -
日常Java练习题(每天进步一点点系列)
2021-05-30 14:33:41直接看到答案不太好,那我把答案的颜色设置为透明,答案位置还是在题目后面,需要鼠标选中才能看见(操作如下图),同时为了手机端的小伙伴(手机端也可以长按选中查看),我还会把所有答案放到文章最下面,希望给... -
金融计算收益率的时候为什么大部分用对数收益率 (Log Return) 而不是用算数收益率?
2020-12-24 14:57:57下面回答的都挺好,核心就是对于单一投资品的收益率,对数收益率时序可加;对于不同投资品的截面收益率,应该用百分比收益率,因为它在截面上有可加性;另外对数收益率对建模有帮助。如果我们考察单一投资品在总共 T... -
超硬核!数据结构学霸笔记,考试面试吹牛就靠它
2021-03-26 11:11:21算法的时间 复杂度常见的有: 常数阶 O(1),对数阶 O(log n),线性阶 O(n), 线性对数阶 O(nlog n),平方阶 O(n^2),立方阶 O(n^3),…, k 次方阶O(n^k),指数阶 O(2^n),阶乘阶 O(n!)。 常见的算法的时间 复杂度... -
Logistic(对数几率)回归
2018-04-17 16:27:36我概念里面机器学习算法一般是这样一个步骤: 1)对于一个问题,我们用数学语言来描述它,然后建立一个模型,例如回归模型或者分类模型等来描述这个问题; 2)通过最大似然、最大后验概率或者最小化分类误差等等... -
Java扩展练习题(前六天)
2021-03-22 19:47:45表达式3){ //code } 下面描述正确的是( ) A. 表达式1处的代码会被执行多次 B. 表达式1处可以定义变量 C. 表达式3用于决定循环是否应该结束 D. 表达式2的值可以是任意类型,也可以是boolean... -
超硬核!十万字c++题,让你秒杀老师和面试官(上)
2021-04-21 10:46:15我发现呀,这大家对面试题的需求还是很大的,这里总结了上千道知识点,能换您一个收藏吗 -
人工智能:模型与算法——练习题
2021-05-13 11:01:371如果一个问题或者任务不可计算,那么对这个问题或任务的描述哪一句是正确的( ) A.该问题或任务所需计算时间是非线性增加的 B.无法将该问题或任务所需数据一次性装入内存进行计算 C.图灵机不可停机 ... -
java面试题29 牛客 以下关于集合类ArrayList、LinkedList、HashMap描述
2019-11-29 15:09:12java面试题29 牛客 以下关于集合类ArrayList、LinkedList、HashMap描述错误的是() A HashMap实现Map接口,它允许任何类型的键和值对象,并允许将null用作键或值 B ArrayList和LinkedList均实现了List接口 C ... -
JAVA语言基础内部测试题(50道选择题)
2021-02-12 09:13:36JAVA语言基础内部测试题选择题...)(每题2分)没有注明选择几项的,只选择一项1、JAVA所定义的版本中不包括:()A、JAVA2 EEB、JAVA2 CardC、JAVA2 MED、JAVA2 HEE、JAVA2 SE2、下列说法正确的是()A、JAVA程序的mai... -
Java语言基础知识_1.3:数组
2019-05-14 22:36:13Java中的数组的定义就是相同类型,固定长度的一组数据,一旦被初始化,长度不可更改。 参考文章:java 中数组的长度可以改变么? 2. 对于数组的声明与使用,下列说法正确的是: 对于声明 String s... -
决策树与随机森林(从入门到精通)
2020-07-06 22:54:44当对数不为2而是其他大于2的整数r时,我们称信息熵为r-进制熵,记为 H r ( X ) H_{r}(X) Hr(X),它与信息熵转换公式为: 信息熵用以描述信源的不确定度, 概率越大,可能性越大,但是信息量越小,不确定性越小,熵... -
实验9-4:从键盘输入10个整数到数组中,采用简单交换排序(冒泡排序)对这组数进行排序。将排序后的结果输出。_...
2021-03-15 13:50:22【单选题】当一台计算机向另一台计算机发送文件时,下面的( )过程正确描述了数据包的。【单选题】若定义“short s;byte b;char c;”,则表达式“s*b+c”的类型为_____________。【单选题】在以下字符常量的表示方法中,... -
描述性统计、参数估计和假设检验
2021-04-03 01:15:43描述性统计分析 描述性统计所提取的统计的信息称为统计量,包括频数与频率,反映集中趋势的均值、中位数、众数和分位数,反映离散程度的极差、方差和标准差,反映分布形状(相对于正态分布)的偏度和峰度。 变量分为... -
【牛客网】C/C++牛客网专项刷题(02)
2018-07-28 19:32:0912、C++语言中,下面描述中,正确的是() 一个基类的声明中有纯虚函数,该基类派生类一定不再是抽象类 函数类型不能作为重载函数的调用的依据 静态数据成员不是所有对象所公有的 内联函数在运行时是将该... -
JavaScript基础题、练习题、面试题(四)
2019-06-27 22:34:34正确答案: C 解析: php运行环境apache 2.http协议的默认端口号是 A 80 B 8888 C 8080 D 3306 正确答案: A 解析: 服务器安装好之后,默认端口号是80 3.ajax跨域的前端解决方案是哪个 A cors B jsonp C ... -
2021年第十二届蓝桥杯C/C++A组题解
2022-02-08 22:14:192021年第十二届蓝桥杯C/C++A组题解(不包含第十题),除第九题外,前八题的过程细节都十分详细,简单易懂,第九题的细节之处希望大神指教! -
「数据结构与算法Javascript描述」二叉树
2022-01-29 12:12:21「数据结构与算法Javascript描述」二叉树「数据结构与算法Javascript描述」二叉树1. 树的定义2. 二叉树2.1 二叉搜索树2.2 二叉搜索树的遍历2.3 二叉搜索树上进行查找2.3.1 查找最小值和最大值2.3.2 查找给定值2.4 ... -
Java期末考试复习题
2021-01-13 15:55:241、下列关于for语句的描述中,错误是的( )。 A、for语句能够实现的功能一定可以用while语句来实现 B、for语句用于循环控制 C、for语句只能用于循环次数已知的场景 D、for语句的执行属于先判断后执行 正确答案... -
2016.08.13【初中部 NOIP提高组 】模拟赛C
2016-08-13 20:40:54题目描述: 2548. 【NOIP2011模拟9.4】最大正方形 (StandardIO) 给一个N*N的01矩阵, 求一个面积最大的全为1的正方形子矩阵. 输出它的面积. Input 输入文件square.in的第一行包含一个正整数N. 接下来N... -
php 测试题,判断题及答案
2021-01-19 23:05:211. LAMP具体结构不包含下面哪种(A ) A:Windows系统 B:Apache服务器 C:MySQL数据库 D:PHP语言 2. 以下哪个SQL语句是正确的(D) A:insert into users values(‘p001’,’张三’,’男’); B:create table ... -
计算机软件工程实验题目
2008-11-06 17:08:05软件工程设计题目 ...(其中,用户输入正确的用户名和密码才能看到自己的通讯录信息) 网上书店 要求:购书者可以通过访问Web站点,得到图书信息。系统可以: 显示每本书的详细信息 显示购物车和顾客选购的图书信息 -
关于JS数组中every与some两者迭代方法探索
2015-06-22 16:01:08some()是对数组中每一项运行指定函数,如果该函数对任一项返回true,则返回true。 我其实在看完这两个函数的介绍时,心里就在想,这两个会不会像逻辑运算符||和&&一样是短路操作? 运行如下代码便知分晓: ... -
JS基础练习题及答案(二)
2020-08-07 20:08:502.已知字符串"hello everybody "通过下面哪个方法可以去掉字符串两端的空白 A trim() B split() C reverse() D join() 正确答案: A 解析: 使用排除法:split分割字符串;reverse反转数组;join将数组转成字符串 trim... -
以下选项不是python文件读操作的是-模拟试卷B
2020-11-01 11:59:35关于数据结构的描述,以下选项中正确的是数据结构指相互有关联的数据元素的集合数据的存储结构是指反映数据元素之间逻辑关系的数据结构数据的逻辑结构有顺序、链接、索引等存储方式数据结构不可以直...