机器学习
文章平均质量分 66
机器学习
贾世林jiashilin
alanjia163@163.com 贾世林jiashilin 计算机 软件工程 AI bigdata
展开
-
RF,GBDT,XgBoost的区别
Random Forest:主要运用到的方法是bagging,采用Bootstrap的随机有放回的抽样,抽样出N份数据集,训练出N个决策树。然后根据N个决策树输出的结果决定最终结果(离散型的输出:取最多的类别,连续型的输出:取平均数),是一种集成学习下面引用的是谢益辉博士关于Bootstrap (和 Jackknife)基本思想的论述一般情况下,总体永远都无法知道,我们能利用的只有样本...原创 2019-07-17 23:27:16 · 204 阅读 · 0 评论 -
随机森林,随机森林中进行特征重要性
随机森林(RF)简介只要了解决策树的算法,那么随机森林是相当容易理解的。随机森林的算法可以用如下几个步骤概括:用有抽样放回的方法(bootstrap)从样本集中选取n个样本作为一个训练集 用抽样得到的样本集生成一棵决策树。在生成的每一个结点: 随机不重复地选择d个特征 利用这d个特征分别对样本集进行划分,找到最佳的划分特征(可用基尼系数、增益率或者信息增益判别) 重复步骤1到步骤...原创 2019-07-11 23:33:45 · 10970 阅读 · 0 评论 -
SVM为什么能够求解对偶问题,求解对偶问题为什么和原问题一样?为什么要求解对偶问题?svm的公式是什么?如果线性不可分怎么办?
为什么转为对偶问题对偶问题将原始问题中的约束转为了对偶问题中的等式约束 方便核函数的引入 改变了问题的复杂度。由求特征向量w转化为求比例系数a,在原始问题下,求解的复杂度与样本的维度有关,即w的维度。在对偶问题下,只与样本数量有关。 求解更高效,因为只用求解比例系数a,而比例系数a只有支持向量才为非0,其他全为0.若约束条件比较复杂,则很难求解,因此我们希望把带约束的优化问题转...原创 2019-07-06 23:22:39 · 2395 阅读 · 0 评论 -
逻辑回归LR和Z支持向量机SVM有什么异同,相同,不同
相同点:LR和SVM都是分类算法。 LR和SVM都是监督学习算法。 LR和SVM都是判别模型。 如果不考虑核函数,LR和SVM都是线性分类算法,也就是说他们的分类决策面都是线性的。 说明:LR也是可以用核函数的.但LR通常不采用核函数的方法。(计算量太大)不同点:损失函数不同,LR采用log损失,SVM采用合页(hinge)损失 LR对异常值敏感,SVM对异常值不敏感。 计算...原创 2019-04-29 16:43:20 · 318 阅读 · 0 评论 -
合页损失,svm的损失
1、Hinge损失函数首先我们来看什么是合页损失函数(hinge loss function):hinge loss function下标”+”表示以下取正值的函数,我们用z表示中括号中的部分:也就是说,数据点如果被正确分类,损失为0,如果没有被正确分类,损失为z。合页损失函数如下图所示:2、SVM损失函数SVM的损失函数就是合页损失函数加...原创 2019-09-29 15:31:36 · 344 阅读 · 0 评论 -
TF-IDF
TF-IDF算法介绍TF-IDF(term frequency–inverse document frequency,词频-逆向文件频率)是一种用于信息检索(information retrieval)与文本挖掘(text mining)的常用加权技术。 TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出...原创 2019-08-01 23:48:02 · 377 阅读 · 0 评论 -
xgboost的原理,损失函数,优化,
不经感叹大佬真多,本文转自https://www.jianshu.com/p/7467e616f227xgboostd多颗树的损失 子树cart树,并且叶子节点为分数,不是类别,所有多棵树损失和容易优化,速度快 分步提升,先优化一棵树,后面逐渐加入子树损失f,逐步优化目录2、xgboost3、训练xgboost4、加法训练5、模型正则化项6、见证奇迹的时刻...原创 2019-07-25 23:35:37 · 21488 阅读 · 1 评论 -
决策树详解
目录决策树定义划分选择ID3(信息增益)C4.5(信息增益比)CARTID3、C4.5、CART的区别信息增益 vs 信息增益比Gini 指数 vs 熵决策树定义类似于我们平时利用选择做决策的过程。表示基于特征对实例进行分类的过程,可以认为是if-then的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。结构: 决策树在逻辑...原创 2019-06-05 23:28:25 · 1454 阅读 · 0 评论 -
PCA 和LDA(这里指线性判别分析,而非LDA是隐含狄利克雷分布(Latent Dirichlet Allocation))
PCA的思想 PCA是找出数据里最主要的方面,用数据里最主要的方面来代替原始数据。具体的,假如我们的数据集是n维的,共有m个数据(x(1),x(2),...,x(m))(x(1),x(2),...,x(m))。我们希望将这m个数据的维度从n维降到n'维,希望这m个n'维的数据集尽可能的代表原始数据集。我们知道数据从n维降到n'维肯定会有损失,但是我们希望损失尽可能的小。那么如何让这n'...原创 2019-09-10 18:42:34 · 591 阅读 · 0 评论 -
核函数
1.LinearKernel线性核是最简单的核函数,核函数的数学公式如下:2.PolynomialKernel多项式核实一种非标准核函数,它非常适合于正交归一化后的数据,其具体形式如下:3.GaussianKernel这里说一种经典的鲁棒径向基核,即高斯核函数,鲁棒径向基核对于数据中的噪音有着较好的抗干扰能力,其参数决定了函数作用范围,超过了这个范围...原创 2019-09-29 15:12:13 · 846 阅读 · 0 评论 -
numpy中数组布尔索引
#!/usr/bin/env python# -*- coding:utf-8 -*- # Author: Jia ShiLinimport numpy as npt = np.arange(24).reshape((4, 6))print(t)print(t > 20)#布尔索引print(t[t > 20])#布尔索引t[t > 20] = 11#布尔...原创 2019-03-25 00:42:11 · 391 阅读 · 0 评论 -
np.prob()
np.prod()函数用来计算所有元素的乘积,对于有多个维度的数组可以指定轴,如axis=1指定计算每一行的乘积。原创 2019-06-09 20:00:01 · 3958 阅读 · 3 评论 -
把矩阵保存为图片,序列化
最佳解决办法可以使用scipy.misc,代码如下:import scipy.miscscipy.misc.imsave('outfile.jpg', image_array)上面的scipy版本会标准化所有图像,以便min(数据)变成黑色,max(数据)变成白色。如果数据应该是精确的灰度级或准确的RGB通道,则解决方案为:import scipy.miscmisc.to...原创 2019-07-21 11:03:36 · 864 阅读 · 0 评论 -
如何处理数据中的缺失值
可以分为以下 2 种情况缺失值较多 直接舍弃该列特征,否则可能会带来较大的噪声,从而对结果造成不良影响。 缺失值较少 当缺失值较少(<10%)时,可以考虑对缺失值进行填充,以下是几种常用的填充策略: 用一个异常值填充(比如 0),将缺失值作为一个特征处理 data.fillna(0) 用均值|条件均值填充 如果数据是不平衡的,那么应该使...原创 2019-06-27 16:12:54 · 2121 阅读 · 0 评论 -
matplotlib调整子图间距,调整整体空白
fig.tight_layout()#调整整体空白plt.subplots_adjust(wspace =0, hspace =0)#调整子图间距原创 2019-03-21 13:09:31 · 6753 阅读 · 0 评论 -
HMM隐马尔科夫模型(hidden Markov Model)
隐马尔科夫模型将会从以下几个方面进行叙述:1 隐马尔科夫模型的概率计算法 2 隐马尔科夫模型的学习算法 3 隐马尔科夫模型的预测算法隐马尔科夫模型其实有很多重要的应用比如说:语音识别、自然语言处理、生物信息、模式识别等等同样先说一下什么是马尔科夫,这个名字感觉就像高斯一样,无时无刻的渗透在你的生活中,这里给出马尔科夫链的相关解释供参考:马尔可夫链是满足马尔可夫性质的随机过程,...转载 2019-07-21 15:08:56 · 354 阅读 · 0 评论 -
KNN(k-近邻算法)
#!/usr/bin/env python# -*- coding:utf-8 -*- # Author: Jia ShiLin'''KNN(k-Nearest Neighbor)算法: 思想: 利用已知标签的样本集,来分类未知标签的新数据,将新数据的 每个特征和样本进行比较,提取出样本集中特征最相似的数据分类标签 KNN算法的流程:...原创 2019-03-26 01:00:45 · 165 阅读 · 0 评论 -
opencv pycharm
https://blog.csdn.net/AmberSay/article/details/78787326#测试函数import cv2import numpy as np# import pdb# pdb.set_trace()#turn on the pdb prompt# read imageimg = cv2.imread("D:/n.jpg...原创 2019-03-20 11:23:21 · 155 阅读 · 0 评论 -
tensorflow安装
原创 2019-03-20 11:23:10 · 65 阅读 · 0 评论 -
逻辑回归和线性回归相同点和不同点
相同点:两个都是线性模型,线性回归是普通线性模型,逻辑回归是广义线性模型 表达形式上,逻辑回归是线性回归套上了一个Sigmoid函数 参数估计上,都是用极大似然估计的方法估计参数区别线性回归优化的目标函数是均方差(最小二乘),而逻辑回归优化的是似然函数(交叉熵) 线性归回要求自变量与因变量呈线性关系,而逻辑回归没有要求 线性回归分析的是因变量自身与自变量的关系,而逻辑...原创 2019-09-16 22:58:43 · 3786 阅读 · 0 评论 -
m1=tf.constant([[2,3]]) m2 =tf.constant([[2],[3]]) product = tf.matmul(m1,m2) with tf.Session() as
CentOS7利用pip快速安装TensorFlow2017年09月06日 14:05:23阅读数:1737先前玩大数据组件,Linux操作系统一直用的CentOS,手感很不错。近期转战人工智能坑,练手TensorFlow时,还是想基于CentOS来玩。目前比较成熟的应该是6.X版本,不过6系列的Python版本较低,还是2.6,对TensorFlow不支持。目前Python2.7与P...原创 2019-03-20 11:23:03 · 314 阅读 · 0 评论 -
session and graph
m1=tf.constant([[2,3]])m2 =tf.constant([[2],[3]])product = tf.matmul(m1,m2)with tf.Session() as sess:result = sess.run(product)print(result)原创 2019-03-20 11:22:55 · 106 阅读 · 0 评论 -
numpy随机数
#!/usr/bin/env python# -*- coding:utf-8 -*- # Author: Jia ShiLinimport numpy as npt1 = np.arange(1, 13).reshape(3, 4)print(t1)print(t1.shape)# zeros((shape),dtype)add_one = np.zeros((t1.shap...原创 2019-03-26 00:59:25 · 203 阅读 · 0 评论 -
自定义刻度matplotlib
value=[83,80,75,71,72,73,77]index =[0.5,0.3,0.2,0.1,0.05,0.01,0.001]index1 =['0.5','0.3','0.2','0.1','0.05','0.01','0.001']plt.xticks(range(0,8,1),index)plt.ylabel('RMSE ',fontsize=17)plt.xlabe...原创 2019-08-21 16:46:15 · 357 阅读 · 0 评论 -
对偶问题
目录原问题与对偶问题的关系强对偶原因:原问题与对偶问题的关系定义一个原问题:写出拉格朗日:其中 λ>=0对偶函数:对偶函数 θ 产生了一个原问题最优值p* 的一个下界,也就是,对于任意的λ>=0 以及 μ 来说,有:好了,现在证明对偶问题是原问题的下界(假设 x* 是在可行域内):...原创 2019-07-07 23:19:13 · 5298 阅读 · 0 评论 -
xgboost调参调优
https://blog.csdn.net/u010665216/article/details/78532619原创 2019-09-11 10:33:52 · 176 阅读 · 0 评论 -
决策树处理连续值的方法
因为连续属性的可取值数目不再有限,因此不能像前面处理离散属性枚举离散属性取值来对结点进行划分。因此需要连续属性离散化,常用的离散化策略是二分法,这个技术也是C4.5中采用的策略。下面来具体介绍下,如何采用二分法对连续属性离散化,以t划分后的信息增益:对于数据集中的属性“密度”,决策树开始学习时,根节点包含的17个训练样本在该属性上取值均不同。我们先把“密度”这些值从小到大排序:...原创 2019-07-18 19:47:51 · 1249 阅读 · 0 评论 -
SVD,PCA ICA,CCA
矩阵奇异值分解(SVD)奇异值分解(Singular Value Decomposition)是一种重要的矩阵分解方法,可以看作对称方阵在任意矩阵上的推广。 假设A是一个m*n阶实矩阵,则存在一个分解使得:SVD的不足上面我们举了例子,SVD是很粗暴的将数据的特征值排一个序,然后选取最大的几个特征值来代表原数据的特征,这在图像处理方面确实没有问题,因为图像存储在电脑中说白了...原创 2019-07-21 15:23:36 · 697 阅读 · 0 评论 -
pd.cut()
pandas.cut用来把一组数据分割成离散的区间。比如有一组年龄数据,可以使用pandas.cut将年龄数据分割成不同的年龄段并打上标签。pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates='raise') #0.23.4x...原创 2019-10-18 11:18:24 · 6686 阅读 · 0 评论 -
样本不均衡问题如何处理
1. 产生新数据型:过采样小样本(SMOTE),欠采样大样本。过采样是通过增加样本中小类样本的数据量来实现样本均衡。其中较为简单的方式是直接复制小类样本,形成数量上的均衡。这种方法实现简单,但会由于数据较为单一而容易造成过拟合。 SMOTE过采样算法: 针对少数类样本的xi,求出其k近邻。随机选取k紧邻中一个样本记为xn。生成一个0到1之间的随机数r,然后根据Xnew = xi + r * (x...原创 2019-07-29 22:48:14 · 1894 阅读 · 0 评论 -
np.empty(),np.zeros()
np.emptynp.empty(shape,[dtype, order])依据给定形状和类型(shape,[dtype, order])返回一个新的空数组。#!/usr/bin/env python# -*- coding:utf-8 -*- # Author: Jia ShiLinimport numpy as npnum_recs=5X =np.empty...原创 2019-07-05 23:47:56 · 8119 阅读 · 0 评论 -
隐含狄利克雷分布(Latent Dirichlet Allocation)
隐含狄利克雷分布(Latent Dirichlet Allocation, 注意机器学习还有一个LDA,即线性判别分析(线性判别分析https://blog.csdn.net/qq_35290785/article/details/89851172)LDA贝叶斯模型 LDA是基于贝叶斯模型的,涉及到贝叶斯模型离不开“先验分布”,“数据(似然)”和"后验分布"三块。在朴素贝叶...原创 2019-09-13 09:30:53 · 1627 阅读 · 0 评论 -
海量文本相似度计算
总的理解我的感觉是加权求和,和embedding有点类似,最后判断‘距离’SimHash定义SimHash是一种局部敏感hash,它也是Google公司进行海量网页去重使用的主要算法。传统的Hash算法只负责将原始内容尽量均匀随机地映射为一个签名值,原理上仅相当于伪随机数产生算法。传统的hash算法产生的两个签名,如果原始内容在一定概率下是相等的;如果不相等,除了说明原始内容不相等外...原创 2019-07-20 15:14:18 · 1079 阅读 · 0 评论 -
Hinge损失函数,SVM损失函数
目录1、Hinge损失函数2、SVM损失函数1、Hinge损失函数首先我们来看什么是合页损失函数(hinge loss function):下标”+”表示以下取正值的函数,我们用z表示中括号中的部分:也就是说,数据点如果被正确分类,损失为0,如果没有被正确分类,损失为z。合页损失函数如下图所示:2、SVM损失函数SV...原创 2019-07-22 22:13:56 · 2369 阅读 · 0 评论 -
论文或者界面,或者PPT 等等绘图,,,画图介绍和相关工具
matpoltlib.pyplothttps://matplotlib.org/gallery/index.html网上百度plotlyhttps://plot.ly/python/dropdowns/echart 基于js的交互图https://www.echartsjs.com/examples/index.html#chart-type-scatt...原创 2019-04-01 23:47:54 · 206 阅读 · 0 评论 -
basemap安装
找到一个网站,Unofficial Windows Binaries for Python Extension Packages,链接:http://www.lfd.uci.edu/%7Egohlke/pythonlibs/意思是提供非官方的Windows环境下Python扩展包。通过CTRL + F 快速找到我们要安装的basemap。Basemap, a matplotlib too...原创 2019-09-22 19:28:37 · 5272 阅读 · 0 评论 -
np.random.choice方法
np.random.choice方法def choice(a, size=None, replace=True, p=None) 表示从a中随机选取size个数 replacement 代表的意思是抽样之后还放不放回去,如果是False的话,那么通一次挑选出来的数都不一样,如果是True的话, 有可能会出现重复的,因为前面的抽的放回去了。 p表示每个元素被抽取的概率,如果没有指定,a...原创 2019-10-05 16:37:21 · 521 阅读 · 0 评论 -
贝叶斯公式,垃圾邮件分类判断
是下面这个贝叶斯公式:换个表达形式就会明朗很多,如下:垃圾邮件关键词串联定律表格法可视化贝叶斯定律比如如果出现发票这个词,那么此文件垃圾文件的概率为90%。。如果出现购买这个词,垃圾文件概率为80%得到以下表格----------表格开始---------- 词汇 垃圾邮件概率 正...原创 2019-09-24 23:41:58 · 2148 阅读 · 0 评论 -
求筛子的熵,信息熵、KL 散度(相对熵)与交叉熵
总的公式:信息熵信息熵是指一个概率分布p的平均信息量,代表着随机变量或系统的不确定性,熵越大,随机变量或系统的不确定性就越大。从编码的角度来看,信息熵是表示一个概率分布p需要的平均编码长度,其可表示为:交叉熵交叉熵是指在给定真实分布q情况下,采用一个猜测的分布p对其进行编码的平均编码长度(或用猜测的分布来编码真实分布得到的信息量)。交叉熵可以用来衡量真实数据分布于当前分...原创 2019-06-26 23:14:21 · 4437 阅读 · 0 评论 -
协同过滤中的相似度计算三种方法
欧氏距离法 就是计算每两个点的距离,比如Nike和Sony的相似度。数值越小,表示相似度越高。def OsDistance(vector1, vector2): sqDiffVector = vector1-vector2 sqDiffVector=sqDiffVector**2 sqDistances = sqDiffVector.su...原创 2019-09-10 16:38:01 · 4540 阅读 · 0 评论