python函数

机器学习:Python实现聚类算法(二)之AP算法

吃可爱长大的小学妹 提交于 2020-03-24 18:42:52
1.算法简介 AP(Affinity Propagation)通常被翻译为近邻传播算法或者亲和力传播算法,是在2007年的Science杂志上提出的一种新的聚类算法。AP算法的基本思想是将全部数据点都当作潜在的聚类中心(称之为exemplar),然后数据点两两之间连线构成一个网络(相似度矩阵),再通过网络中各条边的消息(responsibility和availability)传递计算出各样本的聚类中心。 2.相关概念(假如有数据点i和数据点j) (图1) (图2) (图3) 1)相似度: 点j作为点i的聚类中心的能力,记为S(i,j)。一般使用负的欧式距离,所以S(i,j)越大,表示两个点距离越近,相似度也就越高。使用负的欧式距离,相似度是对称的,如果采用其他算法,相似度可能就不是对称的。 2)相似度矩阵:N个点之间两两计算相似度,这些相似度就组成了相似度矩阵。如图1所示的黄色区域,就是一个5*5的相似度矩阵(N=5) 3) preference:指点i作为聚类中心的参考度(不能为0),取值为S对角线的值(图1红色标注部分),此值越大,最为聚类中心的可能性就越大。但是对角线的值为0,所以需要重新设置对角线的值,既可以根据实际情况设置不同的值,也可以设置成同一值。一般设置为S相似度值的中值。(有的说设置成S的最小值产生的聚类最少,但是在下面的算法中设置成中值产生的聚类是最少的) 4

第一周 day1 Python学习笔记

流过昼夜 提交于 2020-03-24 17:45:54
为什么要学习Python? Python擅长的领域 1. python2.x中不支持中文编码,默认编码格式为ASCII码,而python3.x中支持Unicode编码,支持中文,变量名可以为中文,如:年龄=19(但不建议这么做)。 2. python中定义常量:把变量名全部大写 如:PIE=3.14 3. 编码格式的演变 : 4.python 中的交互性输入: import getpass #导入关于密文的模块 username=input(“your name:”) age=input(“your age: ”) #password=input(“set your password: ”) password=getpass.getpass(“set your password :”) print(“info:” ,username,age,password) 5.Python中的多行输出或者多行注释(字符串的拼接) (1)’’’ ‘’’ 三引号可以表示多行注释 ’’’ this is a program for you and you will get help from here, click this button’’’ (2)三引号的值(多行)也可以赋给一个变量使用 info=’’’ hello World, name=wujian age=22 hello!!!”’

Python常用语句及流程控制

孤人 提交于 2020-03-24 17:42:10
1. 赋值语句常用技巧 通过序列解包(sequence unpacking) 可以将多个值的序列解开,让后一一放置到变量的序列中。解包的序列中的元素必须和等号左边变量数量一致。如下: 1 values = 1,2,3 2 3 print values # output: (1, 2, 3) 4 5 x,y,z = values # output: 1 2 3 6 print x,y,z 7 8 bob_Info = {'name':'Bob','email':'bob@gmail.com'} 9 key,value = bob_Info.popitem() 10 11 print value # output: Bob 1.2 链式赋值 通过使用链式赋值(chained assignment)可以将一个值同时赋给多个变量,如下: x = y = z = 1 print x,y,z # output: 1 1 1 1.3 增量赋值 将表达式运算符( + 、 - 、 * 、 % 、 / 等)放置在赋值运算符(=)的左边,这些写法被称为增量赋值(augmented assignment),如下: 1 x = 6 2 3 x += 1 4 print x # output: 7 5 6 x *= 6 7 print x # output: 42 2. 缩进 —— Python语言的风格

python编码和小数据池

