0%

2018年3月8日 上午9:49

2018/4/2补充:

  1. maven 学习笔记 - 简书

maven project中红线报错:

eclipse - m2eclipse error - Stack Overflow

解决eclipse载入已有maven工程时出现的fail to read artifact descriptor….问题 - CSDN博客

maven本地jar包在idea中dependencies总是有红线解决办法 - CSDN博客

我的解决步骤:

The Central Repository Search Engine找到maven中pom的配置:

将内容复制到pom.xml中

在这个过程中有可以能会停住不动,这时挂上vpn试试。

反复进行第一步,第二步,直到出现:

最后就没有错误了

2018年3月8日 下午2:48

参看文章:

centos安装nginx:在配置文件中实现反向代理
2017/10/2 Mac中配置php的步骤记录
我Mac上nginx路径:_usr_local_etc_nginx

重要的分析:

  1. 这里一步是在没有开启nginx的时候,通过域名去访问8080,9080端口,也就说访问tomcat没有通过nginx。
  2. 对tomcat来说,到达他的方式有两种,不一定非得nginx启动

第一步:操作tomcat

  1. 删除原先的tomcat
    1. 我没有删,直接在~路径下创建了两个新的
  2. 解压两个tomcat,tomcat1、tomcat2
  3. 修改两个tomcat的URLEncoding=utf-8
    1. 参考centos安装配置apache
  4. 修改tomcat2的图标
    1. ~_tomcat2_webapps_ROOT_中
  5. 开启tomcat进行测试
    1. chmod u+x *.sh
  6. 修改mac环境变量_etc_profile
    1. 我在这里使用 sudo open -e ~/.bash_profile
    2. 因为sudo都没有权限操作_etc_profile
  7. 使环境变量生效
    1. source ~/.bash_profile
  8. 检验是否生效
    1. localhost:bin czh$ echo $CATALINA_BASE
  9. 修改tomcat2的catalina.sh文件的配置
    1. 防止:在tomcat2目录启动的时候catalina_base和catalina_home用的是tomcat1的
    2. OS后面两句话:

      1. export CATALINA_BASE=$CATALINA_2_BASE
      2. export CATALINA_HOME=$CATALINA_2_HOME
  10. 修改tomcat2的conf/server.xml的三个端口号
    1. 看这个tomcat集群的详细ppt
  11. 同时启动tomcat1,2
    1. 一个端口8080,一个端口9080

配置host,启动nginx

  1. 配置Mac的host,将域名指向127.0.0.1
  2. 测试通过域名+端口号,进入tomcat1,Tomcat2
    1. 注意这里并有启动nginx,也就说访问tomcat没有通过nginx
  3. 启动nginx
  4. 访问域名,不加端口号,看到nginx页面

配置nginx,实现负载均衡

  1. 配置nginx负载均衡
    1. 通过nginx的反向代理去访问nginx
    2. nginx -t
    3. sudo nginx -s reload
      1. 出现这个警告不用管:nginx: [warn] conflicting server name “localhost” on 0.0.0.0:80, ignored

重点提取:

下载tomcat7,我放在了~路径下

1
2
3
4
5
6
7
export CATALINA_BASE=~/tomcat1
export CATALINA_HOME=~/tomcat1
export TOMCAT_HOME=~/tomcat1

export CATALINA_2_BASE=~/tomcat2
export CATALINA_2_HOME=~/tomcat2
export TOMCAT_2_HOME=~/tomcat2

nginx的地址:_usr_local_etc_nginx


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
upstream www.imooc.com{
server 127.0.0.1:8080;
server 127.0.0.1:9080;
}

server {
listen 80;
autoindex on;
server_name www.imooc.com imooc.com;
access_log /usr/local/nginx/logs/access.log combined;
index index.html index.htm index.jsp index.php;
if ( $query_string ~* ".*[\;'\<\>].*" ){
return 404;
}

location / {
proxy_pass http://www.imooc.com;
}
}

2018年3月8日 上午1:18

在v1.0的初级上创建新的分支v2.0:

