ELL

决策树

人盡茶涼 提交于 2021-02-01 11:36:46
概要 决策树也是我们经常使用的样本归类算法。简单来说,它就是 if-else 的判断集合,本文就详细介绍其原理,还有例子实现。依然参考《机器学习实战》。 基本理论 决策树是通过一系列规则对数据进行分类的过程。 决策树利用了概率论的原理,不断地将数据切分成小数据集,直到所有目标变量完全相同,或者数据不能再切分为止。并且利用一种树形图作为分析工具。其基本原理是用决策点代表决策问题,用方案分枝代表可供选择的方案,用概率分枝代表方案可能出现的各种结果,经过对各种方案在各种结果条件下损益值的计算比较,为决策者提供决策依据。 决策树是一种贪心算法 ,要在给定时间内做出最佳选择,但并不关心能否达到最优。 ###决策树的实现 决策树的实现主要分为三个步骤: 特征选择:特征选择是指从训练数据中众多的特征中选择一个特征作为当前节点的分裂标准,如何选择特征有着很多不同量化评估标准标准,从而衍生出不同的决策树算法。 决策树生成: 根据选择的特征评估标准,从上至下递归地生成子节点,直到数据集不可分则停止。 剪枝:决策树容易过拟合,一般来需要剪枝,缩小树结构规模、缓解过拟合。剪枝技术有预剪枝和后剪枝两种。 划分数据集的最大原则是: 使无序的数据变的有序 。如果一个训练数据中有20个特征,那么选取哪个做划分依据?这就必须采用量化的方法来判断,量化划分方法有多重,其中一项就是“信息论度量信息分类”

GIMP 2018 年回顧:2.10 版及其後

蹲街弑〆低调 提交于 2021-02-01 11:17:10
GIMP 網站日前發布一則年度回顧 GIMP and GEGL in 2018,本系列會將其化整為零,並補充一些細節,讓大家更了解 GIMP 在 2.10 及其後,究竟帶來了哪些改變。 2018 年四月,令眾人望穿秋水的 GIMP 2.10 終於正式發布,與六年前的 2.8 相比,其主要特色包括: 嶄新的使用界面 Featuring updated user interface 高位元深度支援 High bit depth support 多執行緒 Linear color space workflow 線性色彩空間工作流程 Linear color space workflow 嶄新的使用界面 在 GIMP 2.10,最直接可見的改變,就是預設啟用的全新 Dark 佈景主題及圖示: GIMP 2.10 預設的 Dark 佈景主題。圖片來源: www.gimp.org 現在 GIMP 共有四套佈景主題:Dark(預設)、Gray、Light 及 System。現在顏色及圖示是分開處理的,並且我們同時維護顏色和圖示,因此,例如您喜歡舊的外觀,您就可以採用 System 主題及彩色的圖示。 四種佈景主題下的圖示。圖片來源: www.gimp.org 此外,現在有四種尺寸的圖示可供選擇,因此 GIMP 在高解析度的螢幕上看起來會更舒適。GIMP 會努力偵測裝置的尺寸,不過您也可以手動設定

Arduino通讯串口

我怕爱的太早我们不能终老 提交于 2021-02-01 01:48:28
串口是Arduino与其它设备进行通信的接口 所有的Arduino控制板有至少一个串口(又称作为UART或USART)。它通过0(RX)和1(TX)数字引脚经过串口转换芯片连接计算机USB端口与计算机进行通信。因此,如果你使用这些功能的同时你不能使用引脚0和1作为输入或输出 Arduino Mega 有三个额外的串口: Serial 1 使用 19(RX) 和 18(TX) , Serial 2 使用 17(RX) 和 16(TX) , Serial3 使用 15(RX) 和 14(TX); 若要使用这三个引脚与您的个人电脑通信,你需要一个额外的 USB 转串口适配器,因为这三个引脚没有连接到 Mega 上的 USB 转串口适配器, 若要用它们来与外部的 TTL 串口设备进行通信,将 TX 引脚连接到您的设备的 RX 引脚,将 RX 引脚连接到您的设备的 TX 引脚,将 GND 连接到您的设备的 GND, (不要直接将这些引脚直接连接到 RS232 串口 ; 他们的工作电压在 +/- 12V ,可能会损坏您的 Arduino 控制板。) Serial.begin(9600); //开启串行通信接口并设置通信波特率 if (Serial) //表示指定的串口是否准备好 比较囧的是,这个方法只适用于Leonardo和micro的Serial Arduino Mega 特有: if

损失函数

