机器学习笔记-02-基础线性算法认识(问题-解答自查版)

前言

以下问题以Q&A形式记录,基本上都是笔者在初学一轮后,掌握不牢或者频繁忘记的点

Q&A的形式有助于学习过程中时刻关注自己的输入与输出关系,也适合做查漏补缺和复盘。

本文可以让读者用作自查,答案在后面,需要时自行对照。


问题集

Q1:奥卡姆剃刀原理?

Q2:KNN的思想?欠拟合和过拟合在KNN中的体现?

Q3:这里尝试把for输出的数经过distance计算,存储到一个数组里面去

distance =  np.sqrt( (i-data_new)[0] ** 2 + (i-data_new)[1] ** 2 )  for i in data_X  ,哪里有错误?

Q3.1:我通过sklearn中的什么函数可以生成自定义的这种数据集?(答案中有代码,生成数据集的常用方式)

Q4:利用sklearn的库进行KNN分类,其X_train,y_train 和 data_new 的数据类型分别是什么?

Q5:这两个方法分别是干什么用的?哪些数据会使用到这类函数?

Q6:数据集切分的用法?

Q7:有一段KNN算法代码:

from sklearn.neighbors import KNeighborsClassifier
knn_classifier = KNeighborsClassifier(n_neighbors=3,weights='distance',p=2
)

这段代码中的 weights='distance',    p=2 分别代表什么意思?

Q8:什么是网格搜索?

Q9:通过sklearn划分数据集?其中最主要的函数是哪个?

Q10:模型评估的以下几个函数中 .fit 方法应该在哪个位置?简单得到score的方法?模型评估的底层实现?

        from sklearn import datasets

        from sklearn.model_selegtenimport train_test_split

        from sklearn.neighbors import KNeighborsClassifier

        from sklearn.metrics import accuracy_score

Q11:如何使用sklearn的库进行超参数搜索?(一句话,用什么接口进行网格搜索?)

Q12:归一化有关问题:StandardScaler

        1)最大最小值归一化;零均值归一化?

        2)StandardScaler 工具的使用?

        3)陷阱:测试集如何进行归一化

Q13:knn中分类问题转化为回归问题,决策规则由分类表决变成了均值法,why?

Q14:knn的印象?优缺点?


线性算法(线性模型):

Q15:其中三者分别属于分类任务还是狭义的回归任务?这两类任务有何不同?

Q16:data = datasets.load_iris() 如何取data的前20个数据样本?是不是 data[:20] ?

Q17:最小二乘法是不是一种投票表决?

Q18:最小二乘法的核心代码?(有足够印象即可)

Q19:.reshape(-1,1) 的核心含义是什么?为什么这里写一个 -1 ?

Q20:MSE和RMSE?这俩一般用模型评估吗?

Q21:R2 具体的好处?

Q22:多项式回归的本质?

Q23:如果在 plt.plot(x,y) 中,x是乱序的,怎么办?(假设之前有 y=x**2+3 已经一一对应上)

Q24:model.coef_ , model.intercept_ 分别是什么意思

Q25:对于model = LinearRegression() 多项式回归,可以多用一下 model.predict(X_new) 方法

注意 X_new 应是一个列向量

Q26:sklearn中,多项式回归的API?  其中的一个参数是degree,代表什么?

Q27:逻辑回归

Q28:逻辑回归中的 “正则化” 是什么意思?(regularization)

Q29:多分类问题:OvO和OvR,大致思想是什么


 


参考解答

Q1:奥卡姆剃刀原理?

A1:简单的东西才是最好的;

Q2:KNN的思想?欠拟合和过拟合在KNN中的体现?

A2:

Q3:这里尝试把for输出的数经过distance计算,存储到一个数组里面去

distance =  np.sqrt( (i-data_new)[0] ** 2 + (i-data_new)[1] ** 2 )  for i in data_X  ,哪里有错误?

A3:这里需要将中括号括起来,否则 distance 不是一个数组

distance =  [ np.sqrt( (i-data_new)[0] ** 2 + (i-data_new)[1] ** 2 )  for i in data_X ]

ps,这个语法和基本的创建数组是一样的: a = [ x for x in range(0,3) ]

Q3.1:我通过sklearn中的什么函数可以生成自定义的这种数据集?(答案中有代码,生成数据集的常用方式)

