小木的机器学习日记——KNN

各种AI的调试日记——辅助工作篇 记录使用各种AI(语言大模型)的心得和总结 阅读详情

核心知识点总结与星级排序

我为你梳理了这节课的精髓,并按照重要性进行了星级评定(★★★★★为最高)。

★★★★★ 核心思想:回归 (Regression) 到底是什么?
  • 是否关键:是
  • 必须了解:是
  • 必须记住:是

小白为你讲解:

我们再来巩固一下这个最最基本的概念。

分类(Classification):做 “判断题” 或 “选择题”。结果是离散的类别。比如:这封邮件是 “垃圾邮件” 还是 “非垃圾邮件”?这张图片是 “猫”、“狗” 还是 “鸟”?

回归(Regression):做 “填空题”。结果是一个连续的具体数值。比如:这套房子的价格是多少 “万元”?明天的气温是多少 “摄氏度”?

课程中提到 “回归” 这个词翻译得不好,可能会让你觉得困惑,这一点非常真实。你完全不需要纠结于 “回到哪里去”,只需要记住:回归 = 预测一个具体的数值。

【思维与实力提升】

思维提升:在接触任何一个业务问题时,你脑海里要做的第一件事,就是判断它属于 “分类” 还是 “回归”。这个判断决定了你后续所有工作的方向:选择什么模型、用什么评估指标、如何解释结果。这是一个机器学习工程师最基本的 “问题定义” 能力。

硬实力提升:能够清晰地向同事或面试官阐述一个任务是分类还是回归,并解释为什么。例如:“我们要做股价预测。如果目标是预测‘涨’还是‘跌’,这是一个二分类问题;如果目标是预测具体的‘收盘价’,那么这就是一个回归问题。”

★★★★☆ 核心原理:KNN 回归的决策规则 —— 从 “投票” 到 “求平均”
  • 是否关键:是
  • 必须了解:是
  • 必须记住:是

小白为你讲解:

“近朱者赤,近墨者黑” 这个道理在分类和回归中都适用,但具体做法有所不同。

KNN 分类:看新样本的邻居里哪个 “帮派”(类别)的人数最多,就判定新样本属于哪个帮派。这叫分类表决(Majority Vote)。

KNN 回归:不看帮派了,而是询问邻居们 “你们的房价分别是多少?” 然后取一个平均值作为新样本的房价预测。这叫均值法(Averaging)。

课程中还提到了加权均值法(Weighted Average),这对应 SKLEARN 里的weights='distance'参数。其意思很简单:离新样本越近的邻居,他的房价对新样本的参考价值就越大(权重高),离得远的参考价值就小一点(权重低)。这种方法通常比简单求平均更合理。

【思维与实力提升】

思维提升:这让你看到算法设计的灵活性。同一个核心思想(基于距离),可以通过改变最后一步的决策规则,来适配完全不同的任务。这启发我们,在学习新算法时,要重点关注它的两个部分:1. 核心度量 / 假设是什么?2. 最终决策规则是什么?

硬实力提升:掌握 SKLEARN 中 KNeighbors 分类器和 KNeighbors 回归器的区别。能举一反三,看到分类器就能想到可能有对应的回归器,这是非常宝贵的实践经验,能极大提高你自学和解决问题的效率。

★★★★★ 黄金实践:再次被验证的真理 —— 归一化的威力
  • 是否关键:是
  • 必须了解:是
  • 必须记住:是(重要的事情说三遍!)

小白为你讲解:

这节课最精彩的部分,莫过于那个戏剧性的 “翻盘”:

没有归一化,模型在波士顿房价数据集上的表现非常差(得分 0.49)。

加上归一化之后,效果立竿见影,得分飙升到 0.83!

这比任何理论都更有说服力!它再次告诉你:对于 KNN 这种基于距离计算的算法,如果特征之间的尺度(量纲)差异巨大(比如波士顿房价数据里,有犯罪率这种小数值,也有房产税这种大数值),就必须进行归一化!否则,模型就会被那些数值大的特征 “带偏”,完全忽略掉其他特征的信息。

