机器学习训练营---第一周总结

2017-07-16  本文已影响28人  a762b3c4bd19

知识点列表:

  1. python基础数据类型
  2. 变量和表达式
  3. if , elif , else , continue , break流程控制
  4. for , while循环控制
  5. 字符串操作
  6. list , tuple , set , dictionary 容器操作 (重点)
  7. 文件读/写
  8. 面向对象
  9. 切片的使用,字符串,list都可以用
  10. 高阶函数的使用:
    a. map
    b. reduce
    c. filter
    d. sorted
    e. lambda
    f. zip
    g. eval

本周主要是学习python基础知识,能熟练运用python,对于我这种没有python基础的iOS程序员来说,压力确实挺大的,毕竟要一周内从不会到能代码。但是我不怕,因为这次是下决心来学习人工智能,就算困难也要克服。

由于之前有学习iOS和android的经历,所以非常明白学习好python基础知识的重要性,就像是练功夫要先扎马步一样,只有python的基础知识学习牢固了,后面做爬虫,机器学习才有底气。所以这一周严格按照课程安排学习python的基础知识,虽然群里有同学学的很好,都在看微积分,线性代数等等一些高级的知识,但是我没有因此改变我的节奏,继续稳扎稳打的学习。

其实最大的挑战就是合理安排好时间,为此,我搬到了地铁站附近,上班时间比以前每天节省了1个小时左右,而且地铁也不用换乘,在地铁上有60%-80%的时间也是可以听课和做练习的,每天晚上8点到10点上课,这个时间段必须抽出来,为此一些聚会,饭局全部推掉,早上5点40起床,骑自行车锻炼身体,买早餐,7点上班,从家到地铁站和从地铁站到公司的路程全部骑自行车,保证每天8公里左右的运动时间。工作时间高效的完成工作,珍惜每一分钟的时间,减少喝水的次数和杂事的数量,专注完成每天的工作,以保证充分的学习时间。

周末要赶火车参加线下课,今天是第一次线下课,收获非常大,有了互动,自己也问了寒老师问题,得到答案并明白了问题的本质原因,之后的每一次课都要坚持来。当然有的同学也说了成本问题,来回的火车票加酒店的钱,3个月下来,比总共的学费都要贵,但是我认为是值得的,换个角度想“ 假如我从事人工智能的工作3年后年薪达到了500万,那么还会觉得现在这些火车票和酒店钱贵吗? ”所以我从来没有动摇过。