A3.1:生成几个blob数据聚集,并用散点图表示(using sklearn.datasets.make_blobs()

from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt# 设置随机种子以获得可重复的结果
random_state = 42# 生成三个blob数据
# centers: 每个blob的中心点
# cluster_std: 每个blob的标准差,控制blob的扩散程度
centers = [[-5, 5], [0, 0], [5, -5]]
cluster_std = [1.5, 0.5, 1.0]# 生成数据
X, y = make_blobs(n_samples=300, centers=centers, cluster_std=cluster_std, random_state=random_state)# 可视化生成的数据
plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap='viridis')
plt.title('Generated Blobs')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.show()

Q4:利用sklearn的库进行KNN分类,其X_train,y_train 和 data_new 的数据类型分别是什么?

A4:X_train,y_train 特别的用大小写做了区分,一般X_train是切分后的训练集的数据,y_train是训练集的tag

而 data_new 是一个 ndarry 形式,或者是 ndarry 数组形式的,准备对齐进行分类的数据

Q5:这两个方法分别是干什么用的?哪些数据会使用到这类函数?

A5:打乱数据。需要注意的是,一般我们不会去破坏X和y,打乱的时候我们主要还是尝试去打乱

Q6:数据集切分的用法?

A6:

Q7:有一段KNN算法代码:

A7:

对于参数weight

        'uniform':所有邻居的权重相同,不考虑它们与查询点的距离。

        'distance':权重与距离成反比,即距离查询点越近的邻居对最终决策的影响越大。

对于参数 p(明氏距离):

        当p = 1时,使用的是曼哈顿距离(Manhattan distance),也称为城市街区距离,适用于各个维度的数值差异。(二维就是x+y,走直线)

        当p = 2时,使用的是欧几里得距离(Euclidean distance),这是最常见的距离度量方式,适用于连续数据。

        当p值更大时,更注重远距离的影响,即距离查询点较远的邻居对决策的影响更大。p→∞时叫切比雪夫距离。

Q8:什么是网格搜索?

A8:

Q9:通过sklearn划分数据集?其中最主要的函数是哪个?

A9:train_test_split

        X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

        testsize:训练集的占比,这个也同样可以用 train_size 进行代替

        X 是特征数据集。

        y 是目标变量,即标签数据。

        random_state 代表随机数 seed

Q10:模型评估的以下几个函数中 .fit 方法应该在哪个位置?简单得到score的方法?模型评估的底层实现?

A10:knn分类中如果要做预测,直接在实例化分类器之后 fit 即可

简单方法:可以直接对 classifier.score 进行查询。模型评估的本质就是 check 验证集的predict结果和real结果的相同比例

Q11:如何使用sklearn的库进行超参数搜索?(一句话,用什么接口进行网格搜索?)

A11:scikit-learn(简称sklearn)中,进行超参数搜索时,通常不会直接使用测试集数据

超参数搜索中,GridSearchCV即网格搜索,其实就是遍历所有的params_grid组合(内部嵌套几个for循环实现)

可以注意到,params_grid要求以字典形式定义,其中的诸多变量应该以“可迭代”的变量类型出现,以便可枚举。

sklearn中,可以使用 GridSearchCV RandomizedSearchCV 等工具来进行超参数搜索,它们都内置了交叉验证机制,可以在不使用测试集的情况下帮助找到最佳的超参数组合。一旦确定了最佳超参数,就可以使用整个训练集(包括之前用作验证集的部分)来训练最终模型,然后使用测试集来评估其性能。

Q12:归一化有关问题:StandardScaler

A12:在进行训练集

1)X-min / max-min; X-μ / σ; 这里的 μ 可以通过 np.mean 求得,σ可以通过 np.std 获得

2)关键编码:

from sklearn.preprocessing import StandardScaler

standard_scaler = StandardScaler()    # 实例化

standard scaler.fit(X)

x_train=standardScaler.transform(x_train)# 归一化

3)陷阱问题:

Q13:knn中分类问题转化为回归问题,决策规则由分类表决变成了均值法,why?

        K-近邻(K-Nearest Neighbors, KNN)算法是一种基于实例的学习算法,它通过测量不同特征值之间的距离来进行分类或回归。在KNN中,分类问题和回归问题的处理方式略有不同,但基本原理相似。