【思维与实力提升】

思维提升:建立一个 “建模 SOP(标准作业流程)” 的意识。在你的流程清单里,“数据预处理 - 特征归一化” 必须是紧跟在 “数据划分” 之后的关键一步。这能让你在 90% 的情况下避免犯低级错误,保证模型有一个良好的起点。

软实力提升:在工作汇报或写论文时,展示 “有归一化” 和 “无归一化” 的对比实验结果,是证明你工作严谨、方法专业的绝佳方式。它能有力地支撑你 “为什么要做数据预处理” 这一环节的必要性。

★★★☆☆ 专家视角:算法的 “天命”——KNN 更适合分类
  • 是否关键:否
  • 必须了解:是
  • 必须记住:否(但理解了会让你更专业)

小白为你讲解:

课程最后提到了一个非常深刻的观点:KNN 虽然能做回归,但它骨子里更像一个 “分类选手”。为什么?

想象一下,KNN 回归的预测值,永远是它邻居们数值的平均值。这意味着,它的预测结果永远不会超过训练数据中出现过的最大值,也永远不会低于最小值。它无法 “创造” 出新的、超出范围的预测。如果房价一直在涨,KNN 是无法预测出一个比历史上所有房价都高的 “新高价” 的。它不具备外推(Extrapolation)的能力。

而分类任务,只需要找到一个正确的 “桶” 把样本放进去就行,对这种数值边界不敏感。

【思维与实力提升】

思维提升:从 “这个算法能做什么” 进化到 “这个算法的优点和局限性是什么”。这是从 “工具使用者” 到 “问题解决专家” 的关键一步。理解每个算法的 “天命”,才能在面对复杂问题时,做出最恰当的技术选型。

软实力提升:当别人都说 “我用 KNN 解决了这个问题” 时,你可以补充一句:“是的,KNN 在这里表现不错。但我们需要注意,由于它的原理是局部平均,对于需要预测未来趋势(可能超出历史范围)的场景,我们可能需要考虑线性模型或其它能进行外推的模型。” 这会让你在团队中显得尤为突出。

必会知识点自查(问题与答案)

现在,让我们用几个问题来检验一下你是否真正掌握了本节课的精髓。

问题 1: 你的老板想让你建立一个模型,根据用户的年龄、收入、历史消费记录,来预测他下个月具体会消费多少金额。请问,这是一个分类问题还是回归问题?


这是一个 >回归问题。因为你的目标是预测一个具体的、连续的数值(消费金额),而不是一个类别(比如“高消费用户”或“低消费用户”)。
 

问题 2: 当 KNN 算法从处理分类任务切换到回归任务时,它的核心决策规则从什么变成了什么?


它的核心决策规则从分类表决(少数服从多数)变成了 求均值(计算K个近邻目标值的平均值)。如果考虑距离影响,则是加权平均值。
 

问题 3: 你在使用 KNN 回归器预测波士顿房价,并且已经将数据分成了训练集X_train和测试集X_test。你将如何正确地使用标准缩放器对数据进行归一化?请描述关键步骤。
正确的步骤如下(这是黄金法则!):

  1. 创建一个`StandardScaler`的实例:`scaler = StandardScaler()`。
  2. 只在训练集上调用`fit_transform`方法,它会计算训练集的均值和标准差,并用它们来转换训练集:`X_train_scaled = scaler.fit_transform(X_train)`。
  3. 只在测试集上调用`transform`方法,它会使用在训练集上计算出的均值和标准差来转换测试集:`X_test_scaled = scaler.transform(X_test)`。
    绝对不能在测试集上再次调用`fit`或`fit_transform`!
     

