Python
峰峰jack
这个作者很懒,什么都没留下…
展开
-
python绘制散点图:二分类样本
在做机器学习数据集的探索时,需要绘制二变量的散点图,散点图要能够区分正负样本。如何用python绘制散点图呢?思路其实不复杂:1.绘制正样本,使用“+”图标2.在同一张图上绘制负样本,使用“o”图标3.展示正负样本import numpy as npimport matplotlib.pyplot as plt# # 载入数据# data = np.loadtxt('./ex1data1.txt', delimiter=',')# # 区分特征X和标签y# X,y = data[:,:原创 2021-01-28 20:09:08 · 7347 阅读 · 0 评论 -
吴恩达机器学习笔记1:手写linear regression
最近手写了linear regression,有以下几点收获:不做归一化,线性模型的训练就无法收敛吗?也可以收敛,但前提是学习率alpha要选得适当,而由于不同特征的量级差异很大,alpha要选得合适并不容易为何要做特征归一化?倒不一定是收敛速度慢,而是很难选择到合适的学习率alpha。一旦alpha选择得不合理,模型就可能无法收敛归一化的时候,要注意记录相应的均值和方差,后续对新样本做预测时也需要使用这两个参数,对特征做归一化这里就体现出手写模型的必要性,不手写很难理解为什么要做特征归一化注意原创 2021-01-18 20:32:05 · 698 阅读 · 2 评论 -
最长上升子序列:dp解法
给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。解题思路之前没有想清楚,以为单重循环就能解决问题。后来发现不行的,要解决f(i)的问题,必须要1、2……、f(i-1)的问题都解决了才行,而这前i-1个问题的解决,其实是需要多加一层循环的。还是对这个问题理解不深刻,近期多思考下其中的关键点,两周后再来重做下看看。代码class Solution(obje原创 2020-11-12 19:57:41 · 134 阅读 · 0 评论 -
dp(动态规划)思考
dp的核心思想是分治策略和表存储。分治策略并非dp所独有,很多算法都运用了把问题拆解为子问题的做法,比如递归。表存储应该是dp比较独有的一种方式,通过存储一些中间结果,可以避免重复计算,从而提升程序运行的速度。def max_length(s1,s2): # 最大公共子串,用dp求解 max_len,max_str=0,'' # 初始化矩阵 res=[[0 for j in range(len(s2))] for i in range(len(s1))] # d原创 2020-10-30 19:35:32 · 251 阅读 · 1 评论 -
N皇后:回溯算法
解题思路使用深度优先搜索,按行搜索。如果下一行搜索不到合法的路径,则相关参数回退到上一层,并尝试更新y之后再次搜索。伪代码如下:res=[] # 用于存储最终结果def dfs(n,x,arr,cols,diag1,diag2): if x==n: res.append(arr) else: # 对于每一行x,循环搜索不同的列y值 for y in range(n): if check(x,y)合法:原创 2020-10-25 10:23:35 · 142 阅读 · 0 评论 -
回溯算法讨论
目前为止,我见过的关于回溯算法最精准的定义来自于LeetCode。具体如下:回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就 “回溯” 返回,尝试别的路径。回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为 “回溯点”。许多复杂的,规模较大的问题都可以使用回溯法,有“通用解题方法”的美称。回溯算法的基本思想原创 2020-10-15 20:26:10 · 157 阅读 · 0 评论 -
[LeetCode]最长回文子串再回顾
题目描述:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”通过回顾最长回文子串这个题目,加深了对动态规划的理解。原来的理解:以为动态规划就是用来求最长公共子串的,这个理解太窄了。动态规划的核心还是递归,或者叫...原创 2019-10-12 14:52:15 · 151 阅读 · 0 评论 -
爬虫系列5:scrapy动态页面爬取的另一种思路
selenium需要运行本地浏览器,比较耗时,不太适合大规模网页抓取。事实上,还有一种执行效率更高的方法。就是事先分析js发出的GET或者POST请求的网址,这样通过python向目标地址发出同样的请求,就可以得到与浏览器一致的response结果。原创 2016-06-08 16:38:21 · 8426 阅读 · 1 评论 -
爬虫系列3:scrapy技术进阶(xpath、rules、shell等)
本文主要介绍与scrapy应用紧密相关的关键技术,不求很深入,但求能够提取要点。内容包括:1、xpath选择器:选择页面中想要的内容2、rules规则:定义爬虫要爬取的域3、scrapy shell调试:辅助调试工具4、去重设置:内置的防止重复爬取的工具5、防屏蔽:通过设置爬取时间间隔防屏蔽原创 2016-06-08 16:32:38 · 12903 阅读 · 0 评论 -
爬虫系列4:scrapy技术进阶之多页面爬取
多页面爬取有两种形式。1)从某一个或者多个主页中获取多个子页面的url列表,parse()函数依次爬取列表中的各个子页面。2)从递归爬取,这个相对简单。在scrapy中只要定义好初始页面以及爬虫规则rules,就能够实现自动化的递归爬取。原创 2016-06-08 16:34:59 · 20903 阅读 · 7 评论 -
python点滴:判断字符串是否为合法json格式
在一些情况下,我们需要判断字符串是否为合法json格式。思路很简单:尝试对字符串使用json.loads(),如果不是合法json格式,则会抛出ValueError异常。原创 2016-07-13 20:00:22 · 27870 阅读 · 2 评论 -
python点滴:读取和整合文件夹下的所有文件
当我们想读取一个文件夹下的多个文件,并且将所有文件的内容整合成一个文件,应该怎么做?基本的思路是:写一个专门的函数实现以上两个功能。主要用到的命令包括os.listdir()、codecs.open(),其中前者可以获取指定路径下所有的文件名,后者可以用指定编码打开或者创建文件。原创 2016-07-14 19:32:02 · 3866 阅读 · 0 评论 -
ROC曲线和AUC
ROC全称Receiver Operating Curve,最早应用于二战时的雷达探测,以评价信号侦测模型的优劣。在机器学习领域,ROC曲线同样用于模型效果的评价。ROC曲线样例如下图所示,其横坐标为假正率(FPR),纵坐标为真正率(TPR),曲线上的点对应不同阈值下的模型(FPR,TPR)。ROC理解的难点就在于阈值的变化,能够造成FPR和TPR的变化,从而形成曲线。当判断正负样本的阈值为极端小...原创 2018-04-17 11:21:32 · 738 阅读 · 0 评论 -
爬虫系列2:scrapy项目入门案例分析
本文从一个基础案例入手,较为详细的分析了scrapy项目的建设过程(在官方文档的基础上做了调整)。主要内容如下:0、准备工作1、scrapy项目结构2、编写spider3、编写item.py4、编写pipelines.py5、设置Settings.py6、运行spider原创 2016-06-08 16:27:27 · 4911 阅读 · 0 评论 -
scrapy爬取动态分页内容
难点:1) scrapy如何动态加载所有“下一页”:要知道scrapy本身是不支持js操作的。2) 如何确保页面内容加载完成后再进行爬取:由于内容是通过js加载的,如果不加控制,很可能出现爬到空页面的情况。处理方法:1)scrapy+selenium模拟浏览器点击:通过模拟浏览器点击的方式进行翻页,从而获取每一页内部的有效链接。2)使用WebDriverWait()等待数据加载:即确保对应内容加载完成后,在进行相应爬取任务。原创 2016-05-29 16:12:12 · 21934 阅读 · 1 评论 -
爬虫系列1:python简易爬虫分析
讲爬虫的基本原理和简易示例,包括单个网页和多网页爬虫的分析。原创 2016-05-29 16:58:25 · 2353 阅读 · 1 评论 -
python短域名数据分析框架
本文数据源及分析方法均参考《利用python进行数据分析》一书。但我重新对数据分析目标和步骤进行了组织,可以更加清晰的呈现整个挖掘分析流程。分析对象为美国某短域名网站记录的短域名生成数据。数据基本结构如下,可以看到包括使用浏览器和操作系统(’a’)、用户所在时区(’tz’)等信息。records[0]原创 2016-02-27 21:06:02 · 772 阅读 · 0 评论 -
利用python实现电影推荐
“协同过滤”是推荐系统中的常用技术,按照分析维度的不同可实现“基于用户”和“基于产品”的推荐。以下是利用python实现电影推荐的具体方法,其中数据集源于《集体编程智慧》一书,后续的编程实现则完全是自己实现的(原书中的实现比较支离、难懂)。这里我采用的是“基于产品”的推荐方法,因为一般情况下,产品的种类往往较少,而用户的数量往往非常多,“基于产品”的推荐程序可以很好的减小计算量。原创 2016-03-17 14:54:05 · 13599 阅读 · 10 评论 -
利用python库计算person相关系数
使用numpy库,可以实现person相关系数的计算,例如对于矩阵a。使用np.corrcoef(a)可计算行与行之间的相关系数,np.corrcoef(a,rowvar=0)用于计算各列之间的相关系数,输出为相关系数矩阵。原创 2016-03-17 15:01:15 · 58833 阅读 · 1 评论 -
将numpy array由浮点型转换为整型
将numpy array由浮点型转换为整型,使用numpy中的astype()方法可以实现。翻译 2016-03-18 08:57:19 · 125953 阅读 · 0 评论 -
利用矩阵计算提升推荐系统的速度
利用矩阵计算方式重写评分矩阵的计算程序,运行速度大大提升。重写后的程序包含cal_matscore()和recommend()两个方法,分别用来计算评分矩阵和进行推荐。原创 2016-03-18 11:40:05 · 2089 阅读 · 0 评论 -
ipython output logging:使用日志记录输出
通常使用ipython的%logstart日志功能时,仅开启输入的记录。例如在ipython中开启%logstart后,记录的日志文件内容如下:#!/usr/bin/env python # 2015-08-06.py # IPython automatic logging file# 12:02 # =================================print "test"如果想不仅记录print "test"这条指令,同时还能记录输出test怎么办呢。这里可以使用-o原创 2016-02-26 14:29:50 · 4292 阅读 · 0 评论 -
关于方法中的self参数和全局变
1、python中,类中方法定义的第一个参数始终是self,表示引用方法的对象自身(如a.py中的obj对象),定义方法的语句形如a.py中的Tprint(self, value);在java中也有类似的表示对象自身的参数,但定义时不会明确写出来,所以叫做隐含参数,定义方法的语句形如public void Tprint(value)。2、注意Tprint中的global修饰符,通过将变量va声明为全局变量,使得Tprint()能够访问其上层的命名空间的变量。反之,如果这里va不声明为全局变量,则va =原创 2016-03-12 15:45:49 · 1783 阅读 · 0 评论 -
Pandas分组统计函数:groupby、pivot_table及crosstab
利用python的pandas库进行数据分组分析十分便捷,其中应用最多的方法包括:groupby、pivot_table及crosstab,以下分别进行介绍。0、样例数据df = DataFrame({'key1':['a','a','b','b','a'],'key2':['one','two','one','two','one'],'data1':np.random.randn(5),'data2':np.random.randn(5)})原创 2016-02-28 17:01:25 · 91553 阅读 · 5 评论 -
利用python将数据转存入sqlite3
案例的目标是将存在文件中的json格式数据转存到sqlite数据库中。因此,需要利用python逐行读取json文件中数据,对数据进行解析和入库。具体操作步骤如下。原创 2016-03-22 20:40:47 · 17416 阅读 · 0 评论 -
sqlite的数据类型
sqlite采用更一般的、动态的数据类型。每一个存储在sqlite中的数据类型均为以下五种之一:NULL, INTEGER, REAL, TEXT, BLOB.翻译 2016-03-24 17:24:57 · 1826 阅读 · 0 评论 -
python操作sqlite3的几项问题分析
1、如何insert一条记录?其中sql语句中的%d、’%s’均为占位符,注意字符串占位符需要加引号。2、如何清空数据表?“DELETE FROM TableName”。3、如果待insert的变量中有单引号?msql = "insert into movieinfo(mid, mname, myear, mgenre, mruntime, rank, mrating, link) values(?, ?, ?, ?, ?, ?, ?, ?)", (mid, mname, myear, mgenre, mr原创 2016-03-24 16:42:52 · 3467 阅读 · 1 评论 -
python编码问题分析
主要介绍:1、编码转换的基本原理;2、将列表中的数字、字符串、Unicode都转换为string;3、将编码为A的数据,输出到编码为B的文件。原创 2016-05-28 17:32:00 · 860 阅读 · 0 评论 -
python绘图:matplotlib和pandas的应用
在进行数据分析时,绘图是必不可少的模式探索方式。用Python进行数据分析时,matplotlib和pandas是最常用到的两个库。1、matplotlib库的应用准备工作如下:打开ipython,输入命令分别导入numpy和matplotlib.pylab库。import numpy as npimport matplotlib.pylab as plt原创 2016-03-01 22:29:27 · 12387 阅读 · 0 评论