1. KNN分类问题
        在KNN分类问题中,决策规则通常是“多数投票”(majority voting)。这意味着算法会找出测试样本的K个最近邻居,然后根据这些邻居的类别来进行投票,选择出现次数最多的类别作为测试样本的预测结果。

2. KNN回归问题
        在KNN回归问题中,决策规则变为计算这些K个最近邻居的输出值的均值。这是因为在回归问题中,我们的目标是预测一个连续值,而不是分类问题中的离散标签。均值法可以提供一个平滑的预测值,它考虑了所有邻居的影响,而不是简单地选择一个类别。

Q14:knn的印象?优缺点?

A14:knn是奥卡姆剃刀原理的一个典例,简单粗暴;

问题是k难以确定,其计算量和存储要求都比较大,对于新数据到每个样本的d都必须求

Q15:线性算法中,三者分别属于分类任务还是狭义的回归任务?这两类任务有何不同?

A15:其中线性回归、多项式回归属于狭义的回归任务(找线),逻辑回归属于分类任务

Q16:data = datasets.load_iris() 如何取data的前20个数据样本?是不是 data[:20] ?

A16:# data.data 是一个二维数组,其中每一行代表一个样本的所有特征

        data_samples = data.data[:20]

Q17:最小二乘法是不是一种投票表决?

A17:最小二乘法并不是一种投票表决机制,而是一种数学优化技术。它主要用于统计学和数据分析中,用于拟合数据到一个数学模型。

Q18:最小二乘法的核心代码?

A18:

首先 x,y 经过预处理:

(array([5.1, 4.9, 4.7, 4.6, 5. , 5.4, 4.6, 5. , 4.4, 4.9, 5.4, 4.8, 4.8, 4.3, 5.8, 5.7, 5.4, 5.1, 5.7, 5.1]), array([1.4, 1.4, 1.3, 1.5, 1.4, 1.7, 1.4, 1.5, 1.4, 1.5, 1.5, 1.6, 1.4, 1.1, 1.2, 1.5, 1.3, 1.4, 1.7, 1.5]))

之后编码:

x_mean = np.mean(x)
y_mean = np.mean(y)# 计算a的分子和分母
a_top = sum((xi - x_mean) * (yi - y_mean) for xi, yi in zip(x, y))
a_bottle = sum((xi - x_mean) ** 2 for xi in x)# 计算斜率a和截距b
a = a_top / a_bottle
b = y_mean - a * x_mean

Q19:.reshape(-1,1) 的核心含义是什么?为什么这里写一个 -1 ?

A19:

Q20:MSE和RMSE?这俩一般用模型评估吗?

A20:MSE(均方误差,Mean Squared Error)和RMSE(均方根误差,Root Mean Squared Error)都是衡量一个模型预测值与实际观测值之间差异的统计量,常用于评估回归分析中的模型性能。不过更重要的,MSE/RMSE和MAE一起更容易被当做loss函数使用

Q21:R2 具体的好处?

A21:R^2也是模型评估方法,消除了量纲上的影响,不与本身取值大小相关,实现了归一化;

并且正相关,可以判定有多么拟合。R2结果越大越好

甚至于,说sklearn线性回归模型,自带的模型评价方法就是r方

Q22:多项式回归的本质?

A22:转换成了有两个特征的线性回归的式子,多项式回归的本质就是为样本多添加一些特征进行升维

具体思路就是将式子中的x平方看成是一个特征x1将x看成是另一个特征x2...

之后就用线性回归的思路

Q23:如果在 plt.plot(x,y) 中,x是乱序的,怎么办?(假设之前有 y=x**2+3 已经一一对应上)

A23: plt.plot(np.sort(x),  y[ np.argsort(x) ])

Q24:model.coef_ , model.intercept_ 分别是什么意思

A24:回归代码。

model.coef_:

这是模型的系数(coefficients)向量k,它包含了线性模型中每个特征的权重。

model.intercept_:

这是模型的截距项(intercept)b,它代表了当所有特征都为零时,模型预测的目标值。

Q25:对于model = LinearRegression() 多项式回归,可以多用一下 model.predict(X_new) 方法

注意 X_new 应是一个列向量

A25:

对于多项式回归,可以多用一下.predict方法

Q26:sklearn中,多项式回归的API?  其中的一个参数是degree,代表什么?

A26:PolynomialFeatures(degree=N)  表示的是我们要为原来的这个数据样本添加最多几次幂相应的特征

