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

news2024/9/25 1:21:22

前言

以下问题以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.coloradmin.cn/o/1949903.html

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

相关文章

尚庭公寓开发(二)

任何二进制和子网掩码进行一个与运算 得到是子网ip的话就是属于子网ip的范围 任何数字和一做与运算都是他本身 和0做运算都是0 所以要得到子网ip的话他的前面必须是 192.168.200 最后是0-255之间的范围 0不能取 0是子网本身 255也不能用 因为他是广播地址 真正可以使用 的范…

[数据集][目标检测]躺坐站识别检测数据集VOC+YOLO格式9488张3类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):9488 标注数量(xml文件个数):9488 标注数量(txt文件个数):9488 标注…

Python升级打怪—Django入门

目录 一、Django简介 二、安装Django 三、创建Dajngo项目 (一) 创建项目 (二) 项目结构介绍 (三) 运行项目 (四) 结果 一、Django简介 Django是一个高级Python web框架,鼓励快速开发和干净、实用的设计。由经验丰富的开发人员构建,它解决了web开…

机器学习 | 分类算法原理——感知机

Hi,大家好,我是半亩花海。接着上次的内积继续更新《白话机器学习的数学》这本书的学习笔记,在此分享感知机这一回归算法基础。本章的回归算法基础基于《基于图像大小进行分类》项目,欢迎大家交流学习! 目录 一、感知机…

阿里云-物联网平台-IoT设备MQTT通信

阿里云-物联网平台-IoT设备MQTT通信 登录阿里云物联网平台创建产品添加设备查看设备客户端登录 登录阿里云 阿里云 注册账号,实名认证这些按提示操作即可不在赘述。 物联网平台 选择产品》物联网》物联网平台 进入管理控制台界面 开通服务 选择开通公共实例测试环…

oracle中存储过程的写法

存储过程常规语法: 实际业务例子: CREATE OR REPLACE TRIGGER "TRI_B00_02_ONLY_GUID" BEFORE/AFTER INSERT OR UPDATE OR DELETE ON B00_02 FOR EACH ROW declare t_guid varchar2(300) : ; --GUID t_cnt int : 0; BEGIN t_guid : :NEW…

Oracle核心进程详解并kill验证

Oracle核心进程详解并kill验证 文章目录 Oracle核心进程详解并kill验证一、说明二、核心进程详解2.1.PMON-进程监控进程2.2.SMON-系统监控进程2.3.DBWn-数据库块写入进程2.4. LGWR-日志写入器进程2.5. CKPT-检查点进程 三、Kill验证3.1.kill ckpt进程3.2.kill pmon进程3.3.kill…

Spring MVC笔记

Java 版本: JDK17 Eclipse: eclipse-jee-2023-12-R-win32-x86_64.zip Tomcat 10 JDK17采用springframework 6 *必须考虑兼容性问题&#xff0c;所以JDK 和spring framework不要乱搭配 初步创建Maven Project 安装包 修改poem.xml <dependency><groupId>org.sprin…

Spark实时(五):InputSource数据源案例演示

文章目录 InputSource数据源案例演示 一、​​​​​​​File Source 1、读取text文件 2、读取csv文件 3、读取json文件 二、Socket Source 三、Rate Source InputSource数据源案例演示 在Spark2.0版本之后&#xff0c;DataFrame和Dataset可以表示静态有边界的数据&am…

客户服务知识库最佳实践 7 个步骤

介绍 每个公司的声誉都依赖于其客户。 如果全世界都向你敞开了大门&#xff0c;但你最终在与客户打交道方面做得很糟糕&#xff0c;那么消息就会传出去&#xff0c;无论你的捕鼠器有多好&#xff0c;你都会失去销售。 正如营销依赖于与潜在客户的关系一样&#xff0c;公司的…

【Linux】信号3——信号的捕捉

1.信号的捕捉 我们都说信号被收到了&#xff0c;可能不会立马处理 信号是什么时候被处理的呢&#xff1f; 前提是我们得知道自己收到了信号&#xff0c;进程就得在合适的时候去查自己的pending表和block表&#xff0c;这些属于内核数据结构&#xff0c;进程一定要处于内核态&a…

Easy es问题总结

官网教程&#xff1a;https://www.easy-es.cn/pages/ac41f0/#settings 一 测试项目 1 pom <dependencies><!-- 排除springboot中内置的es依赖,以防和easy-es中的依赖冲突--><dependency><groupId>org.springframework.boot</groupId><artifa…

Java语言程序设计基础篇_编程练习题*15.26 (改变透明度)

*15.26 (改变透明度) 重写编程练习题15.24&#xff0c;当球摆动的时候改变球的透明度 思路&#xff1a;很简单&#xff0c;改写编程练习题15.24&#xff0c;为小圆Circle添加一个FadeTransition&#xff0c;再把暂停和开始方法设置在鼠标事件中 代码示例&#xff1a;编程练习…

基于多种机器学习的豆瓣电影评分预测与多维度可视化【可加系统】

有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主 在本研究中&#xff0c;我们采用Python编程语言&#xff0c;利用爬虫技术实时获取豆瓣电影最新数据。通过分析豆瓣网站的结构&#xff0c;我们设计了一套有效的策略来爬取电影相关的JSON格式数据。…

鸿蒙(HarmonyOS)自定义Dialog实现时间选择控件

一、操作环境 操作系统: Windows 11 专业版、IDE:DevEco Studio 3.1.1 Release、SDK:HarmonyOS 3.1.0&#xff08;API 9&#xff09; 二、效果图 三、代码 SelectedDateDialog.ets文件/*** 时间选择*/ CustomDialog export struct SelectedDateDialog {State selectedDate:…

【数据结构初阶】单链表经典算法题十二道——得道飞升(上篇)

目录 1、移除元素 2、反转链表 3、链表的中间节点 4、合并两个有序链表 Relaxing Time&#xff01;&#xff01;&#xff01; ———————————————— 天气之子幻 ———————————————— 1、移除元素 思路&#xff1a; 创建一个新链表&#xff0…

CPU350% JVM GC频繁并GC不掉EXCEL导出

背景&#xff1a; 有个Excel导出的需求&#xff0c;测试的时候&#xff0c;只要连续导出大量的数据就会导致FAT机器反请求反应迟钝&#xff0c;甚至卡死&#xff0c;无法恢复。 排查&#xff1a; 1 跳板机跳到机器上&#xff0c;查看 项目 ipd 执行ps -ef | grep 项目名称.j…

FFmpeg音视频流媒体的顶级项目

搞音视频、流媒体的圈子,没法躲开ffmpeg这个神级项目。 FFmpeg 是一个功能强大且广泛使用的多媒体处理工具。FFmpeg 具备众多出色的特性。它支持多种音频和视频格式的转换,能轻松将一种格式的文件转换为另一种,满足不同设备和应用的需求。不仅如此,它还可以进行视频的裁剪、…

机械学习—零基础学习日志(高数11——三角函数)

零基础为了学人工智能&#xff0c;真的开始复习高数 三角函数之所以比较困难&#xff0c;是因为过于抽象&#xff0c;距离生活太过遥远&#xff0c;这里搜集一些资料&#xff0c;帮助大家能加深对三角函数的理解。 三角函数作用——能测距离 三角函数从应用层&#xff0c;开…