山中小屋


  • 首页

  • 标签

  • 分类

  • 归档

结构化非结构化数据处理

发表于 2017-10-11 | 分类于 python |

非结构化数据

非结构化数据是数据结构不规则或不完整,没有预定义的数据模型,不方便用数据库二维逻辑表来表现的数据。包括所有格式的办公文档、文本、图片、XML, HTML、各类报表、图像和音频/视频信息等等。

结构化数据

结构化数据可以使用关系型数据库来表示和存储,如MySQL、Oracle、SQL Server等,表现二维形式的数据。可以通过固有键值获取相应信息。一般特点是:数据以行为单位,一行数据表示一个实体的信息,每一行数据的属性是相同的。结构化的数据的存储和排列是很有规律的,这对查询和修改等操作很有帮助。但是,显然,它的扩展性不好

选择方法

可选择的方式有很多,这里介绍正则,跟xpath,其他的实际运用中哪个更好用用哪个就行了

正则

在 Python 中,使用内置的 re 模块

compile() 函数将正则表达式的字符串形式编译为一个 Pattern 对象

1
2
3
4
5
6
7
8
9
10
pattern = re.compile(r'正则规则')
Pattern 对象的一些常用方法
match(string[, pos[, endpos]]): 从起始位置开始查找,一次匹配
search(string[, pos[, endpos]]): 从任何位置开始查找,一次匹配
# <<<<<<成功返回Match 对象,失败返回None>>>>>>
findall(string[, pos[, endpos]]): 全部匹配,返回列表/空列表
finditer(string[, pos[, endpos]]): 全部匹配,返回(Match对象)迭代器
split(string[, maxsplit]): 能够匹配的子串进行分割,返回列表
sub(repl, string[, count]):替换
# 引用分组可以用(\6 \1', string))

阅读全文 »

requests

发表于 2017-10-11 | 分类于 python |

Requests 继承urllib的所有特性。支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的 URL 和 POST 数据自动编码。

安装

  • pip install requests
  • easy_install requests

get

1
2
response = requests.get("http://www.baidu.com/")
response = requests("get","http://www.baidu.com/")

POST

1
response = requests.post("http://www.baidu.com/", data = data)

其他方法可以自行搜索

响应内容

1
2
3
4
5
6
7
8
9

response.url # 打印请求url
response.headers # 打印头信息
response.cookies # 打印cookie信息
response.text # 以文本形式打印网页源码
response.content # 以字节流形式打印
response.status_code # 打印状态码
# <str 使用encode方法转化为 bytes
# bytes通过decode转化为str>
阅读全文 »

k-近邻实现《机器学习实战》

发表于 2017-09-29 | 分类于 python |

    knn算法的实现原理是将测试数据集与样本数据集中数据对应的特征进行比较,提取k个特征最相似数据的分类标签。
1.先做一个简单的数据

1
2
3
4
5
6
7
8
9
10
from numpy import *
#简单数据
def dataset():
'''
定义一个简单数据集
:return: train 数据集,labels 对应的标签
'''
train = array([[1, 0.1], [0, 0.1], [1, 1], [0, 0]])
labels = ['A', 'B', 'A', 'B']
return train, labels

2.实现knn算法
计算两个向量点xA和xB之间的距离需要使用到欧式距离公式

$d(x,y)=\sqrt{(x_1-y_1)^{2}+(x_2-y_2)^{2}+(x_n-y_n)^{2}}=\sqrt{\sum_{i=1}^{n}(x_i-y_i)^{2}}$

例如,点(0,0)与(1,2)之间的距离计算为:

$\sqrt{(1-0)^{2}+(2-0)^{2}}$

如果数据集存在4个特征值, 则点(1,0,0,1)与(7,6,9,4)之间的距离计算为:

$\sqrt{(7-1)^{2}+(6-0)^{2}+(9-0)^{2}+(4-1)^{2}}$

阅读全文 »

算法对比

发表于 2017-09-28 | 分类于 随记 |

算法分类

监督学习(输入征值+目标值。输出可以是一个连接的值(称为回归)或是有限离散值(分类)

分类<模型评估用查准率,查全率,精度,错误率>

k-近邻(kneighbors)、贝叶斯(naive_bayes)分类、决策树与随机森林(randomForestClassifier)、逻辑回归(LogisticRegression)、神经网络

回归<模型评估用局方误差>

线性回归(LinearRegression)、岭回归(Ridge)

标注 隐马尔可夫模型

无监督学习(输入特征值推测新的结果)

 聚类 k-means

阅读全文 »

在Hexo中渲染MathJax数学公式

发表于 2017-08-11 | 分类于 hexo |

转: https://www.jianshu.com/p/7ab21c7f0674

在用markdown写技术文档时,免不了会碰到数学公式。常用的Markdown编辑器都会集成Mathjax,用来渲染文档中的类Latex格式书写的数学公式。基于Hexo搭建的个人博客,默认情况下渲染数学公式却会出现各种各样的问题。

原因

Hexo默认使用”hexo-renderer-marked”引擎渲染网页,该引擎会把一些特殊的markdown符号转换为相应的html标签,比如在markdown语法中,下划线’_’代表斜体,会被渲染引擎处理为<em>标签。
因为类Latex格式书写的数学公式下划线 ‘_’ 表示下标,有特殊的含义,如果被强制转换为<em>标签,那么MathJax引擎在渲染数学公式的时候就会出错。例如,$x_i$在开始被渲染的时候,处理为$x<em>i</em>$,这样MathJax引擎就认为该公式有语法错误,因为不会渲染。
类似的语义冲突的符号还包括’*’, ‘{‘, ‘}’, ‘\’等。

解决方法

解决方案有很多,可以网上搜下,为了节省大家的时间,这里只提供亲身测试过的最靠谱的方法。
更换Hexo的markdown渲染引擎,hexo-renderer-kramed引擎是在默认的渲染引擎hexo-renderer-marked的基础上修改了一些bug,两者比较接近,也比较轻量级。

1
2
npm uninstall hexo-renderer-marked --save
npm install hexo-renderer-kramed --save

执行上面的命令即可,先卸载原来的渲染引擎,再安装新的。

阅读全文 »
123
meimeijun

meimeijun

需求带动科技

25 日志
10 分类
27 标签
RSS
0%