Fu's Workshop


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

项目实训第一周总结

发表于 2019年03月03 | 分类于 项目实训

前言

寒假前已经定好了这次项目实训的题目,放假的时候群里关于房价数据爬虫的讨论随着一句“过完年再说”戛然而止,然而第一周已经结束了才空出时间来写总结。

项目需求

城市房价分析系统
技术类别:
Web,网络爬虫,数据分析
基本功能:
通过爬取链家网,我爱我家等中介机构,以及城市建设局网站数据,实现对指定城市的房价进行排序和分析,并结合一定规律进行预测
难易程度:中等
需求实现:

  1. 按用户输入城市名称,爬取和显示城市不同小区,不同区域的房价,并用柱状图显示
  2. 按年份,月份,显示和分析某区域房价走向和趋势
  3. 对比相同价格下不同城市的房产品牌
  4. 对比不同城市房价走向,并进行归类分析
  5. 实现房价波动的简单预测

需求理解

1.项目是什么?
一个Web,可以向用户展示粒度从市—行政区—具体楼盘的统计数据,可以根据用户提供的新楼盘数据做预测。
2.项目怎么做?
Java Web(Spring bot, vue.js, Echarts)
Python(bs4, sklearn, pandas等)
MySQL
百度API(POI相关信息获取)
预测模型XgBoost + LR/DT, 是否采用Deep Learning视项目进度决定

开发模式

Scrum敏捷开发模式,lm担任产品经理,ltz担任技术主管,我是master。作为master在项目中要负责管理上的事务很多,经理日报,进度控制,每日组会,团建等等,对人际沟通能力是个很好的提升。组员都很自觉,分工我和lm负责数据和预测部分,另外三位负责Web。

第一周进度

  1. 数据部分:爬虫完成,爬取了某壳网上一线城市和二线城市的数据
  2. Web部分:通过百度地图的控件可以在地图上显示城市和行政区的统计数据,校对经纬度花了挺久。
  3. 预测部分:数据清洗中,第二周预测模块应该能实现。

百度地图API解析

发表于 2019年02月28 | 分类于 项目实训

功能简介

百度地图Web服务API为开发者提供http/https接口,即开发者通过http/https形式发起检索请求,获取返回json或xml格式的检索数据。用户可以基于此开发JavaScript、C#、C++、Java等语言的地图应用。
http://lbsyun.baidu.com/index.php?title=webapi
文档非常全面,可以获得很多信息,包括经纬度,经纬度周边任意距离任意类型场所信息,如医院、地铁站等,为预测做准备。
以正/逆地理编码服务为例。

Python如何解析API返回的json

所用到的库

1
2
import json
from urllib.request import urlopen, quote

获得API传回的json信息

1
showLocation&&showLocation({"status":0,"result":{"location":{"lng":120.75204667293927,"lat":31.27628928466111},"precise":1,"confidence":80,"comprehension":100,"level":"道路"}})
1
2
3
4
5
6
7
8
9
10
11
def getlnglat(address):
url = 'http://api.map.baidu.com/geocoder/v2/'
output = 'json'
ak = '你的密钥'
add = quote(address) # 由于本文城市变量为中文,为防止乱码,先用quote进行编码
uri = url + '?' + 'address=' + add + '&output=' + output + '&ak=' + ak
print(uri)
req = urlopen(uri)
res = req.read().decode() # 将其他编码的字符串解码成unicode
responseInfo = json.loads(res) # 对json数据进行解析
return responseInfo

取得所需的信息

1
2
3
add = "江苏省苏州市苏州工业园区林泉街399号东南大学软件学院"  # 你所要查询的地址
lat = getlnglat(add)['result']['location']['lat'] # 获得纬度
lng = getlnglat(add)['result']['location']['lng'] # 获得经度

结果

lat = 31.27628928466111
lng = 120.75204667293927

贝叶斯估计与最大似然估计

发表于 2018年12月02 | 分类于 机器学习

贝叶斯估计:估计参数$\theta$是随机变量,根据观测数据对参数的分布进行估计,考虑先验分布。

最大似然估计:参数$\theta$是未知的,根据真实数据通过最大化似然函数$\mathop{\arg\max}_{\theta}L(\theta|D)$来估计$\theta$的值

最大似然估计 贝叶斯估计
计算复杂度 微分 多重积分
先验信息的信任程度 不准确 准确
例如$p(x丨\theta)$ 与初始假设一致 与初始假设不一致

算法导论4.5-主方法

发表于 2018年11月12 | 分类于 笔记

算法导论练习4.5-1
对下列递归式,使用主方法求出渐进紧缺界:

$T(n) = 2T(n/4) + 1$

$T(n) = 2T(n/4) + \sqrt{n}$

$T(n) = 2T(n/4) + n$

$T(n) = 2T(n/4) + n^2$

Answer:

$\Theta(n^{\log_4{2}}) = \Theta(\sqrt{n})$

$\Theta(n^{\log_4{2}}\lg{n}) = \Theta(\sqrt{n}\lg{n})$

$\Theta(n)$

$\Theta(n^2)$

《机器学习实战》SVM补充内容

发表于 2018年10月21 | 分类于 机器学习

对于《机器学习实战》一书SVM章节程序清单6-2 简化版SVM算法中部分代码的数学原理补充


    if(labelMat[i] != labelMat[j]):
        L = max(0, alphas[j]-alphas[i])
        H = min(C, C+alphas[j]-alphas[i])
    else:
        L = max(0, alphas[j]+alphas[i]-C)
        H = min(C, C+alphas[j]-alphas[i])