1
2
3
4
5
6
7
8
9
localhost:mmall czh$ git checkout -b v2.0 origin/v1.0
M .idea/workspace.xml
Branch v2.0 set up to track remote branch v1.0 from origin.
Switched to a new branch 'v2.0'
localhost:mmall czh$ git branch
master
v1.0
* v2.0
localhost:mmall czh$

注:
上步报错:# fatal: ‘origin/dev’ is not a commit and a branch connot be created from it
处理方式:重启idea

Git 中 HEAD 是什么东西,为什么会出现在分支里? - SegmentFault 思否

对idea进行配置,让idea读懂我们的项目结构:


识别为maven项目:


idea打开maven项目并进行识别 - CSDN博客

通过maven自动进行idea的配置:

2018年3月5日 下午11:43

我这里虽然只是罗列了一下知识点,学习的方式主要还是看html

主要内容:

lect02_eg01.html
主要讲解pandas的内容:

  1. Series
    1. 创建
    2. 处理缺失数据
    3. 索引
    4. 向量化操作
  2. DataFrame
    1. 创建
    2. 索引
    3. 删除数据
    4. DataFrame的操作与加载
  3. 索引:
  4. boolean Mask
  5. 层级索引

lect02_eg02.html
主要讲数据清洗:

  1. 判断数据缺失
  2. 处理数据缺失
  3. 处理重复数据
    1. 判断数据是否重复,duplicated()
    2. 去除重复数据,drop_duplicates(),可指定列及如何保留数据
  4. 使用函数或map转化数据,通常根据字典进行数据转化
  5. 替换值,replace()
  6. 离散化和分箱操作,pd.cut(),返回Categorical对象
  7. 哑变量操作,pd.get_dummies()
  8. 向量化字符串操作
    1. 字符串列元素中是否包含子字符串,ser_obj.str.contains()
    2. 字符串列切片操作,ser_obj.str[a:b]

lect02_eg03.html
合并与分组:

  1. GroupBy对象:DataFrameGroupBy,SeriesGroupBy
  2. GroupBy对象没有进行实际运算,只是包含分组的中间数据
  3. 对GroupBy对象进行分组运算/多重分组运算,如mean()
    1. 非数值数据不进行分组运算
  4. size() 返回每个分组的元素个数
  5. 按列名分组,obj.groupby(‘label’)
  6. 按列名多层分组,obj.groupby([‘label1’, ‘label2’])->多层dataframe
  7. 按自定义的函数分组
    1. 如果自定义函数,操作针对的是index
  8. 实际项目中,通常可以先人为构造出一个分组列,然后再进行groupby
  9. GroupBy对象支持迭代操作
    1. 每次迭代返回一个元组 (group_name, group_data)
    2. 可用于分组数据的具体运算
  10. 聚合 (aggregation)
    1. grouped.agg(func),数组产生标量的过程,如mean()、count()等
    2. 常用于对分组后的数据进行计算
    3. 内置的聚合函数:sum(), mean(), max(), min(), count(), size(), describe()
    4. 可通过字典为每个列指定不同的操作方法
    5. 可自定义函数,传入agg方法中

lect02_eg04.html
透视表:

  1. excle说明:
  2. df.pivot_table(values, index, columns, aggfunc, margins)
    1. values: 透视表中的元素值(根据聚合函数得出的)
    2. index:透视表的行索引
    3. columns:透视表的列索引
    4. aggfunc:聚合函数,可以指定多个函数
    5. margins:表示是否对所有数据进行统计

课堂随笔:

drop
copy =
Excel自动转换
Numpy默认全是字符串
广播:mask 列增加
分割
没有index header=0
pandas对缺失值得处理更好
字典型
dropna扔一行
padas取出的value就是numpy
axis
map
一道题

2018年3月5日 下午2:55

前提:

  1. 我这篇文章的依据是第一课和第二课的中的关于PM2.5的两个项目,一个使用numpy一个使用pandas

理解pandas的过人之处:

  1. 核心理解方式有两个:
    1. 用excel去理解
    2. 用sql语句去理解
  2. pandas与numpy的本质区别:
    1. 是对数据的处理所占的角度不同,这里的excel、sql其实代表着就是各自的思考角度

