自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

竹石破岩

咬定青山不放松,不破楼兰终不还。

  • 博客(48)
  • 资源 (7)
  • 收藏
  • 关注

原创 【图神经网络】PyG的MessagePassing机制实现

参考文章:https://zhuanlan.zhihu.com/p/397560946

2021-08-08 15:05:09 1807 1

原创 【图神经网络】GNN 图神经网络相关知识点

关键问题1,GCN是否可以用于有向图?图卷积分为两大类,一类是基于谱方法(spectral methods),就是将图信号进行傅里叶变换在频域进行研究,以GCN为代表的模型,但是谱方法有一个理论要求就是拉普拉斯矩阵L要求为对称矩阵,L = D-A,即图为无向图才能满足;二类,是基于空域的研究方法(spatial methods),以GraphSage为代表的模型,空域是不分有向图和无向图的,均可以计算;因此从理论上来说GCN是不能用于有向图的,但是从代码实现层面上来看是可以的,gcn代码的实现层

2021-07-11 19:35:13 2090

原创 【图神经网络】GraphSAGE 无监督训练源码剖析

概述本教程主要介绍pytorch_geometric库examples下的graph_sage_unsup.py的源码剖析,主要的关键技术点,包括:如何实现随机采样的? SAGEConv是如何训练的?关键问题1,随机采样和采样方向的问题(有向图)首先要理解的是,采样的过程和特征聚合的过程是相反的,采样的过程,比如,如下图所示,先采样A节点的一阶邻域节点,再根据一阶采样得到的节点进行二阶采样,是一个从左到右的采样过程,而在特征聚合消息传递的时候是先从二阶节点开始聚合,逐步收敛到目标节点

2021-07-11 19:29:56 5540 7

原创 PySpark常见操作

DataFrame创建1、RDD转换DataFrame首先创建一个rdd对象from pyspark.sql import SparkSessioncolumns = [“language”,“users_count”]data = [(“Java”, “20000”), (“Python”, “100000”), (“Scala”, “3000”)]spark = SparkSession.builder.appName(‘SparkByExamples.com’).getOrCreate()

2021-07-11 19:15:29 2289 1

原创 Ensemble

Averaging两个具有显著差异的模型做Linear Blend1)多个模型的平均输出2)多个模型进行加权平均,加权系数可以通过Linear blending在validation上确定3)条件平均,不同条件下选取不同的模型Bagging相同模型不同版本的平均融合,不同状态下的模型具有不同的偏差和方差,通过模型的简单平均可以减少最后...

2020-03-21 20:52:28 707

原创 高级特征工程

均值编码(mean ecoding)1)有监督类型的编码方式:根据label进行编码,在类别Moscow中的feature_mean = #(target=1)/#Moscow(注意与frequency encoding编码的区别)means = X_tr.groupby(col).target.mean()train_new[col+'_mean_target'] = t...

2020-03-21 20:45:07 425

原创 EDA 分析

分析数据-设置验证集-检查数据泄露分析步骤: 了解领域知识 搜索关键词,搜索数据的含义 检查数据是否存在异常值,超出范围的值 理解如何生成特征 分析匿名数据(Anonymized data) 对于某些数据集中的特征被匿名的情况,我们需要通过一定的手段来推测特征的含义或者特征的类型。例如下表中,原始的text信息被使用一定的加密手段...

2020-03-20 11:39:03 451

原创 Keras自定义模型

1. 函数式 API(Function API)tf.keras.Sequential 模型是层的简单堆叠,无法表示任意模型。inputs = tf.keras.Input(shape=(32,)) # 构建一个输入张量# 层layer的实例对象是callable的,他接受一个tensor,并返回一个处理之后的tensorx = layers.Dense(64, activation...

2020-03-09 18:26:28 1614

原创 深入理解LightGBM