Q27:逻辑回归

A27;逻辑回归方法对于二分类就是一个固定损失函数公式的方法,如下图。多分类时考虑OvO或者OvR

        逻辑回归最主要是一个带特征权重的回归方法,在机器学习和深度学习的背景下,都非常常用!

        逻辑回归本身是个线性分类器,特长是二分类。对每个样本,分类1和2各自的概率 p1 p2 会通过式子求出

Q28:逻辑回归中的 “正则化” 是什么意思?(regularization)

A28:在原有的损失函数上加点东西不就行了吗,就是这么朴素的思想。起了个名字 regularization,

会让模型变得更加的稳定从而有效的避免过拟合现象,过滤掉不靠谱的特征。正则化的模型称之为范式,有L1正则化和L2正则化,其中L2-ridge回归更加平滑

Q29:多分类问题:OvO和OvR

A29

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/49180.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

跟《经济学人》学英文:2024年07月20日这期 At last, Wall Street has something to cheer

At last, Wall Street has something to cheer 华尔街终于有值得欢呼的事情了 at last:终于;最后; Consumer banks, on the other hand, are starting to suffer 原文: Capital markets are twitchy. When interest rates spi…

数据危机!4大硬盘数据恢复工具,教你如何正确挽回珍贵记忆!

在这个数字化的时代,硬盘里的数据对我们来说简直太重要了。但糟糕的是,数据丢失这种事时不时就会发生,可能是因为不小心删了,硬盘坏了,或者中了病毒。遇到这种情况,很多人可能就慌了,不知道怎么…

货架管理a

路由->vue的el标签->Api->call方法里calljs的api接口->数据声明const xxxData-> 编辑按钮:点击跳出页面并把这一行的数据给到表单formDataba2 保存按钮:formDataba2改过的数据->xxApi发送->查询Api 跳转仓库:把tableData.value数据清空->callXxxAp…

Windows环境下安装Redis并设置Redis开机自启