我的梦境 提交于 2020-03-24 17:37:48
python_day_6 一. 回顾上周所有内容 一. python基础 Python是一门解释型. 弱类型语言 print("内容", "内容", end="\n") 打印语句 变量: 程序运行过程中产生的中间值. 存储在内存中.供后面的程序调用 变量的数据类型:     int, 整数 str, 字符串 bool, True,False   5. 命名规则: 由数字,字母,下划线组成 不能是纯数字或者数字开头 不能是关键字 不能太长 要有意义 不要用中文 区分大小写 推荐使用驼峰和下划线命名 input() 用户输入 if 判断 if 条件: 代码块 else: 代码块 if 条件: 代码块 elif 条件2: 代码块 .. else: 二. while循环 while 条件: 循环体 else: 代码块 流程: 判断条件是否为真. 如果真.执行循环体. 再次判断条件是否真. ....直到条件为假. 执行else. 退出循环 break 直接打断循环. continue 停止当前本次循环. 继续执行下一次循环 格式化输出: %s 字符串 %d 数字 运算符: 逻辑运算 1. and. 两端同时为真. 结果才是真. 2. or 或者. 两端有一个是真. 结果就是真 3. not 取反. () => not => and => or x or y 如果x非零, x, 否则 y 编码

使用Python打造一款间谍程序

走远了吗. 提交于 2020-03-24 16:47:35
知识点 这次我们使用python来打造一款间谍程序 程序中会用到许多知识点,大致分为四块   win32API 此处可以在MSDN上查看   Python基础重点在cpytes库的使用,使用方法请点击 此处   C语言基础   Hook ​ 程序的基本原理在于通过注册Hook,记录系统事件 那么什么是Hook呢 Hook 技术又叫做钩子函数,系统在调用函数之前,钩子程序就先捕获该消息,钩子函数先得到控制权,这时钩子函数既可以加工处理(改变)该函数的执行行为,还可以强制结束消息的传递 注册Hook时我们需要先导入DLL库,在Python中我们使用ctypes来导入,导入方法如下 user32 = CDLL("user32.dll") kernel32 = CDLL("kernel32.dll") 我们导入了user32.dll和kernel32.dll 这两个DLL有什么用处呢    user32.dll   是Windows用户界面相关应用程序接口,用于包括Windows处理,基本用户界面等特性,如创建窗口和发送消息   kernel32.dll  控制着系统的内存管理、数据的输入输出操作和中断处理 流程部分 知道了我们要使用什么样的工具,那么第一步应该怎么做呢 1.首先我们需要先注册Hook到系统上,通过user32.dll中的SetWindowsHookExA函数

Python基础语法 - 列表生成器

妖精的绣舞 提交于 2020-03-24 14:59:59
列表生成式 1. L = [x for x in range(5)] print(L) #[0, 1, 2, 3, 4] 2. L = [x*2 for x in range(5)] print(L)  #[0, 2, 4, 6, 8] 3. def f(n): return n**3 a = [f(x) for x in range(5)] print(a) #[0, 1, 8, 27, 64] 生成器 Python有两种不同的方式提供生成器: 生成器表达式: 定义:类似于列表推导,但是,生成器返回按需产生结果的一个对象,而不是一次构建一个结果列表。 通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。 所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器:generator。 要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的 [] 改成 () ,就创建了一个generator: g = (x*2 for x in range

一篇文章教会你使用Python定时抓取微博评论

烂漫一生 提交于 2020-03-24 13:49:06
【Part1——理论篇】 试想一个问题,如果我们要抓取某个微博大V微博的评论数据,应该怎么实现呢?最简单的做法就是找到微博评论数据接口,然后通过改变参数来获取最新数据并保存。首先从微博api寻找 抓取评论的接口,如下图所示。 ​ 但是很不幸,该接口频率受限,抓不了几次就被禁了,还没有开始起飞,就凉凉了。 接下来小编又选择微博的移动端网站,先登录,然后找到我们想要 抓 取评论的微博,打开浏览器自带流量分析工具,一直下拉评论,找到评论数据接口,如下图所示。 之后点击“参数”选项卡,可以看到参数为下图所示的内容: 可以看到总共有4个参数,其中第1、2个参数为该条微博的id,就像人的身份证号一样,这个相当于该条微博的“身份证号”,max_id是变换页码的参数,每次都要变化,下次的max_id参数值在本次请求的返回数据中。 【Part2——实战篇】 有了上文的基础之后,下面我们开始撸代码,使用Python进行实现。 1、首先区分url,第一次不需要max_id,第二次需要用第一次返回的max_id。 2、请求的时候需要带上cookie数据,微博cookie的有效期比较长,足够 抓 一条微博的评论数据了,cookie数据可以从浏览器分析工具中找到。 3、然后将返回数据转换成json格式,取出评论内容、评论者昵称和评论时间等数据,输出结果如下图所示。 4、为了保存评论内容

