分类器

面试必备资源!程序员面试——算法工程师面试大全第二部分

泪湿孤枕 提交于 2020-02-25 10:43:30
1.逻辑回归怎么实现多分类 方式一:修改逻辑回归的损失函数,使用 softmax 函数构造模型解决多分类问题,softmax 分 类模型会有相同于类别数的输出,输出的值为对于样本属于各个类别的概率,最后对于样本进行 预测的类型为概率值最高的那个类别. 方式二:根据每个类别都建立一个二分类器,本类别的样本标签定义为 0,其它分类样本标签 定义为 1,则有多少个类别就构造多少个逻辑回归分类器 若所有类别之间有明显的互斥则使用softmax 分类器, 若所有类别不互斥有交叉的情况则构造相应类别个数的逻辑回归分类器. 2.SVM 中什么时候用线性核什么时候用高斯核? 当数据的特征提取的较好,所包含的信息量足够大,很多问题是线性可分的那么可以采用线性核.若特征数较少,样本数适中,对于时间不敏感,遇到的问题是线性不可分的时候可以使用高 斯核来达到更好的效果. 3.什么是支持向量机,SVM 与 LR 的区别? 支持向量机为一个二分类模型,它的基本模型定义为特征空间上的间隔最大的线性分类器.而它的学习策略为最大化分类间隔,最终可转化为凸二次规划问题求解. LR 是参数模型,SVM 为非参数模型.LR 采用的损失函数为 logistical loss,而 SVM 采用的是 hinge loss.在学习分类器的时候,SVM 只考虑与分类最相关的少数支持向量点.LR 的模型相对简单

多模型融合推荐算法

China☆狼群 提交于 2020-02-24 06:13:27
常见的多模型融合算法 多模型融合算法可以比单一模型算法有极为明显的效果提升。但是怎样进行有效的融合,充分发挥各个算法的长处?这里总结一些常见的融合方法: 1. 线性加权融合法 线性加权是最简单易用的融合算法,工程实现非常方便,只需要汇总单一模型的结果,然后按不同算法赋予不同的权重,将多个推荐算法的结果进行加权,即可得到结果: 是给用户(user)推荐商品(item)的得分, 是算法K的权重,是算法k得到的用户(user)对商品item的推荐得分。这种融合方式实现简单,但效果较差。因为线性加权的参数是固定的,实践中参数的选取通常依赖对全局结果升降的总结,一旦设定后,无法灵活的按照不同的推荐场景来自动变换。比如如果某个场景用算法A效果较好,另外一种场景用算法B效果较好,线性融合的方式在这种情况下不能取得好的效果。为了解决这个问题,达观数据进行了改进,通过引入动态参数的机制,通过训练用户对推荐结果的评价、与系统的预测是否相符生成加权模型,动态的调整权重使得效果大幅提升。 2. 交叉融合法 交叉融合常被称为Blending方法,其思路是在推荐结果中,穿插不同推荐模型的结果,以确保结果的多样性。 这种方式将不同算法的结果组合在一起推荐给用户。 交叉融合法的思路是“各花入各眼”,不同算法的结果着眼点不同,能满足不同用户的需求,直接穿插在一起进行展示

Python 数据挖掘 工具包整理

谁都会走 提交于 2020-02-23 17:53:34
连接器与io 数据库 类别 Python R MySQL mysql-connector-python(官方) RMySQL Oracle cx_Oracle ROracle MongoDB pymongo RMongo, rmongodb ODBC pyodbc RODBC IO类 类别 Python R excel xlsxWriter, pandas.(from/to)_excel, openpyxl openxlsx::read.xlsx(2), xlsx::read.xlsx(2) csv csv.writer read.csv(2), read.table json json jsonlite 图片 PIL jpeg, png, tiff, bmp 统计类 描述性统计 类别 Python R 描述性统计汇总 scipy.stats.descirbe summary 均值 scipy.stats.gmean(几何平均数), scipy.stats.hmean(调和平均数), numpy.mean, numpy.nanmean, pandas.Series.mean mean 中位数 numpy.median, numpy.nanmediam, pandas.Series.median median 众数 scipy.stats.mode, pandas.Series

TensorFlow分布式训练MNIST分类器