删除回忆录丶 提交于 2020-12-24 19:08:29
损失函数的定义 我们以分类问题为例来讨论,假如分类器f,那么对于输入 X, 输出为f( X )那么,如何衡量这个分类器的好坏,我们用f( X )和真正的Y值进行比较,来衡量分类器f的好坏,这种衡量的标准就是损失函数,损失函数越小,代表分类器的性能越好。 损失函数的输入为f( x )和Y,输出是一个非负实数,记做L(f( x ),Y)。 期望风险、经验风险和结构风险 在学习损失函数时候,经常冒出来几个概念:经验风险、期望风险、结构风险。这些是什么意思? 期望风险: 当损失函数越小,表示我们的模型越好。但是我们不能用一个样本来进行预测,然后说这个模型的性能比较好。正确的做法是比较所有的样本,这里的所有包括我们已有的训练数据还有未知的所有数据。这里有一个前提,那即是我们假设我们的样本x和y服从某种概率的分布P(x,y)。我们用所有样本的损失函数的均值,也就是期望风险(expected risk)来进行度量。 $ R_{exp}(f) = E_P[L(Y,F(X))] =\int_{x\times y} L(y,f(x)) P(x,y) dxdy$ 但是这里的问题是这样的,x和y的联合概率分布式不能够得知的,所以我们想要使用期望风险来度量模型的性能是不可以的。 经验风险: 虽然,我们不知道x和y的分布情况,但是我们手里有一些训练数据,我们直接在这训练数据上面的风险最小,于是

Mxnet (44): 使用神经协作过滤(NeuMF模型)进行个性化排名

ⅰ亾dé卋堺 提交于 2020-10-14 22:41:59
1.个性化排名 前面对电影数据集的处理只考虑了明确的反馈,通过观察到的等级进行了训练和测试。这种方法有两个缺点: 在实际应用中,大多数的反馈都是隐式的,显式的反馈往往需要更高的收集成本。 未被观察的哪些用户-项目交互可能用于预测用户的喜好但是被忽略了,当这些缺失不是随机导致的而是由于用户的喜好导致的这些方法将不在适用。很显然,未观测的这些用户-项目对是用户真实的负反馈(用户对这些不感兴趣才没看)和缺失值(正常随机的缺失,跟喜好无关,将来有可能会看)的结合体。如果简单的忽略其实是不对的。 为了解决这个问题,针对从隐式反馈生成排名推荐列表的一类推荐模型已获得普及。通常, 可以使用逐点、逐对以及逐列的方法优化个性化排名模型。逐点方法一次只考虑一次交互,并训练分类器或回归器来预测个人偏好。矩阵分解和AutoRec使用逐点目标进行了优化。 逐对方法为每一个用户考虑一对项目并且致力于为这对项目最优排序。通常, 逐对方法更适合于排序任务,因为预测一对的顺序会使人联想到排序。逐列方法将整列的项目近似排序, 如直接优化排名指标:Normalized Discounted Cumulative Gain ( NDCG )。然而, 列表方法比点方法或成对方法更加复杂且计算量大。 1.1 贝叶斯个性化排序 贝叶斯个性化排序(BPR)是从最大后验估计量得出的成对个性化排序损失

排版规约

馋奶兔 提交于 2020-08-12 07:23:28
1 一级标题 章标题居中,三号黑体,使用 ## 。 1.1 二级标题 章下为节,节标题四号黑体,使用 ### 。 1.1.1 三级标题 节下为小节,小节标题小四黑体,使用 #### 。 1.1.1.1 四级标题 1.1.1.1.1 五级标题 一般只使用一二三级标题。 2 列表 2.1 无序列表 无序列表在符号 - 后加空格使用: 无序列表 1 无序列表 2 无序列表 3 如果要控制列表的层级,则需要在符号 - 前使用空格: 无序列表 1 无序列表 2 无序列表 2.1 无序列表 2.2 对条文内容采用分行并叙, 或结构有层级关系。 列举结束必须换行 。 2.2 有序列表 有序列表的使用,在数字及符号 . 后加空格后输入内容,如下: 有序列表 1 有序列表 2 有序列表 3 小节以下标题, 或表达同步顺序关系。 如果编号及其后内容新起一个段落,则需要换行,列举结束必须换行 3 引用 引用的格式是在符号 > 后面书写文字。如下: 疫情就是命令,防控就是责任。 ——领袖 用于大段原文引用, 引用结束必须换行 。 4 文本 4.1 粗体和斜体 用粗体标识段落内强调项 , 一般只在英文中使用斜体 , 用粗体加斜体标识注意项 。 如果信息之间关联性越高,它们之间的距离就应该越接近,也越像一个视觉单元;反之,则它们的距离就应该越远,也越像多个视觉单元。亲密性的根本目的是实现组织性

网易,这次你让粉丝们失望了