LightGBM的改进点,分别从减少样本数量(#data)和特征数量(#features)的角度进行了优化,从减少样本数量的角度采用了基于梯度的单边采样GOSS方法,从减少特征维度的角度采用了EFB独立特征合并的方法。LightGBM基于histogram算法代替pre-sorted所构建的数据结构,利用histogram后,会有很多有用的tricks。例如histogram做差,提高了cac...

2020-03-07 19:38:10 1370

原创 度量方法:PR & F1 & AUC

1. Precision an Recall  计算公式:precion=TPTP+FPprecion = \frac{TP}{TP+FP}precion=TP+FPTP​ recall=TPTP+FNrecall = \frac{TP}{TP+FN}recall=TP+FNTP​  在排序问题中,通常没有一个确定的阈值把得到的结果直接判定为正样本或负样本,而是采用Top N返回结果的pr...

2020-03-07 11:38:53 1693

原创 FM &FFM:深入理解FM与FFM

0.引言针对类别变量进行oner-hot编码后的高维稀疏矩阵M,可以表示如下:可以看出,经过One-Hot编码之后,大部分样本数据特征是比较稀疏的, One-Hot编码的另一个特点就是导致特征空间大。例如,电影品类有550维特征,一个categorical特征转换为550维数值特征,特征空间剧增。同时通过观察大量的样本数据可以发现,某些特征经过关联之后,与label之间的相关...

2020-03-07 10:30:36 2139

原创 第40条 考虑协程来并发运行多个函数

Python可以使用线程运行多个函数,使得这些函数看上去好像是在同一时间得到执行。然后,线程有三个显著的缺点:为了确保数据安全,我们必须使用特殊的工具来协调这些线程。便使得线程代码变得难于扩展和维护;线程需要占用大量内存,每个正在执行的线程,大约占据8MB的内存,如果在程序中运行上万的函数线程时,会导致计算机内存无法承受;线程启动时的开销比较大。如果程序不停地以靠新线程来同时执行多个函数,...

2020-02-28 12:37:26 524

原创 第39条 用Queue来协调各个线程之间的工作

Python中使用Queue实现多个线程之间的通讯。例如,现在要构建一个照片处理系统,其分为三个阶段:download、resize、和upload阶段。属于典型的生产者-消费者模型。首先,创建一个自定义的队列数据结构MyQueue。class MyQueue(object): def __init__(self): self.items = deque() ...

2020-02-27 16:51:40 218

原创 第38条 线程中使用Lock来防止数据竞争

Python在内置的threading模块中提供了Lock类,该类相当于互斥锁,可以保护各线程数据结构不被破坏。案例:新建一个Counter类,统计传感器采样获得的样本数量。### 计数器class Counter(object): def __init__(self): self.count = 0 def increment(self,o...

2020-02-27 14:20:57 217

原创 第37条 线程执行阻塞式I/O,但不能用来做平行计算

标准的Python实现叫做CPython。CPython分两步用来运行Python程序:1.首先,将文本形式的源代码解析并编译成字节码;2.然后,用一种基于栈的解释器运行这份字节码。执行Python程序时,字节码解释器必须保持协调一直的状态。Python采用全局解释器锁(GIL)机制来实现这种协调性。GIL实际上是一把互斥锁,用来防止CPython受到抢占式多线程切换操作的干扰。但是,...

2020-02-27 13:44:24 120

原创 第33/34条 用元类验证和注册子类

1.元类的定义Python定义元类时,需要从type类中继承,然后重写__new__方法,便可以实现意想不到的功能。class Meta(type): def __new__(meta,name,bases,class_dict): #...各种逻辑实现1 cls = type.__new__(meta,name,bases,class_dict) ...

2020-02-26 16:33:51 169

原创 第31条 用描述符改写需要复用的@property方法

Python内置的@property修饰器,有个明显的缺点,就是不便于复用。受它修饰的方法,无法为同一个类中的其他属性所复用,而且与之无关的类也无法复用这些方法。例如,要编写一个类,验证学生的家庭作业成绩在0~100之间。class Homwork(object): def __init__(self) -> None: self._grade = 0 ...

2020-02-26 11:40:05 188

原创 第29条 用纯属性@property取代get和set方法

在Java等语言的属性访问和设置中,通常会在类的代码中添加getter和setter方法,以实现属性的设置与获取。class OldResistor(object): def __init__(self,ohms): self._ohms = ohms def get_ohms(self): return self._ohms def se...

2020-02-25 16:11:59 363

原创 第27条 多使用public属性,少用private属性

Python类中属性的访问权限分为:public和private两种,然后对于C++类来说有:public、protected和private三种类型。class MyObject(object): def __init__(slef): self.public_field = 5 self.__private_field = 10 def get...

2020-02-25 12:56:16 245

原创 第25条 用super初始化父类

在Python中初始化父类的方法,是在子类继承的构造函数中调用父类的init方法。class Person(object): def __init__(self,name,age): self.name = name self.age = age class Student(Person): def __init__(self,name,age...

2020-02-25 12:12:56 534

原创 第24条 以@classmethod形式的多态通用地构建对象

在Python中,不仅对象支持多态,类也支持多态。多态,使得继承体系中的多个类能够以各自独有的方式来实现某个方法。这些类,都满足相同的接口或继承自相同的抽象类,但却有着各自不同的功能。案例1:实现MapReduce流程,定义表示输入数据的公共基类。class InputData(object): def read(self): raise NotImplemented...

2020-02-25 10:38:42 412 1

原创 第20条 用None和文档字符串来描述具有动态默认值的参数

有时候我们像采用一种非静态的类型,来做关键字参数的默认值。案例1:打印日志消息的时候,要把相关事件的时间也标注在信息中。import datetimefrom time import sleepdef log(message,when=datetime.datetime.now()): print("%s:%s"%(when,message))if __name__=='__ma...

2020-02-24 19:53:42 135

原创 第18/19条 位置参数/关键字参数的应用

令函数接收可变的位置参数(*args),能够让代码更加清晰。案例1:定义log函数打印输出信息,如果参数个数固定,那么必须将参数打包成列表传进去。def log(message,values): if not values: print(message) else: values_str = ', ' .join(str(x) for x in ...

2020-02-24 19:33:37 461

原创 第17条 在参数上迭代时,要多加小心

如果函数接收的参数是个对象列表,那么很有可能要在这个列表上进行迭代。案例1:统计每个城市旅游的人数,以及百分比### 标准化函数def normalize(number): total = sum(number) result = [] for value in number: percent = value * 100 / total ...

2020-02-23 15:04:17 172

原创 第16条 考虑用生成器来改写直接返回列表的函数

前面提到,对于数据量很大时,可以用生成器表达式代替列表推导,同样,当一个函数返回列表且数据量很大时,应该考虑使用生成器。案例1:获取字符串中每个单词的首字母def index_words(text): result = [] if text: result.append(0) for index,letter in enumerate(text): ...

2020-02-23 13:47:16 181

原创 第15条 闭包内使用外围作用域的变量

Python的闭包:是一种定义在某个作用域D中的函数F,这种函数F引用了作用域D里面的变量。案例1:将values列表中的数字进行排序,同时位于group中的数字放在不属于group中元素之前。def sort_priority(values,group): def helper(x): if x in group: #引用了上层作用域中的变量 ...

2020-02-23 10:46:00 275

原创 第13条 合理利用try/except/else/finally结构中的每个代码块

Python程序的异常处理可能要考虑四种不同的时机,分别为:try、except、else、finally块来表述。1.finally 块try/finally 结构,可以保证无论try是否抛出异常,都能保证finally块得到执行。handle = open('./test.txt')try: data = handle.read()finally: handle.cl...

2020-02-22 20:31:11 189

原创 第10条 enumerate 代替range & zip同时遍历两个迭代器

1. enumerate代替rangePython提供的enumerate函数可以同时获取元素的index和value.array = [1,2,3,4,5]for index, value in enumerate(array): print(index) print(value)同时,可以给enumerate提供第二个参数,指定开始计数时所用的值(默认为0)for ...

2020-02-22 20:03:06 1946

原创 第9条 用生成器表达式改写数据量比较大的列表推导

当数据量比较大时,使用列表推导需要把数据全部加载到内存当中,会消耗大量内存,导致程序崩溃。下面读取文件中的数据,此种方式只适合文件小的情况下,当文件较大时,open()操作返回的文件对象会保存在内存中,再使用列表推导取出数据。value = [x for x in open('./test.txt')]print(value)1.生成器表达式为了解决此类问题Python提供了生成器表达...

2020-02-22 19:29:07 163

原创 第7条 用列表推导来代替map和filter

第7条 用列表推导来代替map和filterPython提供了一种精简的方法,可以根据一份列表来生成另外一份列表,即为列表推导。实例1:生成每个元素的平方列表推导形式:a = [1,2,3,4,5,6,7]squares = [x**2 for x in a]print(squares)通常的map写法需要创建lambda函数,如下:a = [1,2,3,4,5,6,7]...

2020-02-22 16:01:25 354

原创 第5条了解切割序列的方法

文章目录第5条了解切割序列的方法1. 当`start==0`或者`end==序列长度`时,可以省略2.在赋值时,对左侧列表使用切割操作,会将该列表中处在指定范围内的对象替换为新值;如果左侧切片没有指定索引,那么则会被右侧列表替换掉(即使长度不同)3.如果在切割时,右侧列表的起止索引未指定,那么会产生一个原列表的拷贝4.在同一切片操作中,不要同时使用`start`、`end`和`stride`第5...

2020-02-22 15:44:07 609

原创 第3条了解bytes、str和unicode的区别

第3条了解bytes、str和unicode的区别Python3中有两种表示字符序列的类型:str:包含Unicode字符bytes:包含原始8位而Python2也有两种表示字符序列的类型:str:包含原始8位unicode:代表Unicode编码需要注意的是,Python2和Python3的Unicode和str实例都没有和特定的二进制编码相关联,因此想要把Unicode...

2020-02-22 11:39:01 213

转载 机器学习:逻辑回归问题总结

https://www.cnblogs.com/ModifyRong/p/7739955.html

2019-07-05 14:59:06 369

转载 机器学习-CS229-notes-1:线性模型

原文连接:https://kivy-cn.github.io/Stanford-CS-229-CN/#/Markdown/cs229-notes1第一章监督学习(Supervised learning)咱们先来聊几个使用监督学习来解决问题的实例。假如咱们有一个数据集,里面的数据是俄勒冈州波特兰市的 474747 套房屋的面积和价格:居住面积(平方英尺)价格(千美元)21...

2019-03-22 16:00:33 282

原创 2018-kaggle-GoogleAnalytics-sliver-medal-solution

2018-kaggle-GoogleAnalytics-sliver-medal-solution比赛详情:https://www.kaggle.com/c/ga-customer-revenue-prediction代码:https://github.com/kangzhang0709/2018-kaggle-GoogleAnalytics-sliver-medal-solution这次G...

2019-03-17 14:31:31 311

原创 2019-kaggle-elo-top-11-solution

2019-kaggle-elo-top-11-solution比赛详情:https://www.kaggle.com/c/elo-merchant-category-recommendation代码:https://github.com/kangzhang0709This is the 11th place solution writeup. Hello, I would like to c...

2019-03-17 14:28:01 488

原创 深入理解XGBoost原理

2018-10-01 18:05:11 210

原创 jaccard相似性度量

Jaccard /IOU Jaccard index定义:度量两个集合之间相似性,index值越大则两个集合越相似,或者说两个集合重叠区域越多;公式: Jaccard distance公式:两个集合之间相似性度量; 广义Jaccard distance...

2018-09-24 13:43:33 5475

转载 【随笔2】argparse - 命令行选项与参数解析(转)

https://pymotw.com/2/argparse/

2018-07-23 08:31:39 249

原创 卷积网络padding操作理解

之前对卷积网络中padding操作一直存在错误理解,以为padding=SAME为输入和输出尺寸一样大,但是最近看了一些论文和资料后发现,之前的理解错误,下面是tensorflow中源码的实现,可以看出padding=VALID和padding=SAME的计算公式 ...

2018-07-19 16:10:18 4753

王道程序面试宝典

王道程序员面试宝典,有书签,里面很好的结合了数据结构,计算机网络,操作系统和算法等计算机专业的总结知识点和相关面试题

2018-08-30

回声状态网络源码实现

实现了回声状态网络,同时含有一维数据集和测试案例,代码运行在jupyter notebook python3 环境下

2018-06-26

机器人视觉和控制matlab实现

机器人学入门matlab代码实现工具书,富含很详细的代码教程

2018-06-15

机器人学入门教材与讲义

内含机器人学入门经典 J.CRAIG教材和斯坦福Oussama Khatib 教授的讲义教材文档

2018-06-15

模糊控制及自适应模糊器设计

课程模糊控制大作业及其完整代码实现,包括模糊控制,自适应模糊控制的matlab simulink仿真代码,以及m函数编写的自适应模糊控制器可以实现动态的修改模糊规则权重和隶属度函数

2018-06-15

计算方法复习题

数值计算期末复习必备,工科生必备。里面有选择题,填空题,纠错题和计算题

2016-01-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除