计算与人工智能概论-问题求解、科学计算与AI应用方法 习题及答案 第11章参考答案_第1页
计算与人工智能概论-问题求解、科学计算与AI应用方法 习题及答案 第11章参考答案_第2页
计算与人工智能概论-问题求解、科学计算与AI应用方法 习题及答案 第11章参考答案_第3页
计算与人工智能概论-问题求解、科学计算与AI应用方法 习题及答案 第11章参考答案_第4页
计算与人工智能概论-问题求解、科学计算与AI应用方法 习题及答案 第11章参考答案_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

一、选择题1.在机器学习工作流程中,数据预处理的目的是()。A.直接优化模型参数B.提高数据质量并适应模型需求C.替代特征提取步骤D.减少模型训练时间参考答案:B线性回归模型的损失函数通常采用()。A.交叉熵损失B.均方误差(MSE)C.Hinge损失D.0-1损失参考答案:B逻辑回归中Sigmoid函数的作用是()。A.将输出压缩到(0,1)区间表示概率B.计算特征权重C.衡量模型分类误差D.加速梯度下降收敛参考答案:A4.支持向量机(SVM)中,核函数的主要作用是()。A.降低数据维度。B.将数据映射到高维空间以解决非线性问题。C.减少过拟合风险。D.初始化模型参数。参考答案:B5.神经网络中,激活函数(如ReLU)的核心功能是()。A.计算损失函数梯度B.引入非线性变换C.归一化输入数据D.防止梯度爆炸参考答案:B6.使用OpenCV的实现神经网络分类任务时,以下操作的正确顺序是()将原始标签转换为one-hot编码创建ANN_MLP模型对象使用minMaxLoc解析预测结果调用predict()方法进行预测设置网络层结构(setLayerSizes)配置激活函数(setActivationFunction)执行训练(train())划分训练集和测试集A.8→1→2→5→6→7→4→3B.2→5→6→8→1→7→4→3C.8→2→5→6→1→7→4→3D.1→8→2→5→6→7→3→4参考答案:A二、简答题简述机器学习解决分类任务与回归任务的核心差异(从输出类型、模型选择、损失函数三方面说明)。答:分类任务输出离散类别(如“猫”“狗”),回归任务输出连续数值(如成绩、房价)。模型选择上,分类常用逻辑回归、SVM、神经网络配合Softmax/Sigmoid;回归常用线性回归、SVR等。损失函数方面,分类多用交叉熵损失,衡量预测概率与真实标签的差异;回归则用均方误差(MSE),衡量预测值与真实值的平方偏差。三者共同体现两类任务在目标、方法和评价上的本质区别。SVM中“支持向量”的定义是什么?为何说SVM的决策边界仅由支持向量决定?答:支持向量是训练样本中距离分类超平面最近的那些点,它们位于最大间隔边界(即“间隔带”)上。SVM的目标是最大化分类间隔,而这一间隔完全由这些最靠近边界的样本决定。SVM的决策边界(最优超平面)仅由支持向量决定,因为:优化问题的解仅依赖支持向量:SVM通过拉格朗日对偶形式求解,最终模型参数(权重和偏置)仅与支持向量的拉格朗日乘子(非零)有关;非支持向量不影响边界:移除或移动非支持向量(只要不越过间隔带),不会改变决策边界位置。因此,SVM具有稀疏性,模型复杂度取决于支持向量数量而非全部样本。使用OpenCV实现SVM时,需调用哪些核心函数完成训练和预测?答:使用OpenCV实现SVM时,完成训练和预测需调用以下核心函数:(1)创建模型:cv::Ptr<cv::ml::SVM>svm=cv::ml::SVM::create();(2)设置参数(如核函数、C、Gamma等):svm->setKernel(cv::ml::SVM::RBF);svm->setC(1000);svm->setGamma(0.001);(3)训练模型:svm->train(samples,cv::ml::ROW_SAMPLE,labels);其中samples为特征矩阵(cv::Mat),labels为标签向量。(4)进行预测:floatresult=svm->predict(sample);//单样本//或svm->predict(testSamples,predictions);//多样本这些函数构成了OpenCV中SVM训练与预测的核心流程。神经网络中“全连接层”的含义是什么?写出其数学表达式写出其数学表达式(假设输入向量为

x,权重矩阵为

W,偏置为