28、基于图像快速序列视觉呈现(RSVP)的脑机接口特征提取与分类算法综述 本文综述了基于图像快速序列视觉呈现(RSVP)的脑机接口(BCI)中的特征提取与分类算法。RSVP技术通过快速连续呈现图像序列,结合脑电图(EEG)信号分析,实现对目标图像的识别和标记。文章详细介绍了RSVP实验的设计、EEG数据的采集与预处理,并探讨了低信噪比、维度灾难、重叠epoch和不平衡数据集等挑战。针对特征提取,讨论了有监督空间滤波方法(如CSP、xDAWN、LDA波束形成器)的原理和应用。在分类策略部分,涵盖了线性分类技术(如LDA、BLR、LR、SVM)和非线性分类方法(如MLP、CNN)。文 阅读详情

相关推荐

常见的AXI总线仲裁器概述-AXI协议理解(一)

SoC 设计广泛采用共享总线式的片上通信,其中的仲裁器是共享总线的关键技术之一。AMBA AXI 总线协议以高性能、高频率的系统设计为目标,适合高带宽、低延迟的系统设计,可以达到高频率的操作而不需要复杂的总线桥,满足众多部件的接口要求,具备高度灵活的互联结构,并且向后兼容 AHB 和 APB 接口。

Paul 安的博客 1万+

小木的机器学习日记-KNN算法实战

模型学完了,现在我们要用“模拟考卷”(X_test)来测试它,看看它的预测结果(y_predict)和“真实答案”(y_test)相差多少。你把“课本”(X_train)和“标准答案”(y_train)交给模型,它就会去学习其中的规律。观察原始的y向量,你会发现它是[0,0,...,0, 1,1,...,1, 2,2,...,2]这样。在本文中,我们会对关键的函数和概念进行星级评定,帮助你快速识别哪些是必须牢记的,哪些是了解即可。: 这是理解随机化核心思想的好方法,但在实战中,我们有更方便的“瑞士军刀”。

GetOver_的博客 923

LWIP协议栈在STM32H7上的内存优化实战:如何用32KB RAM实现稳定千兆以太网通信

本文深入探讨了在STM32H7微控制器上,如何通过内存优化策略,在仅32KB的D2 SRAM中稳定运行LWIP协议栈以实现千兆以太网通信。文章详细分析了STM32H7的内存架构、LWIP的内存消耗瓶颈,并提供了从描述符表与PBUF池精确分配、链接脚本修改到MPU区域划分的一整套实战优化方案,旨在解决大数据量传输卡死等常见配置问题。

gg901的博客 604

小木的机器学习日记——线性回归算法-1

今天,我们为线性算法这一章的学习绘制了一幅清晰的地图。你已经理解了它“顺势而为”的深刻哲学,认识了它庞大的家族成员,也预览了即将掌握的硬核工具。记住,线性算法不仅是机器学习的基石,更是后续理解SVM、神经网络等更复杂模型的钥匙。请带着这份全局视野,和我一起,正式踏入线性算法的奇妙旅程吧!大家加油!

GetOver_的博客 1043

ADS 2013安装教程

1.2013和2014安装过程是一样的,运行ads2013_06_shp_windows文件进行安装 2.点击“NEXT”。 3.选择I accept,然后点击“NEXT”。 4.选择“complete”,然后点击“NEXT”。 5.选择安装路径,最好默认安装路径,安装路径不要有中文,然后点击“NEXT”。 6.点击“NEXT”. 7.如下路径默认安装,然后点击“NEXT”。 8.点击“NEXT”。 ...

谢谢关注“小鱼教你模数电”,各平台同号 6009

解锁全志T113-i隐藏技能:用RISC-V核跑实时系统比STM32还稳?

本文深入探讨了全志T113-i SoC的异构架构潜力,重点解析如何利用其内置的玄铁C906 RISC-V核心独立运行实时系统。通过对比传统MCU与Linux方案,文章提供了从RISC-V核心启动、FreeRTOS移植到与Linux主核进行高效异构通信的完整实战指南,为工控等需要兼顾丰富应用与硬实时控制的场景提供了高集成度的单芯片解决方案。

ansible6ops的博客 494

给Agent写测试-工具调用的回归怎么保

本文提出“测行为不测文字”的三层测试防线,解决 Agent 工具调用回归难题:第一层工具单测(纯函数);第二层循环集成测,通过 mock 模型断言工具调用、参数与回填的正确性;第三层评测集,固定问答对对比行为快照。代码演示了最小可运行测试,强调断言行为而非模型输出,确保提示词改动可安全合并。