这段代码在《机器学习实战》书中只说明了保证alpha在0与C之间,根据约束条件$0\leq\alpha_i\leq C\;i=1,2$,实际上是单变量的最优化问题。
李航《统计学习实战》P130

使用Hexo进行Latex公式渲染测试

发表于 2018年10月12 | 分类于 技巧

安装插件

首先需要安装Mathjax插件,MathJax是一款运行在浏览器中的开源的数学符号渲染引擎,使用MathJax可以方便的在浏览器中显示数学公式,不需要使用图片。目前,MathJax可以解析Latex、MathML和ASCIIMathML的标记语言。(Wiki)

 
npm install hexo-math –save

更换渲染引擎

接着要更换Hexo的markdown渲染引擎

 
npm uninstall hexo-renderer-marked –save 
npm install hexo-renderer-kramed –save

更改配置文件

进入到主题目录,找到_config.yml文件,把mathjax默认的值改为true

 
# MathJax Support
mathjax:
  enable: true
  per_page: true
  #cdn: //cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML
  cdn: //cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML

写博客

在每次编写需要使用LaTeX渲染的博客文章中,需要在Front-matter里打开mathjax开关

 
title: test
abbrlink: 7717490f
date: 2018-10-12 10:06:12
tags:
mathjax: true

测试

 
$T(n) = \Theta(n)$

$T(n) = \Theta(n)$

数据挖掘 Week1作业

发表于 2018年09月19 | 分类于 作业

第一周作业要求

2组
人工搜集中国科学院院士、中国工程院院士的名单,在百度自动获取院士个人主页url,编写爬虫采集院士人类学、学位、研究方向和国家科技奖数据,设计数据库表,保存数据。

小组分工

CHY:科学院院士信息抓取
ZBC:数据到MySQL
me:工程院院士信息抓取

Step1 网站分析

中国工程院院士名单:http://www.cae.cn/cae/html/main/col48/column_48_1.html 可以看到所有学部的院士信息已经汇总在一个网页中,后续编写爬虫抓取个人主页url很方便。
view-sourse

Step2 抓取url

在编写爬虫时用到了XPath,XPath 是一门在 XML 文档中查找信息的语言。XPath 用于在 XML 文档中通过元素和属性进行导航。

  • XPath 使用路径表达式在 XML 文档中进行导航
  • XPath 包含一个标准函数库
  • XPath 是 XSLT 中的主要元素
  • XPath 是一个 W3C 标准
    在这里通过XPath的语法分别抓取li标签下的herf的内容和text的内容,以获得院士个人主页的url和院士的姓名,存储在list中。
     
    def getURL():                #抓取工程院院士的URL和姓名
      page = urllib.request.urlopen('http://www.cae.cn/cae/html/main/col48/column_48_1.html')
      html = page.read()
      urlList = []
      sel = Selector(text=html, type="html")
      urlList = sel.xpath('//li[re:test(@class, "name_list")]//@href').extract()
      nameList = sel.xpath('//li[re:test(@class, "name_list")]//a/text()').extract()
      #print(url)
      i = 0
      for i in range(len(urlList)):
          urlList[i] = "http://www.cae.cn" + urlList[i]
      return urlList, nameList
      #print(url)
    

Step3 抓取个人信息

接着仍使用XPath语法从urlList中依次爬取院士主页的个人信息。
view-sourse2


    infoPage = urllib.request.urlopen(academyURL)
    infoHTML = infoPage.read()
    infoSelect = Selector(text=infoHTML, type="html")
    info = infoSelect.xpath('//div[@class="intro"]/p/text()').extract()[0]
    return info

Step4 信息提取

可以发现院士信息页中大部分信息描述具有某些规律,比如描述院士在某个专业方面的成就时的描述会采用“金属材料及粉末冶金专家”、“耳鼻咽喉学专家”等以“专家”、“学家”结尾的格式,可以通过正则表达式和findall()函数找出对应的描述。


    pattern = re.compile(r'(\d{4}年(?:\d{1,2}月)?(?:\d{0,2}日)?)(?:(?:出生)|(?:生,)|(?:生于)|(?:出生于))')
    birthday = pattern.findall(c)

    pattern2 = re.compile(r'^.*?(?:(?:学家)|(?:专家))')
    direction = pattern2.findall(c)

    pattern3 = re.compile(r'(?:获)[^(?:。)]+(?:奖)')
    award = pattern3.findall(c)

    pattern4 = re.compile(r'博士|硕士|学士')
    degree = pattern4.findall(c)

使用插件和IDM下载百度云盘

发表于 2018年09月10 | 分类于 技巧

背景

在某度云上保存了很多课程,但因为某度对于网盘速度的限制,只能寻找破解版某度云盘下载文件。听说破解版最近不好使了,在网上查找了很多方法,发现只有利用Chrome的插件和IDM才能达到最理想的下载效果。

软件

  • Chrome浏览器
  • IDM下载器((Integrated Data Multiplexer)
  • 扩展程序 BaiduPan Explorer

步骤

  • 安装上述软件
  • 使用插件抓取链接
    链接
  • 使用IDM下载即可

你好,Hexo

发表于 2018年09月09 | 分类于 杂谈
123

Fu Hanlin

SEU

29 日志
7 分类
36 标签
RSS
GitHub E-Mail Facebook Instagram
© 2020 Fu Hanlin
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.4