1.请用MATLAB优化工具中的fminuc求解器解决下列带非线性约束的规划问题。
2.如果第1题中的目标函数改为最大化,该如何解决?试着再次用MATLAB优化工具来解决。
3.请使用MATLAB优化工具中的fminuc求解器解决下列问题:
4.在多元线性回归中,如果输入特征的量纲不同即特征的取值范围相差很大,那么会对模型造成什么影响?
5.sklearn.datasets模块包含许多可供使用的数据集
,下面请使用datasets的diabetes和linnerud数据集分别训练多元线性回归模型,输出模型参数并在测试集中对其进行评价。
6.已知火灾面积与诸多因素有关
,收集的数据如表3.8所示。
表3.8 火灾数据表(部分)
请下载完整的数据表forestfires.csv
,结合下述代码训练一个能够预测火灾面积的线性回归模型。
注意: 使用pandas包导入csv文件时默认的变量类型为dataframe。在Jupyter和Spyder的变量窗口中可以相当方便地查看dataframe数据,请读者善加利用。
7.Ridge回归通过在风险函数中加入__________项,从而缓解__________。
8.评估一个计算机CPU的相对性能可以根据计算机时钟周期、内存容量、Cache容量等来估计,下面收集了计算机的相对性能(ERP)与上述特征的数据表,如表3.9所示。
表3.9 计算机相对性能与特性(部分)
请下载数据machine_perform.xlsx,训练一个多元线性回归模型并对其进行评价,必要时可以使用Ridge回归。
提示: 用pandas读取XLSX文件的代码为pandas.read_excel(r'文件路径')。
9.如图3.25所示,试判断哪几个样本是线性可分的?
10.XOR(异或)属于线性可分问题吗?可否用线性分类器?为什么?
11.在图3.25中,哪些数据集可以用逻辑回归进行分类?
图3.25 问题9的样本
12.逻辑回归属于__________分类器,适用于解决线性__________(可分/不可分)问题,在误差允许的条件下,也可以解决__________问题。
13.请画出3.4.4节中准确率-回报率曲线。
14.KNN算法属于__________(线性/非线性)分类器。
15.在3.4.4节的案例中,阈值b应如何确定?
16.使用逻辑回归解决2.5.3节中的军团识别问题。
17.使用Sklearn模块里datasets包中内置的数据集breast_cancer训练一个用于乳腺癌诊断的逻辑回归模型,选择合适的阈值b并进行评价。
18.请用以下代码产生90∶10的比例的数据集,并使用至少10种方法解决类别不均衡问题。同时尝试画出处理后的数据。
X,y=make_classification(n_samples=1000,n_features=2, n_redundant=0,weights=(0.90,0.10),random_state=37)
19.机器学习在医学中的一个重要应用为假定诊断。例如,在2020年新型冠状病毒的诊断中,为了降低医院工作者的负担,一些学者们提出了用机器学习的方法,根据疑似患者的一些病理特征,如体温、是否恶心、是否疼痛等来预断病人是否患病。为了训练出机器学习模型,学者们收集了诸多患者数据,如表3.10所示。
表3.10 新型冠状病毒患者数据(部分示例)
请下载数据diagnosis.xlsx,设计一个逻辑回归模型并在测试集上进行评价。
提示: 先将(yes,no)转为(1,0),实现代码见code_in_q19。
20.什么是类别不均衡?会造成什么样的后果?解决方法有哪些?
21.在3.4.5节的欠采样实例中,可以看到多数类个体数从942降低到了826,虽然如此,数据集还是存在严重的不均衡问题,有些读者可能会想到通过重复多次欠采样来降低多数类个体数。请思考这样做可行吗?请提出自己的解决方案。
22.已知给汽车评分可以从价格、汽车大小和性能等指标入手,评价一辆车是否物有所值。现在收集的数据如表3.11所示。
表3.11 汽车评价数据(部分)
各变量的取值范围为:总体价格和保养要求为(low, med, high, vhigh);车门数为(2,3,4,5more);核载人数为(2,4,more);车厢大小为(small, med, big);安全性为(low, med,high);评分为(unacc, acc, good, vgood)。
请下载数据集car.xlsx,训练一个多分类逻辑回归模型。数据处理部分的参考代码如下。
#使用pandas读取文件,注意修改路径 cars_df=pd.read_excel(r'D:\桌面\我的书\chapter03\数据集\car.xlsx') #定义字典,用于替换文字 buying_maint_safety={'low':0,'med':1,'high':2,'vhigh':3} doors={'5more':5} persons={'more':6} boot={'small':0,'med':1,'big':2} cars_df['总体价格']=cars_df['总体价格'].replace(buying_maint_safety) cars_df['保养要求']=cars_df['保养要求'].replace(buying_maint_safety) cars_df['安全性']=cars_df['安全性'].replace(buying_maint_safety) cars_df['车门数']=cars_df['车门数'].replace(doors) cars_df['核载人数']=cars_df['核载人数'].replace(persons) cars_df['车厢大小']=cars_df['车厢大小'].replace(boot) cars=np.array(cars_df)