详细说明:

  1. dropna站在整个表角度进行处理,不用按行进行处理了
  2. Excle式操作,方便的增加列,操作索引
  3. 向量式的操作方式,类似于sql语句的高级语法,将for循环使用groupby cut等这类操作代替


  4. 依然延续了numpy常用的中的mask操作
  5. 依然延续了numpy的向量化思维,以行、列作为处理的对象,而不是元素

2018年3月4日 上午12:36

这节中的链接是非常重要的文章,对我的理解起至关重要的作用

总结:

  1. 我在这次课程中有了两点新的认识:
    1. 机器学习现在已经算是比较成熟的技术了,判断标准就是网上有非常多优秀的文章,现在我充当的角色是去找那些优秀的文章资料去阅读学习,而不是去自己重新的去写一篇文章
    2. 看似复杂的机器学习,其实他重要的数学知识,大学中学的就足够了,对于应用开发来说,不要夸大数学的作用,给自己施加不切实际的压力
  2. 这下面就是我找到,并阅读的一些很好的文章。
    1. 如何通俗易懂地解释「协方差」与「相关系数」的概念? - 知乎
    2. 带你搞懂朴素贝叶斯分类算法 - CSDN博客
      1. 带你搞懂朴素贝叶斯分类算法
    3. KL散度的理解 - CodenameNC - 博客园
    4. 决策树 - OverFitting - 博客园
    5. 深入理解:Linear Regression及其正则方法 - OverFitting - 博客园
    6. 特征选择方法之互信息 - CSDN博客
    7. 推荐系统评测指标—准确率(Precision)、召回率(Recall)、F值(F-Measure) | 书影博客
  3. 老师的ppt中也有一些知识点的理解,与重点罗列
    Probability.pdf

不足之处:

  1. 我上面罗列出来的东西并没有让雪球滚起来!!!

2018年3月4日 下午2:15

  1. 首先是要从现实的角度出发,根据现实中的解决方案,去选择合适的数学描述方法。
  2. 容易出错的地方是:从现实解决方案——>数学概念,而不是数学概念——>现实解决方案
  3. 在听课的过程中总是重视各种各样的概念,最后即使我将各种概念理解了,能够对概念有一个直观的理解。但是最后总是发现忘的非常快,这其中的原因是你们有将其中的概念idea串联起来,这个串联并不是我在微分学中所说的找到微分学的数学知识的核心点,其他可以通过有限的核心点推出,我在这里所说的串联是现实解决方案——>数学概念这样的串联,可能一个两小时的课,最终全部是在描述一个现实解决方案——>数学概念这样的转换过程,如果我们抓不住这个核心点,上课的收获就很小
  4. 选择合适的数学描述方法”这句话我觉得很正确:这里的描述方法有微分学,概率,线性代数等等,我们需要在这其中根据我们现实的解决方案,去选择合适的描述方法,数学仅仅是一种描述方法罢了
    1. 下面的详细说明就是体现了这个过程

详细说明:

  1. 这张ppt就体现出了根据现实解决方案,选择合适的数学描述方法这一过程。
  2. 其中,在这里我们是选择了微积分中的函数作为我们描述的方式,这就相当于给我们限定了一个思考的范围,自然我们就可以使用微积分中所有的各种各样的概念,如Taylor公式,但是我就不能去概率中的贝叶斯公式等等
  3. 那么,如何选定数学描述方法呢?
    1. 由我们的最终目标决定:这里我们的目标就是P(Y|X)
    2. 由概念的定义式就决定了:


2018年3月3日 下午12:52

  1. 登录:

  2. 查看订单,获得没有支付的订单号

  3. 给查出的订单结账,返回一个二维码

  4. 开启mac的地址映射

  5. 将地址粘贴到chrome中

    注:这里启动centos的nginx,否则不能通过image.imooc.com转发到ftp文件夹下,nginx是转发的关键

  6. 用沙箱扫码支付:

2018年3月3日 下午11:36

向量化编程的总结记录

  1. 我先前就意识到了这一点,但是没有把它叫做是向量化思维。
  2. 我觉得把它说成一种思维有点高看他了,说白了就是数学上一种计算方式的改变:将数学式子转化为矩阵进行运算,多了一层转化,但是却使编程更加简单,写公式的时候也更加简洁
  3. 就是这里的转化: 参考自雪球的开端