放肆的年华 提交于 2020-02-23 11:10:39
http://c.biancheng.net/view/2004.html 本节以分布式方式训练完整的 MNIST 分类器。 该案例受到下面博客文章的启发: http://ischlag.github.io/2016/06/12/async-distributed-tensorflow/ ,运行在 TensorFlow 1.2 上的代码可以在网址 https://github.com/ischlag/distributed-tensorflow-example 上找到。 注意,这个案例基于上一节,所以按顺序阅读可能会很方便。 具体做法 导入一些标准模块并定义运行计算的 TensorFlow 集群,然后为指定任务启动服务: 读取 MNIST 数据并定义用于训练的超参数: 检查角色是参数服务器还是 worker,如果是 worker 就定义一个简单的稠密神经网络,定义一个优化器以及用于评估分类器的度量(例如精确度): 启动一个监督器作为分布式设置的主机,主机是管理集群其余部分的机器。会话由主机维护,关键指令是 sv=tf.train.Supervisor(is_chief=(FLAGS.task_index==0))。另外,通过 prepare_or_wait_for_session(server.target),监督器将等待模型投入使用。请注意,每个 worker

图像分类(动手学深度学习)

狂风中的少年 提交于 2020-02-23 04:28:15
图像分类 本教程源代码目录在 book/image_classification , 初次使用请参考 PaddlePaddle 安装教程 ,更多内容请参考本教程的 视频课堂 。 背景介绍 图像相比文字能够提供更加生动、容易理解及更具艺术感的信息,是人们转递与交换信息的重要来源。在本教程中,我们专注于图像识别领域的一个重要问题,即 图像分类 。 图像分类是根据图像的语义信息将不同类别图像区分开来,是计算机视觉中重要的基本问题,也是图像检测、图像分割、物体跟踪、行为分析等其他高层视觉任务的基础。 图像分类在很多领域有广泛应用,包括安防领域的人脸识别和智能视频分析等,交通领域的交通场景识别,互联网领域基于内容的图像检索和相册自动归类,医学领域的图像识别等。 一般来说,图像分类通过手工特征或特征学习方法对整个图像进行全部描述,然后使用分类器判别物体类别,因此如何提取图像的特征至关重要。 在深度学习算法之前使用较多的是基于词袋(Bag of Words)模型的物体分类方法。 词袋方法从自然语言处理中引入,即一句话可以用一个装了词的袋子表示其特征,袋子中的词为句子中的单词、短语或字。对于图像而言,词袋方法需要构建字典。最简单的词袋模型框架可以设计为 底层特征抽取 、 特征编码 、 分类器设计 三个过程。 Now: 而基于深度学习的图像分类方法,可以通过有监督或无监督的方式 学习

cs231n Lecture2 Image Classification

僤鯓⒐⒋嵵緔 提交于 2020-02-22 17:25:30
1.数据驱动:图像分类 面对的困难挑战是视角变化,大小变化,形变,遮挡,光照条件,背景干扰,类内差异。 Nearest Neighbor分类器 在 CIFAR-10 数据集上,总共6W张图片,有10类。32×32×3 5W做训练集,1W做测试集。每张测试图片属于哪一类,就是直接计算两张图片的所有像素的差值,一个测试图片和5W个训练集图片分别比较,最后哪个差值小就是和这个图片一类。 L1 (Manhattan)distance L2 (Euclidean)distance 你会发现准确率能达到38.6%。这比随机猜测的10%要好,但是比人类识别的水平(据研究推测是94%)和卷积神经网络能达到的95%还是差多了 k - Nearest Neighbor Classifier(KNN) 不找最近的一个图片的标签作为记过,找K个图片,然后投票决定图片标签 用于超参数调优的验证集 这里有K和which distance 两个超参数需要确定, 不要用你的test data来调优找到超参数 在训练集中,使用交叉循环验证,分成5份,用4份做训练集,一份做验证集 一旦找到最优的超参数,就让算法以该参数在测试集跑且只跑一次,并根据测试结果评价算法。 对最优的超参数做记录。记录最优参数后,是否应该让使用最优参数的算法在完整的训练集上运行并再次训练呢?因为如果把验证集重新放回到训练集中

UA MATH574M 统计学习II 二元分类