文章目录 0. 前言1. 下载 Windows 版本的Redis2. 为 Redis 设置连接密码(可选)3. 启动 Redis4. 设置 Redis 开机自启4.1 将 Redis 进程注册为服务4.2 设置 Redis 服务开机自启4.3 重启电脑测试是否配置成功4.4 关闭 Redis 开机自启(拓展&…

Typora笔记上传到CSDN

1.Typora 安装 Typora链接:百度网盘 提取码:b6d1 旧版本是不需要破解的 后来的版本比如1.5.9把放在typora的根目录下就可以了 2.上传到CSDN 步骤 csdn 写文章-使用MD编辑器-导入本地md文件即可 问题 图片没法显示 原因 图片的链接是本地的 当然没法…

Ubuntu 24 PXE Server bios+uefi 自动化部署esxi 6 7 8

pxe server 前言 PXE(Preboot eXecution Environment,预启动执行环境)是一种网络启动协议,允许计算机通过网络启动而不是使用本地硬盘。PXE服务器是实现这一功能的服务器,它提供了启动镜像和引导加载程序,使得客户端计算机可以通过网络启动并安装操作系统或运行其他软件…

java学习记录09:Lambda表达式与引用

Lambda表达式 例子: (o1,o2) -> Interger.compare(o1,o2); 格式: -> : lambda操作符 -> 的左边: lambda形参列表,对应着要重写的接口中的抽象方法的形参列表。 ->的右边:lamb…

python编程表白爱心代码,来自程序员的浪漫!

Python爱心表白代码 感觉的紫色要更加浪漫&#xff0c;其中的文字也是可以直接更改的&#xff0c;非常方便 <文末附带精品籽料> 改变爱心的颜色: 在源代码的13-15行位置&#xff0c;可以通过更改16进制颜色色值进行改变爱心的颜色&#xff0c;这里小编改了一点绿色&…

阶层差异下的社会角色与认知逻辑

阶层差异下的社会角色与认知逻辑 在中国传统文化中&#xff0c;有句古话&#xff1a;“仗义每从屠狗辈&#xff0c;负心多是读书人。”这句话揭示了不同社会阶层的人&#xff0c;在认知和行为上存在的差异。 社会底层&#xff1a;道德与情感的坚守者 社会底层人群&#xff0c…

05 循环神经网络

目录 1. 基本概念 2. 简单循环网络 2.1 简单循环网络 2.2 长程依赖问题 3. 循环神经网络的模式与参数学习 3.1 循环神经网络的模式 3.2 参数学习 4. 基于门控的循环神经网络 4.1 长短期记忆网络 4.2 LSTM网络的变体网络 4.3 门控循环单元网络 5. 深层循环神经网络…

ios 企业签名证书购买_iOS苹果企业签名须知

很多用户在初次或者说是已经使用过苹果签名服务的都会就直接问别人多少钱&#xff0c;那这个到底是多少钱合理呢&#xff1f;就目前市场上来讲这个价格太多了最低的有100元最高的也有1000元的或是更高的&#xff0c;是不是价格高的就贵呢&#xff1f; 在这想告诉大家其实不贵&…

【MySQL进阶之路 | 高级篇】数据库调优

1. 调优的目标 尽可能节省系统资源&#xff0c;以便系统可以提供更大负荷的服务。合理的结构设计和参数调整&#xff0c;以提高用户操作响应的速度。减少系统的瓶颈&#xff0c;提高MySQL数据库整体的性能。 2. 如何定位调优的问题 不过随着用户量的不断增加&#xff0c;以及…

PCL Local Surface Patches 关键点提取

目录 一、算法原理1、算法原理2、 参考文献二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 1、算法原理 主曲率是某一点局部形状的体现,Local Surface Patches 关键点检测法…

深入理解计算机系统 CSAPP 家庭作业11.7

静态内容是指在不同请求中访问到的数据都相同的静态文件。例如&#xff1a;图片、视频、网站中的文件&#xff08;html、css、js&#xff09;、软件安装包、apk文件、压缩包文件等。 /** get_filetype - derive file type from file name*/ void get_filetype(char *filename,…

Pytorch使用教学3-特殊张量的创建与类型转化

1 特殊张量的创建 与numpy类似&#xff0c;PyTorch中的张量也有很多特殊创建的形式。 zeros:全0张量 # 形状为2行3列 torch.zeros([2, 3]) # tensor([[0., 0., 0.], # [0., 0., 0.]])ones:全1张量 # 形状为2行3列 torch.ones([2, 3]) # tensor([[1., 1., 1.], # …

「12月·长沙」第四届机器人、自动化与智能控制国际会议(ICRAIC 2024)

随着科技的飞速发展&#xff0c;智能机器人在当今社会的重要性愈发凸显。从制造业的自动化生产线&#xff0c;到医疗领域的手术机器人&#xff0c;再到家庭生活中的智能助手&#xff0c;机器人与人工智能的融合正在改变着我们的生产和生活方式。第四届机器人、自动化与智能控制…

Docker(十)-Docker运行elasticsearch7.4.2容器实例以及分词器相关的配置

1.下载镜像 1.1存储和检索数据 docker pull elasticsearch:7.4.2 1.2可视化检索数据 docker pull kibana:7.4.22.创建elasticsearch实例 创建本地挂载数据卷配置目录 mkdir -p /software/elasticsearch/config 创建本地挂载数据卷数据目录 mkdir -p /software/elasticse…

后端面试题日常练-day05 【Java基础】

题目 希望这些选择题能够帮助您进行后端面试的准备&#xff0c;答案在文末 在Java中&#xff0c;以下哪个关键字用于表示方法重写&#xff08;Override&#xff09;&#xff1f; a) override b) overrule c) overwrite d) supercede Java中的HashMap和Hashtable有什么区别&am…

Spark SQL----Sampling Queries采样查询

Spark SQL----Sampling Queries采样查询 一、描述二、语法三、例子 一、描述 TABLESAMPLE语句用于对表进行采样。它支持以下采样方法&#xff1a; TABLESAMPLE&#xff08;x行&#xff09;&#xff1a;将表格向下采样到给定的行数。TABLESAMPLE&#xff08;x百分比&#xff0…

IEC104转MQTT网关支持将IEC104数据转换为华为云平台可识别的格式

随着智能电网和物联网技术的深度融合&#xff0c;传统电力系统中的IEC104协议设备正逐步向更加开放、智能的物联网体系转型。华为云作为全球领先的云计算和AI服务提供商&#xff0c;其物联网平台为IEC104设备的接入与数据处理提供了强大的支撑。本文将探讨IEC104转MQTT网关在MQ…