十年热恋 提交于 2020-08-11 16:48:28
刚刚结束的war3黄金联赛战队赛总决赛,对裁判组(网易爸爸)的不作为非常不满,你真的伤害到了一些热爱war3的粉丝。 每 个人,都有属于自己的青春。 我的青春里,一定有属于war3的一席之地。 画外音:dota1,守护雅典娜,TD,3C,各类RPG… 读大学的那个时候(03-07), Moon, Grubby, Tod… SKY, xiaot, MagicYang… 几乎没有人不知道他们。 05-06年,SKY连续两次夺得WCG魔兽总冠军的时候,对war3的狂热达到了顶峰,甚至有人打趣到: 大学四年,啥都不记得,只记得SKY的两次夺冠了。 足以见得,war3在这一代大学生心中的分量。 接着,我们毕业了,工作了,成家了,养娃了,渐渐地,同学们也渐渐不联系了。 如同与兄弟们热闹的曾经, 每个游戏,也都有属于它自己的时代 ,有些东西,只会留在我们的记忆里,而war3似乎也逐步成为了一款历史的游戏。 青春如同奔流的江河 一去不回来不及道别 只剩下麻木的我没有了当年的热血 最近几年,游戏直播站到了风口,有一小撮曾经热血的职业war3玩家,不分国界,报团取暖,走到了一起; 慢慢的,他们的执着,也逐步召回,并聚集起了那一批忠实的粉丝。 有一些有情怀的老粉,自费花个几万,举办一些线上的比赛,让war3逐步又有了生机。 画外音:没错,现在几万元奖金的比赛,就能吸引到最顶尖的war3职业选手。当然

翻译:GIMP 2.10有什么新功能?

冷暖自知 提交于 2020-08-09 21:22:46
GIMP 2.10有什么新功能? GIMP 2.10是六年工作的结果,最初致力于将程序移植到新的图像处理引擎GEGL。但是,新版本附带了更多的新功能,包括新的和改进的工具,更好的文件格式支持,各种可用性改进,色彩管理支持改进,针对数字画家和摄影师的大量改进,元数据编辑等等。 。 更新了用户界面和初始的HiDPI支持 GIMP 2.10上最明显的一件事是新的深色主题和默认启用的符号图标。这是为了使环境有些暗淡,并将重点转移到内容上。 GIMP中现在有4个用户界面主题可用: Dark (默认), Gray , Light 和 System 。现在,图标与主题分开了,并且我们同时保留了颜色和符号图标,因此如果您喜欢旧外观,可以将GIMP配置为具有颜色图标的 System 主题。 而且,现在有四种尺寸的图标可用,因此GIMP在HiDPI显示器上看起来更好。GIMP将尽其所能来检测要使用的大小,但是您可以在 编辑 → 首选项 → 界面 → 图标主题中 手动覆盖该选择 。 贡献者: Benoit Touchette,Klaus Staedtler,VillePätsi,Aryeom Han,JehanPagès,Alexandre Prokoudine… GEGL端口,高位深度支持,多线程等 v2.10的最终目标是完成到GEGL图像处理库的移植,从v2.6开始

WPF实现大数据分析

。_饼干妹妹 提交于 2020-08-05 06:23:45
开头语 经过一段时间研究,终于实现CS和BS相同效果的大数据展示平台了。首先来看看实现的效果,超炫的效果,客户特别喜欢,个人也非常满意,分享给各位,同大家一起交流学习。 大数据展示平台 从上图可以看出,分为左中右三栏,左右主要是展示图标为主,中间部分展示地图,这种展示主要使用于物流行业,亮点是中间的地图,物流覆盖的地方和线路在地图中显示的淋漓尽致,效果非常炫,用WPF去现实的,图片进行切片,研究了四个晚上做了这效果。 按快捷键Ctrl+F1可以对数据库进行设置 按快捷键Ctrl+F2可以对系统标题,企业愿景和公司最新动态,公司公告和地图的颜色和线路进行设置,这样就适用于大多数客户。 这样即可完全自定义了,适应于多个客户,由于我公司是很多客户的,所以必须进行公版话,进行自定义设置,这里就适用于很多了客户了。 实现代码 数据获取代码就不再展示了,下面分享下部分代码,首先是地图部分,由Canvas去画线就好了,这样就生成了地图。 < Canvas Margin ="-100,0,0,0" > < Polygon Name ="hainan" ToolTip ="海南" Points ="536.396,694.058 532.068,692.389 528.406,691.387 525.076,689.718 523.745,688.716 522.746,687.714 522.08

Python3入门系列之-----字符串

為{幸葍}努か 提交于 2020-08-04 17:41:13
字符串 字符串是由数字,字母、下划线组成的一串字符 创建字符串,可以使用单引号和双引号: var1 = 'Hello World!' var2 = "Hello World!" 访问字符串中的值 var = “Hello World” print(var[0])#运行结果H 字符串更新 实例: print(var1[0:6]) + “Python” 运行结果 : Hello Python 另一种写法: print(var1[:6])+ “Python” 运行结果 : Hello Python 合并连接字符串 使用+号连接字符 实例: first_name = “lao” last_name = “zhu” print(first_name + last_name) #运行结果为:laozhu 注: +两边类型必须一致 删除空白 实列: ”Python”和”Python ”表面上看两个字符串是一样的,但实际代码中是认为不相同的,因为后面的字串符有空白,那么如何去掉空白? 实例一: language = ”Python ” # 未尾有空白 language.rstrip() # 删除未尾空白 实例二: language = ” Python” # 前面有空白 language.rstrip() # 删除前面空白 实例三: language = ” Python ” # 前后都有空白