D_ENG_F的博客 218

基于PSINS的INS/NHC/ODO组合导航仿真全解析

组合导航通过多传感器融合克服单一导航系统的局限,是车辆自主定位的关键技术。其中惯性导航(INS)依靠陀螺仪与加速度计积分推算运动状态,但误差随时间累积;GNSS提供绝对位置,却在城市峡谷中易受多径效应和遮挡影响导致定位漂移。卡尔曼滤波作为信息融合核心,将不同量测按统计特性加权,实现优势互补。基于PSINS开源工具箱搭建的SINS/GNSS/ODO/NHC组合导航仿真,能够在GNSS失锁条件下利用非完整约束和里程计抑制惯性误差发散,广泛应用于无人驾驶、物流车辆自主定位等场景。本文围绕PSINS仿真环境,详细拆

weixin_29044713的博客 253

Kotlin——Shared mutable state and concurrency

当使用多个协程操作变量,且未进行同步时,并不能得到正确的值。

松仔Log的博客 341

ESP32-CAM搭建Arduino及简单使用

配置环境 方法一 文件 → 首选项 http://wechat.doit.am/package_esp8266com_index.json https://dl.espressif.com/dl/package_esp32_index.json 工具 → 开发板 → 开发板管理器 等待安装 方法二 https://github.com/espressif/arduino-esp32 Arduino安装目录下,找到hardware文件夹 建立文件夹espressif,然后在里面再建立一个esp32文件夹

Ying的博客 2万+

Nvidia Orin Driveos Camera 介绍及调试详解

自动驾驶-nvidia orin driveos Camera 驱动详解及调试

u011803281的博客 2992

Kotlin中级——Coroutine exceptions handling

当协程用作根协程时。

松仔Log的博客 224

2015年高教社杯全国大学生数学建模竞赛 A 题:《太阳影子定位》真题解析与 MATLAB 解决方案

🏆 本文已收录于专栏:《滚雪球学数学建模(含历年真题)》,持续更新最新及历年数学建模竞赛资料,每篇内容力求做到“问题讲透、模型讲清、代码可用、论文可参考”,帮助你从零开始逐步建立完整的数学建模知识体系。

**My Coding Family** 1357

Android 开发入门实践(二):Kotlin 空安全,从可空类型到安全访问

延续 NewsApp 项目中的新闻标题练习,记录 Kotlin 安全调用。

Easyhood的博客 290

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Android 开发入门实践(五):从 Kotlin 类与对象到新闻数据模型

本文记录了在NewsApp项目中学习Kotlin类与对象的全过程:从声明空类、创建对象,到添加属性、使用构造函数与默认参数,最终通过data class和copy()实现新闻数据模型的构建。重点区分了类与对象、参数与属性的概念,掌握了修改原对象与复制新对象的区别,并将新闻列表接入Jetpack Compose显示标题,深化了对数据封装与可变性的理解。

Easyhood的博客 229

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

kotlin中闭包特性

Kotlin 闭包允许函数捕获并修改外部作用域的变量,通过 Ref 包装类实现,比 Java 的“仅读取 final 变量”更灵活。闭包是函数式编程(如柯里化、高阶函数)的基础,但修改捕获变量不保证线程安全,需手动同步(如 Mutex、Atomic)。Java 限制修改捕获变量以避免并发陷阱,而 Kotlin 将选择权交予开发者:语法自由,责任自担。

YB1375的专栏 217

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Kotlin中级——Select expression

select的onReceive允许从2个channel中获取值。

松仔Log的博客 267

Gson + Kotlin 数据类的空安全陷阱:一次线上 NPE 崩溃的完整分析与修复