b)。答:全连接层(FullyConnectedLayer)是指该层中每个神经元都与前一层的所有神经元相连,即每个输出单元接收全部输入并进行加权求和,再加偏置,通常后接激活函数。其数学表达式为:z=Wx+b其中:x∈Rn是输入向量,W∈Rm×n是权重矩阵(m为本层神经元数),b∈Rm是偏置向量,z∈Rm是线性输出(激活前的值)。若引入激活函数f(⋅),则最终输出为y=f(Wx+b)使用OpenCV实现神经网络时,需要调用哪些核心函数或方法来完成以下任务:创建多层感知机(MLP)模型;设置网络层结构(如输入层6节点、隐藏层10节点、输出层3节点);配置激活函数;使用反向传播算法训练网络;对新样本进行预测。答:在OpenCV中使用cv::ml::ANN_MLP实现多层感知机(MLP),核心函数如下:(1)创建MLP模型:cv::Ptr<cv::ml::ANN_MLP>mlp=cv::ml::ANN_MLP::create();(2)设置网络层结构(输入6、隐藏10、输出3):cv::Matlayers=(cv::Mat_<int>(1,3)<<6,10,3);mlp->setLayerSizes(layers);(3)配置激活函数(如ReLU或sigmoid):mlp->setActivationFunction(cv::ml::ANN_MLP::SIGMOID_SYM);//或RELU(4)训练网络(默认使用反向传播,可配合RPROP等):mlp->train(samples,cv::ml::ROW_SAMPLE,labels);其中samples为样本特征矩阵,labels为标签(分类任务需用one-hot编码或整数标签,视训练模式而定)。(5)对新样本预测:floatprediction=mlp->predict(sample);//单样本//或mlp->predict(testSamples,results);//多样本以上步骤完成OpenCV中MLP的构建、配置、训练与预测。三、编程题1.对于程序11.1线性回归算法的代码,修改Predict函数,使其能输出预测值的同时,计算并返回预测值与真实值的绝对误差。voidPredict(doubletheta0,doubletheta1,doublex,doubletrueValue,double*prediction,double*absError){*prediction=theta0+theta1*x;//预测值*absError=fabs(*prediction-trueValue);//绝对误差}对于程序11.2逻辑回归算法的代码,修改Predict函数,使其在返回概率值的同时,根据阈值(默认0.5)输出预测类别(0或1),并计算分类准确率(正确预测样本数/总样本数)。//返回概率值,并通过指针输出预测类别(0或1)doublePredict(doubletheta0,doubletheta1,doubletheta2,doublex1,doublex2,int*predictedClass){doubleprob=1.0/(1.0+pow(E,-(theta0+theta1*x1+theta2*x2)));*predictedClass=(prob>=0.5)?1:0;//默认阈值0.5returnprob;}3、在公共数据网站(如/datasets/)选择并下载自己感兴趣的数据集,使用OpenCv的SVM或神经网络搭建并训练一个模型,并进行预测。第一步:准备数据集下载数据集:访问UCIMachineLearningRepository的鸢尾花数据集页面:/ml/datasets/iris下载iris.data文件。创建CSV文件:在iris.data文件的第一行添加列名(标题行):sepal_length,sepal_width,petal_length,petal_width,class将文件保存为iris.csv。该数据集包含150个样本,4个特征(花萼和花瓣的长度与宽度),以及3个类别(Iris-setosa,Iris-versicolor,Iris-virginica)。第二步:编写OpenCVC++代码以下代码将完成:加载数据、预处理(标签编码)、划分训练/测试集、创建并训练SVM、评估模型、对新样本进行预测。#include<iostream>#include<fstream>#include<sstream>#include<string>#include<vector>#include<opencv2/opencv.hpp>#include<opencv2/ml.hpp>usingnamespacestd;usingnamespacecv;usingnamespacecv::ml;//辅助函数:从CSV文件加载数据boolloadIrisDataset(conststring&filename,Mat&samples,Mat&labels){ifstreamfile(filename);if(!file.is_open()){cerr<<"Error:Couldnotopenfile"<<filename<<endl;returnfalse;}stringline,cell;vector<vector<float>>data;vector<int>target;//跳过标题行getline(file,line);while(getline(file,line)){if(line.empty())continue;stringstreamss(line);vector<float>row;intcol=0;while(getline(ss,cell,',')){if(col<4){//前4列是数值特征row.push_back(stof(cell));}else{//最后一列是类别标签if(cell=="Iris-setosa"){target.push_back(0);}elseif(cell=="Iris-versicolor"){target.push_back(1);}elseif(cell=="Iris-virginica"){target.push_back(2);}}col++;}data.push_back(row);}file.close();//将vector转换为OpenCVMatsamples=Mat(data).clone();labels=Mat(target).reshape(1,target.size()).clone();//转为单列矩阵cout<<"Loaded"<<samples.rows<<"sampleswith"<<samples.cols<<"features."<<endl;returntrue;}intmain(){//1.加载数据Matall_samples,all_labels;if(!loadIrisDataset("iris.csv",all_samples,all_labels)){return-1;}//2.划分训练集和测试集(这里简单按顺序划分,实际应用中建议随机打乱)inttotal_samples=all_samples.rows;inttrain_count=static_cast<int>(total_samples*0.8);//80%用于训练inttest_count=total_samples-train_count;Mattrain_samples=all_samples(Range(0,train_count),Range::all());Mattrain_labels=all_labels(Range(0,train_count),Range::all());Mattest_samples=all_samples(Range(train_count,total_samples),Range::all());Mattest_labels=all_labels(Range(train_count,total_samples),Range::all());//确保数据类型正确train_samples.convertTo(train_samples,CV_32F);train_labels.convertTo(train_labels,CV_32S);test_samples.convertTo(test_samples,CV_32F);//3.创建并配置SVM模型Ptr<SVM>svm=SVM::create();svm->setType(SVM::C_SVC);//用于分类svm->setKernel(SVM::RBF);//使用RBF核函数svm->setC(1.0);//惩罚系数svm->setGamma(0.1);//RBF核参数svm->setTermCriteria(TermCriteria(TermCriteria::MAX_ITER+TermCriteria::EPS,1000,1e-6));//4.训练模型cout<<"TrainingSVMmodel..."<<endl;svm->train(train_samples,ROW_SAMPLE,train_labels);cout<<"Trainingcompleted."<<endl;//5.在测试集上进行预测并计算准确率Matpredictions;svm->predict(test_samples,predictions);intcorrect=0;for(inti=0;i<test_count;i++){intpredicted=static_cast<int>(predictions.at<float>(i,0));intactual=train_labels.type()==CV_32S?test_labels.at<int>(i,0):static_cast<int>(test_labels.at<float>(i,0));if(predicted==actual){correct++;}}doubleaccuracy=static_cast<double>(correct)/test_count;cout<<"TestAccuracy:"<<accuracy*100<<"%"<<

温馨提示

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

评论

0/150

提交评论