![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据挖掘
文章平均质量分 84
小白白白又白cdllp
数据挖掘,数据分析,数据市场
展开
-
加载模型文件后,进行predict时报错feature_names not match
(作者:陈玓玏 data-master)记一个很早以前碰到的bug。每次训练模型,我们都要保存模型文件。比如训练好一个xgboost模型,我们通过joblib来保存模型文件:import joblibjoblib.dump('xgb_model.pkl')那我们下次再加载模型,进行预测的时候model = joblib.load('xgb_model.pkl')y_pred = model.predict_proba(X)[:,1]报错:feature_names not match原创 2020-07-22 16:39:06 · 1761 阅读 · 0 评论 -
xgboost C++源码主要函数
(作者:陈玓玏)1、 源码文件夹结构文件夹的结构如下,其中build文件夹、lib文件夹以及最后一个xgboost可执行文件是在编译之后才生成的。我们在读源码过程中主要是看include文件夹以及src文件夹中的内容。2、 主流程2.1 main函数src/cli_main.cc文件中先找到main函数,从main函数开始跟踪整个流程。Main函数调用了xgboost这个命名空间下的...原创 2018-10-21 19:36:54 · 3146 阅读 · 2 评论 -
集成学习之Adaboost算法
(作者:陈玓玏)一、Adaboost算法我的理解集成学习的一大优点是,如果你想要学习一个很强的学习器,没有问题,但是很容易产生过拟合,但是如果你学习很多个弱的学习器,每个学习器都不容易过拟合(因为精度不那么高,模型不那么复杂),而且它们学习的可能是不同的特征、不同的样本,相互之间还能够有改进,通过这些弱学习器的线性组合能够产生同样精度但不容易过拟合的分类器。Adaboost是集成学习中boo...原创 2018-10-29 19:24:03 · 528 阅读 · 0 评论 -
朴素贝叶斯算法原理
(作者:陈玓玏)1. 损失函数假设我们使用0-1损失函数,函数表达式如下:YYY为真实值,有c1,c2,...,cK{c_1,c_2,...,c_K}c1,c2,...,cK这KKK个类标记,f(X)f(X)f(X)是决策函数,其输出值就是类标记的预测值,那么对应的代价函数,也就是期望损失函数为:Rexp(X)=E(L(Y,f(X)))R_exp(X) = E(L(Y,f(X)))...原创 2018-10-31 20:59:50 · 6338 阅读 · 0 评论 -
推荐系统之基于邻域的协同过滤
(作者:陈玓玏)主要是看《推荐系统实践》这本书做的笔记,写得不好请见谅,一些我自己的拙见有需要讨论的可以留言,谢谢!1. 分类及度量1、 评分预测:预测用户对物品的评分,用RMSE和MAE做度量2、 Top N推荐:给出个性化推荐列表,预测准确率通过准确率(推荐列表中被用户点击的商品/推荐列表中所有商品)/召回率度量(推荐列表中被用户点击的商品/用户点击的所有商品)。一般会给出不同的N,计...原创 2018-10-31 21:12:49 · 1198 阅读 · 0 评论 -
推荐系统之隐语义模型
(作者:陈玓玏)1、 原理隐语义模型的英文是LFM(latent factor model),其实该算法最早在文本挖掘领域被提出,用于找到文本的隐含语义。相关的算法有LSI、pLSA、LDA和Topic Model。其核心思想是学习隐含用户和物品间隐含的特征,通过隐含特征来计算用户对商品的兴趣度。那么,我们具体怎么计算每个用户对每个商品的兴趣度呢?先写出用户对商品的兴趣度矩阵:R=(r11...原创 2018-10-31 22:16:15 · 428 阅读 · 0 评论 -
GBDT算法详解
(作者:陈玓玏)原创 2018-10-24 22:29:29 · 3568 阅读 · 0 评论 -
线性回归详细推导(含归一化必要性讨论)
(作者:陈玓玏)假设有一组数据X,包含m个样本,其中每一个样本有n个特征值,每一个样本还对应其label y_i,也就是说这组数据是一个m*n的矩阵,那么我们可以通过一组参数theta来实现对label的预测,这样当新来一个样本时,我们可以通过找到的这一组参数theata(实际是一个函数)来预测其y值。那怎么评估我们的预测是否准确呢?先来科普一个三个概念: 损失函数(Loss Funct...原创 2018-10-27 19:57:33 · 9395 阅读 · 2 评论 -
逻辑回归原理详细推导
(作者:陈玓玏)为什么我们需要逻辑回归?逻辑回归的基础是线性回归,但如果我们用线性回归可能会出现两个问题,第一个问题受Rachel_zhang的博客启发,描述如下:如果我们通过线性回归来预测癌症,特征是肿瘤的size。当数据点只有左边八个时,可以用粉红色的线来做线性回归,回归的结果是hθ(x)h_\theta(x)hθ(x),当结果值大于0.5时,我们可以认为样本属于正样本,反之属于负...原创 2018-10-27 21:02:33 · 7859 阅读 · 0 评论 -
FM及FFM算法
(作者:陈玓玏)1. 为什么要用FM在计算广告中使用逻辑回归等算法进行CTR(广告点击率)、CVR(转化率)等预估时,有三个重要的问题:1) 特征稀疏问题。关于客户的特征和关于广告的特征都有很多的标称型特征,如客户所在地区、职业、性别,以及广告的主题等,这些属性无法比较大小,因此需要经过one-hot编码处理才能进入模型。但one-hot编码后会产生大量的0值特征,这对于逻辑回归、SVM等模...原创 2018-10-30 21:25:09 · 2119 阅读 · 1 评论 -
不平衡数据分类算法介绍与比较
介绍在数据挖掘中,经常会存在不平衡数据的分类问题,比如在异常监控预测中,由于异常就大多数情况下都不会出现,因此想要达到良好的识别效果普通的分类算法还远远不够,这里介绍几种处理不平衡数据的常用方法及对比。符号表示记多数类的样本集合为L,少数类的样本集合为S。用r=|S|/|L|表示少数类与多数类的比例基准我们先用一个逻辑斯谛回归作为该实验的基准: Weighted loss fu...转载 2018-10-30 21:37:54 · 2097 阅读 · 0 评论 -
机器学习中L1L2规则化详解(先验及稀疏性解释)
(作者:陈玓玏)1、 为什么要正则化?知乎上有个兄弟说得对(https://www.zhihu.com/question/20924039 这个问题下Stark Einstein的回答),不应该说是正则化,应该说是规则化,也就是说,我们原来是在完全没有任何先验知识的情况下进行的训练,那训练出来的结果有可能会“过”,你不知道哪个特征会有用,于是你找了很多特征,尽可能精确地去拟合你的训练数据,结果...原创 2018-11-03 09:31:50 · 7995 阅读 · 1 评论 -
Linux下安装单机版Spark并使用scala和python
(作者:陈玓玏)只学习spark,还不学分布式的时候,可以先单机装spark,这时候不需要用到hadoop的,但是仍然需要java环境,所以要先安装java的jdk。1、 下载并安装java jdk:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 地址,下载一样的位置,...原创 2018-11-02 20:36:10 · 3629 阅读 · 0 评论 -
Linux下通过源码安装大规模稀疏性数据机器学习库xlearn(支持LR、FM、FFM)
(作者:陈玓玏)因为想尝试一下FM算法,所以在网上找了很久的开源库,找到了这个xlearn。这个是北大的肖臻研究员和马超博士他们课题组一起开发的,17年才发布,是用C++写的,还没有发布windows版本,只有Linux和mac能用。github下载地址:https://github.com/aksnzhy/xlearn中文文档:https://xlearn-doc-cn.readthedo...原创 2018-12-08 17:07:11 · 958 阅读 · 0 评论 -
TensorFlow读取csv文件出现错误:OutOfRangeError (see above for traceback): RandomShuffleQueue '_44_
(作者:陈玓玏)一、出现问题的具体场景在使用TensorFlow读取csv文件出现错误:OutOfRangeError (see above for traceback): RandomShuffleQueue ‘_44_shuffle_batch_1/random_shuffle_queue’ is closed and has insufficient elements (requeste...原创 2018-12-24 21:18:19 · 2243 阅读 · 0 评论 -
Field 9 in record 0 is not a valid int32及FailedPreconditionError:Attempting to use uninitialized val
(作者:陈玓玏)一、 Field 9 in record 0 is not a valid int32: 66.67问题通过以下命令读取csv文件时出现Field 9 in record 0 is not a valid int32: 66.67错误:import tensorflow as tffilename_queue = tf.train.string_input_produce...原创 2018-12-24 21:28:33 · 2447 阅读 · 0 评论 -
XGBoost中分位点算法快速查找分割点
(作者:陈玓玏)一、基本的查找分割点的贪婪算法这样的算法称为精确贪婪算法,在计算分割点的过程中,它会去查找进入当前分支的每一个样本的每一个特征值,计算它们的增益,sklearn和单机版xgboost都支持这种算法。不过这种算法要求在一开始的时候先把所有样本按照特征值排好序,并计算好它们的一阶导数和二阶导数,这样才能快速地计算增益,选定分割的候选节点。二、效率极高的分位点算法以上算法在其他基...原创 2018-10-21 15:43:09 · 5457 阅读 · 0 评论 -
决策树算法原理详解(ID3、C4.5、CART树)
(作者:陈玓玏)决策树的本质是什么?是将特征空间逐级划分,如下图过程所示:图示就是每次都找不同的切分点,将样本空间逐渐进行细分,最后把属于同一类的空间进行合并,就形成了决策边界,树的层次越深,决策边界的切分就越细,区分越准确,同时也越有可能产生过拟合。这也就是说,决策树最重要的一件事情就是:怎么找切分点?基本的决策树算法有三类,按时间顺序分别是:ID3、C4.5、CART。...原创 2018-10-28 23:01:46 · 7070 阅读 · 0 评论 -
如何自动地分列从数据库中提取数据?
(原创作者:陈玓玏)方法有两个,如下:一、 数据库(Oracle)中写入for循环 DECLARE a number(30) := 0; BEGIN for i in 1 .. 10 loop --INSERT INTO FW_TEST(NAME) VALUES('bbb' + i); sys.dbms_output.put_line('...原创 2018-06-03 12:34:43 · 4487 阅读 · 0 评论 -
MySQL存储过程实例
(作者:陈玓玏)参考文章:https://www.cnblogs.com/mark-chan/p/5384139.html,https://www.cnblogs.com/mark-chan/p/5384139.html定义存储过程在我的理解里,类似函数的定义,设定好了函数的输入、输出参数、类型,写好了流程,存在数据库里,想用的时候随时可以调用,不需要重新写sql语句,效率很高。而且一...原创 2018-06-03 17:55:14 · 7989 阅读 · 0 评论 -
IV、WOE和信息增益、基尼不纯度比较
IV、WOE和信息增益、基尼不纯度比较原创 2018-06-11 22:52:21 · 5949 阅读 · 0 评论 -
Oracle常见错误及解决方案汇总
(原创作者:陈玓玏)这篇文章主要是记录一些工作中常常会碰到的错误跟解决方案,汇总到一起,方便查询。1、 错误提示ORA-00933: SQL command not properly ended in? 可能的原因:1)语句写的顺序不正确,比如WHERE语句写在了GROUP BY后面; 2)使用了含有ORDER BY或INNER JOIN子句的INSERT、DELETE语句; ...原创 2018-06-10 01:05:37 · 6609 阅读 · 0 评论 -
Python实现FP-growth算法寻找关联规则(含原理+代码)
(原创作者:陈玓玏)一、FP-growth应用场景FP-growth和Apriori一样,可以用于挖掘频繁项,常用于购物篮的规则提取,也就是挖掘客户购买商品时的关联程度,比如共有一万个客户购买商品,其中会同时购买牛奶和面包的客户有九千个,那就认为牛奶和面包关联性很大,适合打包销售。另外一个应用场景其本质也是关联规则,也就是在针对二分类的数据分析中,通常会对单变量进行分析,然后提取出...原创 2018-07-01 12:47:46 · 12618 阅读 · 7 评论 -
模型评估:K-S值和AUC的区别
K-S评估和AUC评估原创 2018-07-04 22:56:18 · 24767 阅读 · 1 评论 -
Sklearn之One-hot编码(编码方式、作用、适用场景)
(作者:陈玓玏)一、为什么要用做One-hot编码?在建模过程中,我们通常会碰到各种类型的属性,如果是标称型属性,也就是不具备序列性、不能比较大小的属性,通常我们不能用简单的数值来粗暴替换。因为属性的数值大小会影响到权重矩阵的计算,不存在大小关系的属性,其权重也不应该发生相应的变化,那么我们就需要用到One-hot编码(也有人称独热编码)这种特殊的编码方式了。二、One-hot编码...原创 2018-08-05 17:38:17 · 42157 阅读 · 5 评论 -
分层抽样原理及Oracle实现
(作者:陈玓玏)在实际的数据挖掘应用中,我们往往会从各方收集很多的数据,这些数据每分每秒都在增加,但我们如果用所有的这些数据并无益处。一是数据量过大,处理起来难度会大非常多,要求你的基础计算平台性能很好,甚至需要用到并行计算,有时是没有必要的;二是数据都是基于人及人的行为所产生的影响的,而人是会发生变化的,所以久远的数据我们可能用不到;三是建模的过程并不一定都是在内部进行,可能会与别的部门或公...原创 2018-08-02 08:54:29 · 2996 阅读 · 1 评论 -
逻辑回归:原理+代码
(作者:陈玓玏)逻辑回归算是传统机器学习中最简单的模型了,它的基础是线性回归,为了弄明白逻辑回归,我们先来看线性回归。一、线性回归假设共N个样本,每个样本有M个特征,这样就产生了一个N*M大小的样本矩阵。令矩阵为X,第i个样本为Xi,第i个样本的第j个特征为Xij。令样本的观测向量为Y,第i个样本的观测值为Yi,那么就会有以下公式: (X+[1]N*1)*W = Y 也就是说,...原创 2018-08-14 23:42:08 · 1638 阅读 · 0 评论 -
利用Python和Oracle进行变量分析(求解覆盖率、类别数、分位数等)
(作者:陈玓玏)在建模过程中,如果你要选择一个变量进入模型,必然需要确保这个变量是可用的。那怎么样算可用呢?单从变量的角度来说,覆盖率不能过低,也就是缺失值不能过多;变量的分布范围合理,也就是说不会有过多异常值。那么这些功能用Python和Oracle都是很容易实现的,下面看代码吧。1、Python求解覆盖率如果直接用isnull函数做判断,那么会得到一个和Series等长的布尔型...原创 2018-08-02 21:05:15 · 809 阅读 · 0 评论 -
天池大赛O2O新手赛解题思路分享
(作者:陈玓玏)原创 2018-08-25 11:56:51 · 2525 阅读 · 0 评论 -
Linux下编译xgboost的C++源码并执行单步调试
(作者:陈玓玏)一、编译xgboost源码依次在命令行输入以下命令,即可成功编译xgboost源码,编译成功后将生成可执行文件xgboost:$ git clone --recursive https://github.com/dmlc/xgboost --克隆$ cd xgboost --在xgboost目录下编译$ make -j4 --编译,会生成可执行文件xgboost,-...原创 2018-10-17 22:28:02 · 2483 阅读 · 0 评论 -
Windows下编译xgboost的C++源码(方便vs运行的)
(作者:陈玓玏)1、 下载源码:网址:https://github.com/dmlc/xgboost ,最好不要直接下载zip,而是克隆,因为直接下载会下载不到xgboost依赖的dmlc-core和rabbit等库,导致编译失败。克隆的好方法是通过git,Windows版的git下载地址:https://gitforwindows.org/下载好git后,打开git bash,输入:$ ...原创 2018-10-17 22:56:12 · 3647 阅读 · 6 评论 -
XGBoost原理详解
(作者:陈玓玏)XGBoost是时下集成学习中最火的算法,效率非常之高,它的基础是集成学习中的GBDT,但是在GBDT的基础上做了很多改进。本文是我在阅读xgboost论文、源码以及其他大神的精解之后做的笔记,如果有不足之处,烦请留言讨论,如果有什么疑惑,可以查阅论文或尝试单步跟踪源码,会理解得更深刻些。首先讲一下我所理解的集成学习,集成学习是通过构建多个基分类器来提高预测的准确性,这些基分类...原创 2018-10-20 11:04:04 · 4569 阅读 · 1 评论 -
数据挖掘知识集锦
(原创作者:陈玓玏) 关于数据挖掘的定义七七八八的,但是总的来说,数据挖掘是从海量数据中挖掘有用的行为模式等信息,帮助智能化的决策。 关于数据挖掘的步骤,也有很多划分,这里作者且大胆地按照自己的理解划分一下吧,分为需求理解、结果定义、数据收集、数据清洗、数据划分、特征提取、特征选择、...原创 2018-06-03 10:32:14 · 1219 阅读 · 0 评论