服务端返回 {"provinceName": null, ...}│▼Gson 反射赋值,绕过主构造函数和空检查│▼data.provinceName 实际是 null(但类型仍标记为非空 String)│▼主线程 lambda 拿着这个"假的非空值"传给非空参数│▼Intrinsics.checkNotNullParameter 抛出 NPE,主线程崩溃项目内容崩溃现象根本原因Gson 反射赋值绕过 Kotlin 构造函数与空检查,服务端返回显式null。

学习的最佳方式,就是把它写下来! 211

Kotlin与Java虚拟机四:函数

Kotlin 中函数是“一等公民”,使用 fun 声明,支持表达式函数体、默认参数、命名参数和可变参数(vararg)。函数可位于顶层(编译为静态方法)、局部或类中。无返回值时类型为 Unit,尾递归优化可避免栈溢出。本章还介绍了函数的灵活性与可读性提升特性,为后续高阶函数打下基础。

canfeit的专栏 179

Kotlin与Java虚拟机三:控制流

Kotlin 控制流以表达式为核心,if 和 when 均可返回值,取代了 Java 的语句形式。when 功能强大,支持多值、区间、类型判断及穷尽性检查,提升安全性。区间与 for 循环结合,简洁遍历集合;break/continue 可配合标签跳出嵌套循环。Lambda 中的 return 默认非局部返回,需用 return@标签 控制行为。整体设计更安全、简洁。

canfeit的专栏 347

Kotlin flow 详解

/ 接收launch {// 发送launch {可以看到创建SharedFlow时,没有像创建冷流flow一样传入一个block的函数参数。自然调用collect也没有可以重新运行的代码。

weixin_45444971的博客 228

Android 开发入门实践(四):Kotlin 列表的安全读取、增删改与筛选转换

本章学习Kotlin列表操作,重点掌握getOrNull安全取值、isEmpty/isNotEmpty判断空列表、MutableList可变性及add、remove、removeAt、替换元素等操作。通过日志验证,区分原列表修改与新列表创建,明确filter、map、find等函数返回类型与作用。强调下标越界处理、重复元素删除逻辑及val与可变性的关系,巩固列表操作的准确理解。

Easyhood的博客 168

Android 开发入门实践(三):理解 Kotlin 列表下标、size 与 lastIndex

Log . d(TAG , "最后一条新闻的下标: $ lastNewsIndex ")lastIndex的 I 大写,后面同样不加圆括号。变量名中的 N、I 都大写。它返回的是一个下标,不是最后一条新闻的文字,也不是新闻总数。表达式表示什么结果元素数量10最后一个下标9下标9对应的元素本文示例中是"第十条新闻"表格最后一行根据本文复习数据得出;前两行的10和9也与当时两节课的运行反馈一致。

Easyhood的博客 228

Go1.27升后Errorf指针%w怎么改

Go1.27起printf vet会报告用%w包装*E(E已实现error);应改传值型error,并用errors.Is/As回归验收。

Amax3747的博客 454

Android 开发入门实践(一):用 Kotlin 和 Jetpack Compose 实现新闻列表

以 NewsApp 新闻列表项目为例,记录 Kotlin 变量、条件判断、循环、函数和可空类型的基础练习,以及 Jetpack Compose 中列表、卡片、图片、图文布局与点击日志的实现过程。

Easyhood的博客 168

【维克】均值回归型CTA:期货的“弹簧效应“

老李犯的错,是把"涨多了"当成"过头了"。但螺纹钢从1600涨到3000,可能只是从"严重亏损"回到"合理利润",根本没过头。讲清楚商品期货的"弹簧"到底长什么样、用什么指标判断偏离、什么场景下均值回归有效,以及——开平仓和止损该怎么设计。当价格低,供给减少、需求增加,形成短缺,价格上涨。当某个品种库存处于历史高位,同时生产利润也很高(价格远高于成本),说明"供大于求 + 暴利",价格下行的压力很大。老李看空,理由是"涨太多了,肯定要跌"。因为均值回归的"诱惑"太大了——价格越偏离,你越觉得"该回归了"。

weixin_42332217的博客 485
上一篇: 【无标题】
下一篇: 小木的机器学习日记——线性回归算法-1
木旭林晖
博客等级 码龄2年 159粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值