- 博客(125)
- 收藏
- 关注
原创 图论基础知识
图论 图的构成:节点和边 贝叶斯网:有向图 随机游走:无向图 分类: 有向图: 无向图: 一:节点X 图里面的所有点 X = {x1,x2…} 二:边E 分类: 有向边 G 无向边 H 三:子图 完全子图: X中任意两个几点均有一条边连接,即所有点之间完全相通 完全子图里面的所有点叫做团 最大团:当加入新节点无法也形成完全子图的时候就是最大团 四:路径 无方向路径:只要点与点之间有连接,就是一条路径 有方向路径:需要沿着方向的方向走,才是一条路径,只要存在任意一条逆方向的就不是路径
2021-09-19 10:50:43
728
原创 SVM算法推导过程
SVM算法 SVM:支持向量机 目的:解决感知机的问题 感知机问题: 1.泛化能力弱 2.只关注错误点,不考虑各类别的分布,就会出现过拟合 一:SVM介绍 1.svm思想 数据集中的点在分割之后离超平面越远越好 分割:理解为函数 f 超平面:理解为参数W , 决定函数的集合 分割和超平面理解为: f(W) 越远越好: 越远则预留的空间越大,可以容纳更多新的数据点,解决泛化能力 多个类别的时候要综合考虑类与类之间的距离 二.SVM模型 需要解决两个问题: 1.距离计算 max[marg(Wi,Xi)]
2021-09-12 01:01:21
972
原创 决策树建模分析流程
决策树建模流程 一:数据处理 先划分数据集 缺失值填充 0/1转码 虚拟变量处理 相关关系对比,删除相关关系大的部分特征 等等 二:建模 from sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import cross_val_score clf = DecisionTreeClassifier(random_state=420,class_weight='balanced') cvs = cross_v
2021-09-06 22:03:58
703
原创 梯度下降原理
梯度下降原理 1.梯度下降介绍 背景:最优化,求极值 MLE 和 MAP的 函数f(w)较复杂的时候,无法求导或者求导困难怎么办? -->梯度下降 极值: 即 f(w)的导数=0 的时候的解 导数代表下降速度,越陡说明速度越快,正方形上升速度,负方向代表下降速度 沿着梯度的方向可以更快更好的达到极值 最优解和初始值有关,要么取得的是局部最优要么就是全局最优 局部最优: 全局最优: 关键点: 步长=x2 - x1 梯度=y2 - y1 方向(初始值):决定是局部最优还是全局最优 沿着
2021-09-02 23:36:28
293
原创 SVM算法原理介绍
SVM算法 目的:解决感知机的问题 感知机问题: 1.泛化能力弱 2.只关注错误点,不考虑各类别的分布,就会出现过拟合 一:SVM介绍 1.svm思想 数据集中的点在分割之后离超平面越远越好 分割:理解为函数 f 超平面:理解为参数W , 决定函数的集合 分割和超平面理解为: f(W) 越远越好: 越远则预留的空间越大,可以容纳更多新的数据点,解决泛化能力 多个类别的时候要综合考虑类与类之间的距离 二.SVM模型 需要解决两个问题: 1.距离计算 max[maxarg(Wi,Xi)] 2.s.t 前提
2021-09-02 23:35:37
354
原创 线性分类介绍
线性分类 频率派: 线性回归 / 线性分类 贝叶斯派:概率图 线性: 属性非线性 / 全局非线性 / 系数非线性 线性分类模式: 硬分类 / 软分类 硬分类:主观的给出直线划分,指定属于哪个类,(例如: 感知机,线性判别) 软分类:概率判断:如逻辑回归 / 生成类:如朴素贝叶斯 一:硬分类 1.1感知机 找到一条分界线,分割不同类别 原理:错误驱动 迭代公式: 损失函数L(w)=∑i=1n(yiWxi<0)yiWxi<0代表分类错误当点刚好落在y直线的时候,yiWxi=0当点落在y直线上方的时候
2021-08-22 21:59:07
827
原创 无监督学习--K-Means
无监督学习–K-Means 聚类 分类 核心 将数据分成多组探索每个组的数据是否有联系 从已经分组的数据中去学习把新的数据放到已经分好的组中去 学习类型 无监督,无标签训练 有监督,需要标签进行训练 典型算法 K-Means,DBSCAN,层次聚类,光谱聚类 决策树,贝叶斯,逻辑回归,KNN 算法输出 聚类结果是不确定的不一定总是能够反映数据的真实分类同样的聚类,根据不同的业务需求,可能是好的结果也可能是不好的结果 分类结果是确定的分类的优劣是客观的不是根据业务或算法决定的
2021-08-21 16:17:04
883
原创 逻辑回归实现
有监督学习–逻辑回归 一:算法原理 区别于线性回归,逻辑回归输出的是分类变量 作用:基于线性回归的原理,解决二分类问题或者多分类问题 1.Sigmoid函数:例如:对数几率函数 2.公式 逻辑回归表达式:y=11+e−(WTx+b)进一步可得:lny1−y=WTx+b举例如下:二分类:1的概率P,则0的概率1−PlnP1−P=WTx+b所以lnP1−P又称为对数几率,反映了样本取正例1的相对可能性 逻辑回归表达式:y = \frac{1}{1+e^{-(W^Tx+b)}} \\ 进一步可得:ln\frac
2021-08-19 23:15:23
235
原创 有监督学习--线性回归
有监督学习–线性回归 一:算法原理 多元线性回归:每个 x 代表一个特征 模型: [y1y2...yp]=[1,x11,x12,...,x1p1,x21,x22,...,x2p...1,xn1,xn2,...,xnp]∗[w0w1...wp]=w0+XW \left[ \begin{matrix} y_1 \\ y_2 \\ ... \\ y_p \end{matrix} \right] = \left[ \begin{matrix} 1,x_{11},x_{12},...,x_{1p} \\ 1,
2021-08-16 21:40:05
255
原创 有监督算法-决策树
有监督算法-决策树 一:算法概述 决策树:包括分类树/ 回归树,回归树较少用,所以这里主要介绍分类树 算法流程:特征选择–>决策树生成–>决策树剪枝 二:特征选择 2.1 香浓熵(信息熵) 熵代表信息混乱程度,越混乱熵就越高 熵的计算公式: Entropy(m)=−∑i=1kpilog2pi Entropy(m) = -\sum_{i=1}^{k}p^ilog_2p^i Entropy(m)=−i=1∑kpilog2pi 当p=0,则熵=0,因为确定性100%,没有信息混乱 #信息熵的计算
2021-08-11 17:42:35
654
1
原创 线性回归公式推导
线性回归 一:最小二乘法 用最小二乘法约束 最小二乘法即损失函数,保证 (Xi-Xj)2+(Yi-Yj)2 的和 最小,即每个点到模型上的距离最小 1.1 数据集: D={(x1,y1),(x2,y2),(x3,y3)…(xn,yn)} 特征A 特征B 特征C x1 1 1 1 x2 1 1 1 … … … … xn 1 1 1 xi=[xi1xi2...xip]=P∗1p代表特征数,每个x变量都有p个特征 xi = \left[ \begin{matrix} x_i
2021-08-10 13:33:00
383
原创 有监督算法-KNN
有监督算法-KNN/K近邻 一:原理 1.计算o点到所有点的欧氏距离 欧氏距离:d=(xa−xb)2+(ya−yb)2 欧氏距离: d = \sqrt{(x_a-x_b)^2+(y_a-y_b)^2} 欧氏距离:d=(xa−xb)2+(ya−yb)2 2.假设 K = 4 ,则选择距离最小的 K 个点 3.统计 K 个点属于哪些类 4.找到 K 个点中所属类最多数量,则把O点分为该类 二:算法优缺点极其变种 2.1 优缺点 算法参数 K 的取值影响模型效果,所以后面需要通过学习曲线去确定K值得
2021-08-09 11:53:20
495
原创 ABTest结果验证
ABTest结果验证 一:函数介绍 pdf:概率密度函数 ——注意和正态分布函数不一样 ppf:分位点函数(CDF的逆)——即根据给定概率求临界点的值,注意这里的概率是从左侧开始算的。 cdf:累计分布函数 ——即pdf曲线下方面积,也即概率,是从左侧开始计算的,所以可以看到x越大,cdf的值越大 二:cdf(x,μ,σ) 参数介绍: 2.1 cdf(x) 默认 服从 μ=0,σ=1 的正态分布,结果表示 x 在 正态分布N(0,1)中左侧检验的结果概率P值 2.2 cdf(x , 2 , 3) 表示: x
2021-08-06 17:13:39
364
原创 ABTtest样本量计算
ABTtest样本量计算 一:两个总体只差的样本量计算 目的:测试组比对照组提升30%的活跃度(DAU均值) H0: μ0 - μ1<=30% H1:μ0 - μ1>30% 计算公式: nA=knB and nB=(1+1k)(σz1−α/2 +z1−βμA−μB)2 n_A = kn_B\ and\ n_B = (1 + \frac{1}{k})(\sigma\frac{z_{1- \alpha/2} \ \ \ + z_{1-\beta
2021-08-04 16:44:22
856
原创 python常用的检验方法
一:Z检验 #数据: price_earnings_ratio 利率 import pandas as pd import numpy as np import statsmodels.stats.weightstats as sw z_mean = data['price_earnings_ratio'].fillna(0).mean() print('均值:',z_mean) z_std = data['price_earnings_ratio'].fillna(0).std() print('标准
2021-08-03 13:24:22
1085
原创 决策树和熵
决策树和熵 一:熵 1.熵:用于衡量不确定性 公式: H(x)=−∑(pi)∗log(pi)例如:x取值,x1=0.5,x2=0.5H(x)=−0.5log0.5−0.5log0.5=0.69 H(x) = -\sum(pi)*log(pi) \\ 例如: x取值,x_1 = 0.5 , x_2 = 0.5 \\ H(x) = -0.5log0.5-0.5log0.5 = 0.69 H(x)=−∑(pi)∗log(pi)例如:x取值,x1=0.5,x2=0.5H(x)=−0.5log0.5−0.5log
2021-07-31 23:09:12
358
1
原创 过拟合和欠拟合
拟合 实际就是数学模型 一:过拟合 训练集表现好,但是测试集表现不佳,即泛化性能差(泛化误差) 原因: 1.样本单一 2.正负样本比例不协调 3.异常点太多 4.模型越来越复杂 解决方式: 1.如果是样本单一,可以增加训练的数据集 2.如果是正负样本不协调,可以通过配比权重解决 如何防止过拟合: 1.最根本的可以通过扩大数据量 2.nlp拆解语句组成新的数据集 3.控制模型复杂度 3.1 随机森林可以控制树的复杂度 3.2 正则化/集成学习 3.3 减少训练次数,早点结束训练 二:欠拟合
2021-07-29 21:13:37
242
原创 假设检验方法选择
假设检验方法选择 一:判断统计量应该选择什么分布 判断流程: 1.样本量是否大于30,小于30则为小样本 2.能否通过正态检验 3.是否可以增加样本 二:单样本分布 三:多总体
2021-07-22 22:48:14
707
原创 统计学基础
统计学 一:基础统计 1.1描述统计 统计学本质:通过抽样样本(使用统计方法)推断总体参数(均值/比例/方差/相关)是否成立的概率 1.1.1测量尺度 分类变量: 定类:分类(性别) 定序:分类+排序(对定类变量进行排序:比如电影类型排序) 连续变量: 定距:分类+排序+加减(比如评分0-10 / 温度),没有绝对0点,即0也有意义 定比:分类+排序+加减+乘除(身高,体重,收入) 分类变量:只能用频次统计 连续变量:可以使用频次和均值标准差等 1.1.2均值 算术均值:求
2021-07-09 22:03:00
4296
原创 Pandas索引
一:索引 1.1 DataFrame索引 行索引默认是数字类型,但是不能见名知意,所以如果可以使用唯一id会更好 例如: data.index = data[‘id’] id(index) 可以显示索引的地址 行索引和列索引都是Index类型 1.2修改索引 行索引不支持修改,是因为索引是Index类型,不可以直接修改索引的内容 例如:index[1] = ‘001’ 这样会报错! 1.3不可变对象 字符串 字符串,a=‘abc’ / a=‘abcd’ 修改字符串只是修改了字符串的引用 1.4可变对象 l
2021-07-04 11:11:02
289
原创 Pandas(loc,apply)
一.取数 单列 1.pd['列名'] 2.pd.loc[:,'列名'] 3.pd.iloc[:,3] 数字代表列索引 4.pd.列名 多列 1.pd.loc[:,'列1':'列5'] 取列1到列5这个区间的数据 2.pd.loc[:,['列1','列2']] 罗列需要取得列名称 注意:建议使用loc的方式,因为可读性比较高 二:布尔索引 1.三元表达式 java: x>10 ? x : 0 表示当x>10 的时候返回x,否则返回0 python: x if(x>10) el
2021-06-26 12:51:21
614
原创 异常值判定
对于异常值判断一般有两种方式: 一:z分数法 前提:样本需要复合正态分布 Z分数 = (原始取值-均值)/(标准差) 表示的是每个取值距离均值多少个标准差单位 结论:99.7%的数据都会落到均值3倍标准差之内的范围,所以正常值取值范围:均值 ± 3*标准差 二:上下限法-箱线图 上限 = Q3 + 1.5*(Q3 - Q1) 下限 = Q1 - 1.5*(Q3 - Q1) Q1 表示四分之一分位数 Q3 表示四分之三分位数 ...
2021-06-16 22:38:21
842
原创 Celery调度器的使用
Celery调度器的使用python开发调度去代码如下:执行代码1.启动任务发布端2.启动结果返回端错误提示: python开发调度去 代码如下: from celery import Celery from celery.schedules import crontab import datetime #这个类放配置信息 class Config(): broker_url = 'redis://127.0.0.1/1' #这个代表本地redis 的 1 数据库,做为celery的发布端
2021-06-05 22:57:14
389
1
原创 kettle创建时间维度
一:流程 二:实现步骤 1.小时 1.1生成小时 1.2增加小时序列 1.3javaScript代码生成小时和AM/PM //生成12小时 var hours12 = hours24.getInteger() % 12 ; //生成AM/pm var am_pm = hours24.getInteger() > 12 ? "PM" : "AM"; 2.分钟 2.1生成分钟 2....
2020-02-16 21:57:39
637
原创 kettle创建日期维度表
一:流程 二:实现步骤 1.生成记录 2.增加日期序列 3.生成日期的属性(JavaScript代码) //locale var locale = new java.util.Locale(language.getString(),country.getString()); //calendar var calendar = new java.util.GregorianCalendar(...
2020-02-16 20:11:18
1772
3
原创 线程池的实现
一:线程容器 使用集合存储线程: ArrayList HashSet HashMap LinkedList 这里使用LinkedList 因为链表的增删快 线程池避免频繁创建线程和销毁线程的资源浪费 二:实现步骤 2.1 当程序启动的时候就创建多个线程,并且把线程保存到链表中,就可以从链表中拿来用 2.2 获取线程 从集合中拿出 2.3 归还线程 把线程放进集合 三:内置线程池 JDK1.5 之...
2020-02-06 16:40:39
171
原创 解决多线程安全问题三种方式
解决多线程安全问题的三种方式: 一:同步代码块 同步代码块格式: synchronized (锁对象){被多线程执行的代码} 锁对象: 锁对象可以实任意对象 3 1.声明线程 //声明线程 public class MyRunnable implements Runnable { //1.定义全局变量 private int i = 100; //2.创建对象,作为同步代码...
2020-02-06 15:48:06
443
原创 实现多线程的两种方式
一:继承Thread类 1.创建类继承Thread类,重写run() public class MyThread extends Thread { @Override public void run() { //打印线程名称 System.out.println(Thread.currentThread().getName()); } } ...
2020-02-06 15:04:42
142
原创 Error:java: Compilation failed: internal java compiler error
IDE报错: Error:java: Compilation failed: internal java compiler error 原因:版本问题 查看三处: 1.项目JDK版本 2.模块JDK版本 3.编译JDK版本
2020-02-03 12:12:16
176
原创 IDE提示extends methods are not supported at language level '1.5'
报错原因: jdk1.8 接口添加默认方法时报错 Extends methods are not supported at language level ‘1.5’ 解决: File -> Project Structure -> Project / Modules
2020-02-02 20:45:44
619
原创 图的最小生成树
一:最小生成树 连接每个顶点最少的连线,最小生成树的数量总是比顶点的数量少1 二:代码实现 1.创建栈 public class Stack { //栈的底层实现是数组 long[] arr ; //表示栈顶索引 int top; //构造方法 public Stack(){ arr = new long[10]; ...
2020-01-31 12:07:36
167
原创 图的搜索(广度优先)
一:广度优先规则 1.访问下一个邻接的未访问过的顶点,这个顶点必须是当前顶点的邻接点,标记他,并把它插入到队列中 2.如果无法执行规则1,那么就从队列头取出一个顶点,并使其作为当前顶点 3.当队列为空不能执行规则2时,就是搜索完成时. 二:代码实现 1.创建队列 public class Quene { //队列底层也是数组 long[] arr; //队列长度 ...
2020-01-31 01:21:46
148
原创 图的搜索(深度优先)
一:图的搜索 是指从一个指定顶点可以到达哪些顶点 二:搜索的分类 1.深度优先 DFS 2.广度优先 BFS 三:深度优先搜索规则 1.如果可能,访问一个邻接的未访问的顶点,标记它,并把它放进栈中 2.当不能执行规则1的时候,如果栈不能为空,就从栈中弹出一个顶点 3.当不能执行规则1和规则2的时候,就完成了整个搜索过程 四:深度优先代码实现 1.创建栈 public class Stack ...
2020-01-31 00:28:37
190
原创 图的基本概念
一:什么是图 图是一种和树相像的数据结构,通常有一种固定的形状,这是由物理或抽象的问题来决定的 二:邻接 如果两个顶点被同一条边连接,就称这两个顶点是邻接的 1.邻接表 顶点 该顶点连接的其他顶点 A B->C->D B A->C C A->B D A->E E D 2.邻接矩阵 A B C D E A 1 1 ...
2020-01-30 22:00:47
140
原创 哈希表之链地址法
作用: 1.解决压缩可选值的索引冲突问题 2.解决由于开放地址法的先插入数据占据后插入数据的索引位置问题 一:什么是链地址法 在哈希表每个单元中设置链表.某个数据项的关键字还是像通常一样映射到哈希表的单元中,而数据项本身插入到单元的链表中 二:代码实现 1.创建链表节点Node public class Node { //数据域 Person data; //指针域...
2020-01-30 20:31:21
783
原创 哈希表之开放地址法
作用: 解决因为幂连乘之后的压缩可选值二产生的索引冲突问题. 一:什么是开放地址法 当冲突发生的时候,通过查找数组的一个空位,并将数值填充进去,而不再是使用哈希函数得到的数组下标,就叫做开放地址法 二:代码实现 1.创建JavaBean类 public class Person { private String key; private String name; pub...
2020-01-30 15:51:45
826
2
原创 哈希表
一:什么是哈希表 哈希表是基于数组来实现的一种数据结构,提高了快速的插入和查找操作 二:哈希化 1.直接将关键字作为索引(关键字是数字类型) 2.将单词转换成索引(关键字是string类型) 2.1将字母转换成ASCII码,然后进行相加 存在风险: 比如: key1=abc , ,key2=bbb ;key1和key2通过将字母转化成ascii码后相加的值相等 2.2幂的连乘 127^2 + 22...
2020-01-30 13:13:37
290
原创 红黑树简单概念
一:二叉树的问题 普通的二叉树优势在于可以快速的插入 , 删除和查找 , 仅仅对于随机数来说. 如果插入的是有序的,就会变得非常慢 二:平衡树和非平衡树 插入随机的数据–平衡树 插入有序的数据–非平衡树 三:红黑规则 1.每个节点不是红色就是黑色 2.根总是黑色的 3.如果节点是红色的,那么它的子节点必须是黑色的 4.从根节点到叶子节点的每条路径,必须包含相同数目的黑色节点 四:纠正树的不和规则情...
2020-01-29 01:01:09
193
原创 删除二叉树节点
一:删除节点 删除节点比较复杂 步骤: 1.找到需要被删除的节点 2.判断该节点的类型 2.1该节点是叶子节点,直接修改父节点的引用值为null即可 2.2该节点有一个子节点,修改父节点得引用,将该节点的父节点的应用指向该节点的子节点(相当于隔开该节点) 2.3该节点有两个子节点,需要是由该节点的中序后继来替代该节点 节点的中序后继: 指的是比该节点大的且是最接近该节点的节点 二:代码实现 1....
2020-01-28 23:39:36
250
原创 遍历二叉树(前序/中序/后序)
一:遍历树 遍历树是根据一个特定的顺序访问数的每一个节点,根据顺序的不同又可以分为 前序 , 中序 , 后序 二:前序遍历(可以实现排序) 1.访问根节点 2.前序遍历左子树 3.前序遍历右子树 三:中序遍历 1.中序遍历左子树 2.访问根节点 3.中序遍历右子树 四:后序遍历 1.后序遍历左子树 2.后序遍历右子树 3.访问根节点 五:代码实现 1.创建节点Node public clas...
2020-01-28 18:35:40
137
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