Python 3.8六大新功能

僤鯓⒐⒋嵵緔 提交于 2020-03-24 12:47:32
3 月,跳不动了?>>> 近期,Python 3.8已经发布。 不过别担心,小芯已经为你总结好了Python 3.8中每个新手都应该掌握的6大新功能。 IT业日新月异,落后的Python 2将在2020年逐渐被淘汰。 2019年,随着数据科学的兴起,Python成为了最热门的程序语言。 尽管如此,面对浩如烟海的知识,应接不暇也是正常的。语法不断变化,每次Python更新,都会添加许多新的表达。有很多功能小芯只恨自己知道得太晚了。 如果读者也感同身受,这里有一个坏消息:近期,Python 3.8已经发布。 不过别担心,小芯已经为你总结好了Python 3.8中每个新手都应该掌握的6大新功能。 1. 新模块:读取元数据历 使用新的importlib.metadata模块可以读取第三方包的元数据。可以在 脚本 包中获取版本号。 2. 字典反转:排序 现在,字典可以用resersed( )在反转插入排序中实现迭代了。 3. Continue – finally 由于Python的实现问题,以前在Finally子句中添加continue语句是不合法的。现在这一问题已不复存在。 for i inrange(2): try: print(i) finally: print('A sentence.') continue print('This never shows.') # Python <=

Python专题——详解enumerate和zip

China☆狼群 提交于 2020-03-24 10:27:55
本文始发于个人公众号: TechFlow ,原创不易,求个关注 今天是 Python专题的第7篇 文章,我们继续介绍迭代相关。 enumerate 首先介绍的是enumerate函数。 在我们日常编程的过程当中,经常会遇到一个问题。 在C语言以及一些古老的语言当中是没有迭代器这个概念的,所以我们要遍历数组或者是容器的时候,往往只能通过下标。有了迭代器之后,我们遍历的过程方便了很多,我们可以直接用一个变量去迭代一个容器当中的值。最简单的例子就是数组的遍历,比如我们要遍历items这个数组。我们可以直接: for item in items: 通过迭代器的方式我们可以很轻松地遍历数组,而不再需要下标,也不需要计算数组的长度了。但是 如果我们在循环体当中需要知道元素的下标该怎么办 ? 难道我们真的只能在下标和迭代器当中选择一个吗,比如在循环体的外面添加一个变量来记录下标? idx = 0for item in items: operation() idx += 1 这样可以解决问题,但是很麻烦,一点也不简洁,用专业的话来说一点也不 pythonic (符合Python标准的代码)。为了追求pythonic,于是有了enumerate函数,来解决了我们又想直接迭代又需要知道元素下标的情形。 它的用法也很简单,我们把需要迭代的对象或者迭代器传入enumerate函数当中,它会为我们

23、Python之无参装饰器

左心房为你撑大大i 提交于 2020-03-24 08:53:10
目录 一、前置知识 1.1 *args, **kwargs 1.2 名称空间与作用域 1.3 函数对象 1.4 函数嵌套 1.5 闭包函数 二、什么是装饰器 三、为什么要用装饰器 四、装饰器的实现 4.1 无参装饰器的实现 4.2 语法糖 4.3 无参装饰器模板 一、前置知识 1.1 *args, **kwargs def index(x,y): print(x,y) def wrapper(*args,**kwargs): index(*args,**kwargs) # 本质上相当于给wrapper传入什么,给index就是调用什么 wrapper(y=222,x=111) # 111 222 1.2 名称空间与作用域 名称空间的的"嵌套"关系是在函数定义阶段,即检测语法的时候确定的 1.3 函数对象 # 1、可以把函数当做参数传入 # 2、可以把函数当做返回值返回 python中有while与for两种循环机制,其中while循环称之为条件循环,语法如下: 1.4 函数嵌套 函数的嵌套定义: def outter(func): def wrapper(): pass return wrapper 1.5 闭包函数 def outter(): x=111 def wrapper(): x return wrapper # 不给wrapper传参的情况下,让参数可以在外层函数