下面详细整理一下学习笔记:

  1. python基础数据类型:
    a. 整形int
    b. 浮点型float
    c. 数据类型强制转换
    d. 四则运算
    e. 字符串
    f. bool
    g. 可以用 type ( x ) 查看x的类型
  2. x = 12 x是一个变量,python中声明变量的时候不需要指定变量的类型,跟iOS不同
    a. x ** 2 表示x的平方, x ** 3表示x的3次方 x += 1 相当于 x = x + 1
    b. python中没有 i ++ 可以用x += 1表示
  3. if 后必须跟一个返回bool值的表达式
    a. if else 后必须跟冒号,python中没有else if 可以用elif代替
    b. 简单的for循环 for name in names:
    c. range用法
    i. range(1,10) 会输出 1到9
    ii. range(1,20,5) 会输出 5,10,15 最后面那个5是指每隔5个输出一次,如果不设置,默认为1
    d. enumerate用法
    i. 会把数组转化为带编号的的list
    ii. 用for取出编号和值 for i,name in enumerate(names):
    e. 列表推导式
    i. ["stupid"+name for name in names]
    ii. 上面的列表推导式会生成一个list,里面每个元素都会在原来的基础上加上stupid
    iii. 列表推导式分为两个部分 for前面的,和for后面的
  4. while循环:
    a. while后面跟的表达式要返回true,才会执行while里面的代码,也是加上冒号。
    b. while中可以配合break和continue使用比如
    c. i = 0
    d. while true:
    i. print(i)
    ii. i += 1
    iii. if i >= 10:
    1. break
    e. 执行上面的代码,与奥break的时候就会跳出while
  5. string字符串操作:
    a. 双引号和单引号都可以 “sqc”'sqc'
    b. 但是双引号里的字符串再用引号要用单引号,单引号里用双引号,要成对出现
    c. 输出多行字符串,用''' ''' 或 """ """ 三个双引号单引号给括起来例如
    i. ''' sqc
    ii. facebook
    iii. google '''
    d. \n 换行符 \t tab键
    e. 字符串拼接要用 + 加号例如
    i. "hello" + " " + "world"
    f. w[0] 会输出字符串的第一个字符
    g. w[-1] 会输出字符串的最后一个字符
    h. python中索引是有负数的,表示倒着数, -1就是倒数第一个
    i. 切片:
    i. w[1:3] 表示把字符串索引为1切到索引为3,注意,包含1,但不包含3
    ii. w[:3]表示从0开始切
    iii. w[:100000]表示切到最后一个,100000超过索引即取最后一个
    j. w.upper()字串变为大写(注意这样不会把原来的字符串变为大写,而是生成一个新的字符串,如果要用就拿一个变量去接收)
    k. w.lower()变为小写
    l. w.capitalize() 首字母变为大写
    m. w.strip()去掉两边的空格
    n. w.lstrip()去掉左边的空格
    o. w.rstrip()去掉右边的空格
    p. w.split() 默认按空格拆分为一个list 也可以指定字符 w.split(',') 这样就是按逗号拆分
    q. w.find('a')找到a出现的位置
    r. w.replace(',' , '|') 把所有的逗号都替换成 |
  6. list : names = ["sqc", "facebook", "google"] 列表
    a. list也可以用切片
    b. names[1:3] 从索引为1切到索引为3
    c. list("facebook") 把一个字符串的每一个字母强制转化为list
    d. names.append('book') 在list的末尾添加一个元素
    e. names + namestwo 可以生成一个新的list
    f. 'sqc' in names 判断一个元素是否在list里面
    g. names.insert(3 , 'me')在索引三的位置上添加一个元素
    h. names.pop() 返回list中最后一个元素,并且在names中删除最后一个元素
    i. names.count('sqc') sqc在list中出现了几次
    j. names.reverse() 把list倒序
    k. del names(3) 删除索引为3的那个元素,注意用del关键字删除
  7. set : 集合,无序,每一个元素不重复
    a. new_set = set()
    b. 用来把list中的元素去重复 :
    i. a = list('sqcsqc')
    ii. s = set(a)
    iii. new_a = list(s)
    iv. 这样就完成了list去重复的操作
  8. tuple : 很像list,区别是不可变,不能添加和修改
  9. dictionary : 里面都是key value parts
    a. fruit['apple'] 取出apple对应的那个值
    b. fruit.keys() 取出所有的key
    c. fruit.values() 取出所有的value
  10. function:
    a. function 的构成: def 关键字,加方法名 ,加小括号, 加冒号
    b. 小括号里可以加一个参数或多个参数,也可以不加参数
    c. def add(x,y):
    d. 如果是不定长度的参数,可以用星号代替 def add (args): (args 的类型会是一个tuple)
    e. 可以把list当作是一个参数传过去 例如:
    i. r = [2,5]
    ii. add(
    r)
    iii. 这样的话,2和5就自动对应到x,y上了
  11. 面向对象:这部分理解还算好,因为OC也是面向对象语言,所以学历起来比较好
    a. 每个成员方法中的第一个参数一定是self
  12. 迭代器 :iterator
    a. x = iter([1,2,3,4])
    b. print(next(x))
    c. print(next(x))
    d. print(next(x))
    e. 这样会输出1,2,3, next的方法会一直执行下一个元素, 超过list的个数时就会报错
  13. 生成器 : generator
    a. yield 关键字 , 相当于有一个游标,当指向这个游标的时候再取值,类似c语言的指针
  14. 文件读写:
    a. csv文件I/O
    b. 打开一个文件 in_file = open("data/sample.csv","r") "r" 是读权限
    c. 读取数据 csv_reader = csv.reader(in_file)
    d. in_file.close() 用完记得关上
    e. 把数据写入文件: out_file = open("output.csv","w") "w" 是写权限
    i. out_writer = csv.writer(out_file)
    ii. out_writer.writerow(["sqc","google","facebook"])
    iii. out_file.close()
上一篇下一篇

猜你喜欢

热点阅读