旧时模样 提交于 2020-02-22 14:00:18
UA MATH574M 统计学习II 二元分类 基础模型 Bayes分类器 均等成本 不等成本 线性概率模型 线性分类器 线性判别分析(LDA) Logistics回归 基础模型 假设一个二元分类问题特征为 X ∈ X ⊂ R d X \in \mathcal{X} \subset \mathbb{R}^d X ∈ X ⊂ R d ,类别为 Y ∈ { 0 , 1 } Y \in \{0,1\} Y ∈ { 0 , 1 } ,二元分类的目标是训练一个模型: f : X → 0 , 1 f: \mathcal{X} \to {0,1} f : X → 0 , 1 完成分类任务。因为输出是0和1,所以通常用示性函数表示 f f f f = I ( b ( X ) > 0 ) f = I(b(X)>0) f = I ( b ( X ) > 0 ) 称 b ( X ) = 0 b(X)=0 b ( X ) = 0 为这两个类别的边界。二元分类问题与二值回归有哲学上的不同,二值回归认为特征 X X X 不具有随机性,响应 Y Y Y 的随机性来源于随机误差,而二元分类问题中特征 X X X 与响应 Y Y Y 均是随机变量。 Bayes分类器 假设 Y Y Y 的先验为 B e r ( π 1 ) Ber(\pi_1) B e r ( π 1 ​ ) ,特征的条件密度为 X ∣ Y = 1

级联分类器训练

假如想象 提交于 2020-02-21 19:14:19
级联分类器训练 介绍 级联分类器包括两部分:训练和检测。 检测部分在OpenCV objdetect 模块的文档中有介绍,在那文档中给出了一些级联分类器的基本介绍。这个指南是描述如何训练分类器:准备训练数据和运行训练程序。 重点注意事项 OpenCV中有两个程序可以训练级联分类器: opencv_haartraining and opencv_traincascade 。 opencv_traincascade 是一个新程序,使用OpenCV 2.x API 以C++ 编写。这二者主要的区别是 opencv_traincascade 支持 Haar [Viola2001] 和 LBP [Liao2007] (Local Binary Patterns) 两种特征,并易于增加其他的特征。与Haar特征相比,LBP特征是整数特征,因此训练和检测过程都会比Haar特征快几倍。LBP和Haar特征用于检测的准确率,是依赖训练过程中的训练数据的质量和训练参数。训练一个与基于Haar特征同样准确度的LBP的分类器是可能的。 opencv_traincascade and opencv_haartraining 所输出的分类器文件格式并不相同。注意,新的级联检测接口(参考 objdetect 模块中的 CascadeClassifier 类)支持这两种格式。 opencv

Scikit-learn使用总结

南笙酒味 提交于 2020-02-21 07:33:22
在机器学习和数据挖掘的应用中,scikit-learn是一个功能强大的python包。在数据量不是过大的情况下,可以解决大部分问题。学习使用scikit-learn的过程中,我自己也在补充着机器学习和数据挖掘的知识。这里根据自己学习sklearn的经验,我做一个总结的笔记。另外,我也想把这篇笔记一直更新下去。 1 scikit-learn基础介绍 1.1 估计器(Estimator) 估计器,很多时候可以直接理解成分类器,主要包含两个函数: fit():训练算法,设置内部参数。接收训练集和类别两个参数。 predict():预测测试集类别,参数为测试集。 大多数scikit-learn估计器接收和输出的数据格式均为numpy数组或类似格式。 1.2 转换器(Transformer) 转换器用于数据预处理和数据转换,主要是三个方法: fit():训练算法,设置内部参数。 transform():数据转换。 fit_transform():合并fit和transform两个方法。 1.3 流水线(Pipeline) sklearn.pipeline 包 流水线的功能: 跟踪记录各步骤的操作(以方便地重现实验结果) 对各步骤进行一个封装 确保代码的复杂程度不至于超出掌控范围 基本使用方法 流水线的输入为一连串的数据挖掘步骤,其中最后一步必须是估计器,前几步是转换器

MATLAB神经网络(5) 基于BP_Adaboost的强分类器设计——公司财务预警建模

喜你入骨 提交于 2020-02-20 10:21:22
5.1 案例背景 5.1.1 BP_Adaboost模型 Adaboost算法的思想是合并多个“弱”分类器的输出以产生有效分类。其主要步骤为:首先给出弱学习算法和样本空间($X$,$Y$),从样本空间中找出$m$组训练数据,每组训练数据的权重都是$\frac{1}{m}$。然后用弱学习算法迭代运算$T$次,每次运算后都按照分类结果更新训练数据权重分布,对于分类失败的训练个体赋予较大权重,下 次迭代运算时更加关注这些训练个体。弱分类器通过反复迭代得到 个分类函数序列${f_1},{f_2},...,{f_T}$,每个分类函数赋予一个权重,分类结果越好的函数,其对应权重越大。$T$次迭代之后,最终强分类函数$F$由弱分类函数加权得到。BP_Adaboost模型即BP神经网络作为弱分类器,反复训练BP神经网络预测样本输出,通过Adaboost算法得到多个BP神经网络弱分类器组成的强分类器。 来源: https://www.cnblogs.com/dingdangsunny/p/12334396.html