学习目标:

1、数据分析的十大经典模型:

    · 分类算法:C4.5,朴素贝叶斯(Naive Bayes),SVM,KNN,Adaboost,CART
    · 聚类算法:K-Means,EM
    · 关联分析:Apriori
    · 连接分析:PageRank
    ☆ 延伸:
        主流AI模型
            · Logistic Regression,
            · Decision Trees,
            · Random Forests
        顶会:
            · NIPS(深度强化学习)
            · AAAI
            · KDD
            · MSRA
        打造自己的立足点===>good job
            场景,懂业务
            模型,懂算法
            代码,工程能力

2、数据分析的架构(3A):

    · Data Aggregation
    · Data Analysis
    · Data Activation

3、Python基础

    √ Python IDE选择
        5款NoteBook:
            · Kaggle Notebook(内存16G,每周有30小时免费GPU,但生成文件保存不方便)
            · Baidu AI Studio(内存32G,提供16G显卡,上传速度快,但深度学习框架只能使用paddle,只使用机器学习时还是很好用的)
            · 天池 NoteBook(4核,16G内存,公开数据集多)
            ★ Google Colab(https://colab.research.google.com,CPU内存12.7G,支持GPU/TPU加速,可以使用
      Keras、Tensorflow和Pytorch,Colab最多12个小时环境就会重置,存储在Google 云端硬盘,可以共享,云端Jupyter编辑器)
            · Ali PAI DSW(不能联网)
            Google Colab使用:
                ·上传文件到Google云盘
                ·挂在Google云硬盘
                    from google.colab import drive
                    drive.mount('/content/gdrive')
                ·更改运行目录
                    import os
                    os.chdir("/content/gdrive/My Drive/Colab Notebooks/")
                ·可以选择GPU或TPU进行加速
    √ Online Notebook使用
    √ 常用Python语法
        1)循环语句 while
            sum = 0
            num = 1
            while num < 11:
                  sum += num
                  num += 1
            print(sum)
        2)数据类型:列表、元组、字典、集合
            · 列表: c_list = ['a','b','c']
                # 列表中添加元素
                c_list.append('dianwei')————>['a','b','c','dianwei']
                # 在指定位置添加元素
                c_list.insert(0,'diaochan')————>['diaochan','a','b','c','dianwei']
                # 删除末尾元素(默认index=-1,即删除最后一个元素)
                c_list.pop()————>['diaochan','a','b','c']
            · 元组: c_tuple = ('tupleA','tupleB')
                # 返回字典key组成的元组
                tuple({'zhangfei':65, 'guanyu':99})————>('zhangfei', 'guanyu')
                # 列表转化为元组
                tuple([123, 'zhangfei', 'guanyu', 'liubei'])————>(123, 'zhangfei', 'guanyu', 'liubei')
            · 字典: c_dict = {'guanyu':95,'zhangfei':96}
                # 定义一个dictionary
                c_dict = {'guanyu':96,'zhangfei':95}————>{'guanyu': 96, 'zhangfei': 95}
                # 添加一个元素
                c_dict['zhaoyun'] = 98————>{'guanyu': 96, 'zhangfei': 95, 'zhaoyun': 98}
                #删除一个元素
                c_dict.pop('zhangfei')————>{'guanyu': 96, 'zhaoyun': 98}
                #查看key是否存在
                print('zhangfei' in c_dict)————>False
                #查看一个key对应的值
                print(c_dict.get('zhangfei'))————>None
            · 集合: c_set = set(['a', 'b', 'c'])
                # 集合set和字典dictory类似,不过它只是key的集合,不存储value
                # 同样可以增删查,增加使用add,删除使用remove,查询看某个元素是否在这个集合里,使用in
                # 集合的使用
                c_set = set(['zhangfei', 'guanyu', 'liubei'])————>{'guanyu', 'liubei', 'zhangfei'}
                c_set.add('diaowei')————>{'diaowei', 'guanyu', 'liubei', 'zhangfei'}
                c_set.remove('zhangfei')————>{'liubei', 'guanyu', 'diaowei'}
                print('liubei' in c_set)————>True
            · 注释:
                # -*- coding: utf-8 -*
    ☆ Numpy与科学计算
        # 连续数组的创建:arange 或 linspace
        np.arange(1,11,2)————>array([ 1,  4,  7, 10])
        np.linspace(1,9,5)————>array([1. , 2.6, 4.2, 5.8, 7.4, 9. ])
        # numpy数组之间的加、减、乘、除、幂、取余
        x1 = np.arange(1, 11, 2) ————>array([1, 3, 5, 7, 9])
        x2 = np.linspace(1, 9, 5)————>array([1., 3., 5., 7., 9.])
        np.add(x1, x2)     ————>array([ 2.,  6., 10., 14., 18.])
        np.subtract(x1, x2)————>array([0., 0., 0., 0., 0.])
        np.multiply(x1, x2)————>array([ 1.,  9., 25., 49., 81.])
        np.divide(x1, x2)  ————>array([1., 1., 1., 1., 1.])
        np.power(x1, x2)          # n次方————>array([1.00000000e+00, 2.70000000e+01, 3.12500000e+03, 8.23543000e+05,3.87420489e+08])
        np.remainder(x1, x2)   # 取余数————>array([0., 0., 0., 0., 0.])
        # numpy中统计函数的使用
            a = np.array([[1,2,3], [4,5,6], [7,8,9]])   ————>array([[1, 2, 3],
                                                                [4, 5, 6],
                                                                [7, 8, 9]])
            · 最小值min
                np.min(a)————>1
                np.min(a,0)————>[1 2 3]
                np.min(a,1)————>[1 4 7]
            · 最大值max
                np.max(a)————>9
                np.max(a,0)————>[7,8,9]
                np.max(a,1)————>[3 6 9]
            · 统计百分位数percentile
                np.percentile(a, 50)————>5.0
                np.percentile(a, 50, axis=0)————>[4. 5. 6.]
                np.percentile(a, 50, axis=1)————>[2. 5. 8.]
            · 求中位数
                np.median(a)————>5.0
                np.median(a, axis=0)————>[4. 5. 6.]
                np.median(a, axis=1)————>[2. 5. 8.]
            · 求平均数
                np.mean(a)————>5.0
                np.mean(a, axis=0)————>[4. 5. 6.]
                np.mean(a, axis=1)————>[2. 5. 8.]
            · 求标准差(numpy默认是除以样本数n,求的是母体标准差;matlab默认是除以样本n-1,求的是样本标准差)
                样本标准差=方差的算术平方根=s=sqrt(((x1-x)^2 +(x2-x)^2 +......(xn-x)^2)/(n-1))
                总体标准差=σ=sqrt(((x1-x)^2 +(x2-x)^2 +......(xn-x)^2)/n )
                np.std(a)————>2.581988897471611
                np.std(a,0)————>array([2.44948974, 2.44948974, 2.44948974])
                np.std(a,1)————>array([0.81649658, 0.81649658, 0.81649658])
                ☆ 标准差的原理计算
                    (待补)
            · 求方差
                np.var(a)————>6.666666666666667
                np.var(a,0)————>array([6., 6., 6.])
                np.var(a,1)————>array([0.66666667, 0.66666667, 0.66666667])
                ☆ 方差的原理计算
                    (待补)
            · 排序sort(默认axis=1, 即同一排的元素在每一列上,比较大小,进行位置更替)
                c = np.array([[4,3,2],[2,4,1]])————>array([[4, 3, 2],
                                                                   [2, 4, 1]])
                np.sort(c)————> array([[2, 3, 4],
                                              [1, 2, 4]])
                np.sort(c, axis=None)————>array([1, 2, 2, 3, 4, 4])
                np.sort(c, axis=0)————> array([[2, 3, 1],
                                                      [4, 4, 2]])
                np.sort(c, axis=1)————> array([[2, 3, 4],
                                                        [1, 2, 4]])
            · 加权平均值average
                b = np.array([1,2,3,4])
                weights = np.array([1,2,3,4])
                np.average(b)————>2.5
                np.average(b,weights=weights)————>3.0
                ☆ 加权平均值的原理计算
                    sum = 0
                    for i in range(len(b)):
                        sum += b[i]*weights[i]/weights.sum()
                    print("average_result:{}".format(sum))
    ★ 面试题:10亿个数中,如何快速取到Top1000
      (待补)

练习:

Action1: 完成A+B Problem(练习平台:https://zoj.pintia.cn/problem-sets/91827364500/problems/91827364500)

Answer1:

 while True:
try:
line = input()
a = line.split()
print int(a[0]) + int(a[1])
except:
break
 
Action2:求2+4+6+8+...+100的求和,用Python该如何写

Answer2:

 def toSum(start,end):
import numpy as np
return np.array(range(start,end+2,2)).sum() toSum(2, 100)
 
Action3:  统计全班的成绩
  班里有5名同学,现在需要你用numpy来统计下这些人在语文、英语、数学中的平均成绩、最小成绩、最大成绩、方差、标准差。然后把这些人的总成绩排序,得出名次进行成绩输出。

Answer3:

 # 将学生成绩生成narray
students = np.array([[68, 65, 30],
[95, 76, 98],
[98, 86, 88],
[90, 88, 77],
[80, 90, 90]]) # 利用numpy统计函数计算平均值、最小值、最大值、方差、标准差
final = np.array([np.mean(students, 0),
np.min(students, 0),
np.max(students, 0),
np.var(students, 0),
np.std(students, 0)]).T # 计算每个学生三科成绩,并转化为二维array,方便最后所有统计值的拼接
score_total = np.sum(students, 1)
score_rank_index = np.argsort(-score_total)
# score_rank_index = np.argsort(-score_total).reshape(-1, 1)
# score_rank = score_total[np.argsort(-score_total)].reshape(-1, 1)
# final = np.concatenate([temp, score_rank_index, score_rank], axis=1).T
# 注意:concatenate拼接时,拼接方向的形状需要一致,
# 可参看https://www.cnblogs.com/raykindle/p/12485250.html subject_cols = ['语文', '数学', '英语']
name_cols = ['张飞', '关羽', '刘备', '典韦', '许褚'] # 打印输出
for i, sub in enumerate(subject_cols):
print("{0}平均成绩: {1:.2f}".format(sub, final[i, 0]))
print("{0}最低分: {1:.0f}".format(sub, final[i, 1]))
print("{0}最高分: {1:.0f}".format(sub, final[i, 2]))
print("{0}成绩方差: {1:.2f}".format(sub, final[i, 3]))
print("{0}成绩标准差: {1:.2f}\n".format(sub, final[i, 4])) for i, rk in enumerate(score_rank_index):
print("第{2}名:{0},总分:{1:.0f}".format(name_cols[rk], score_total[rk], i+1))

 结果输出:

 语文平均成绩: 86.20
语文最低分: 68
语文最高分: 98
语文成绩方差: 120.16
语文成绩标准差: 10.96 数学平均成绩: 81.00
数学最低分: 65
数学最高分: 90
数学成绩方差: 87.20
数学成绩标准差: 9.34 英语平均成绩: 76.60
英语最低分: 30
英语最高分: 98
英语成绩方差: 587.84
英语成绩标准差: 24.25 第1名:刘备,总分:272
第2名:关羽,总分:269
第3名:许褚,总分:260
第4名:典韦,总分:255
第5名:张飞,总分:163

★★★  如有问题,欢迎指正:raykindle@163.com  ★★★

lesson01的更多相关文章

  1. [Selenium With C#学习笔记] Lesson-01环境搭建

    Step-1:准备所需的开发环境.浏览器驱动.Selenium-Webdriver.单元测试框架,因目前使用C#的开发神器都Visual Studio,本文也打算采用Visual Studio 201 ...

  2. [Selenium With C#基础教程] Lesson-01环境搭建

    作者:Surpassme 来源:http://www.jianshu.com/p/33b87bc00233 声明:本文为原创文章,如需转载请在文章页面明显位置给出原文链接,谢谢. 最近开始复习Sele ...

  3. java并发编程学习:用 Semaphore (信号量)控制并发资源

    并发编程这方面以前关注得比较少,恶补一下,推荐一个好的网站:并发编程网 - ifeve.com,上面全是各种大牛原创或编译的并发编程文章. 今天先来学习Semaphore(信号量),字面上看,根本不知 ...

  4. 第一个JSP

    还是大一暑假学的Java,知识掌握了第一阶段的Java基础知识, 后面想自己进阶第二阶段,学习JavaWeb,一直拖到现在直接从Java第二阶段写了~~~ 希望指正: 这次主要还是第一个Hello W ...

  5. convas demo1

    1 getContext 语法 Canvas.getContext(contextID) 参数 参数 contextID 指定了您想要在画布上绘制的类型.当前唯一的合法值是 "2d" ...

  6. Vue入门演示

    工作中用了很久vue,但是都是我们这边前端经理封装好的组件,想要看到底部的原理还要从层层代码里面剥离出来,逻辑太复杂,还不如自己一点点整理一下,一步一步走下去. github地址:https://gi ...

  7. OC语言大总结(下)

    根据OC学习的知识点,总结了一下,希望能帮到大家! 作者:韩俊强   未经允许,请勿转载! 关注博主:http://weibo.com/hanjunqiang 上接:http://blog.sina. ...

  8. html总结01

    lesson01~lesson02基础 <!DOCTYPE html> <html lang="en"> <!-- ################# ...

  9. java.lang.NullPointerException at java.lang.ProcessBuilder.start(Unknown Source) at org.apache.hadoop.util.Shell.runCommand(Shell.java:482)

    1:问题出现的原因,部署好的hadoop-2.6.4进行window10操作hadoop api出现的错误,具体错误是我向hdfs上传文件,还好点,之前解决过,这里不叙述,这里说一下从hdfs下载文件 ...

随机推荐

  1. Filter 中注入失败问题

    参考: https://www.cnblogs.com/digdeep/p/4770004.html?tvd https://www.cnblogs.com/EasonJim/p/7666009.ht ...

  2. MOOC(7)- case依赖、读取json配置文件进行多个接口请求-学习mock(7)

    学习mock # learn_mock_7.py # 单元测试结合mock思路 import unittest from mock import mock from day_20200208_mooc ...

  3. LeetCode Day 11

    LeetCode0021 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1 ...

  4. Trie树的插入,查前缀,查单词,删前缀和删单词。

    这个Trie原先用C++就敲得很熟了,看了蓝桥杯的视频后学会把一个功能这样封装起来,以后用的时候就很爽可以直接调用了,所以就用Java写了: public class Trie { private f ...

  5. 吴裕雄--天生自然 R语言开发学习:高级数据管理

    #-----------------------------------# # R in Action (2nd ed): Chapter 5 # # Advanced data management ...

  6. 在腾讯云服务器上安装JDK+Tomcat并启动tomcat

    由于Java web项目需要使用到tomcat所以决定在腾讯云服务器(centos7.X)上安装JDK和tomcat,来部署我们的项目. 准备工具: 云服务器:centos7.x+ 本地连接服务器:X ...

  7. MySQL5.7彻底取消主从复制

    由于手误在master节点执行了stop slave;->change master to XXX;->start slave;的动作,后面虽然使用stop slave停止了主从复制,但是 ...

  8. python数据类型简介

    python中的注释:注释仅仅是给人看的,python并不进行识别. 注释的分类: 单行注释:# 多行注释:用三对单引号或双引号 与用户交互: 1.python3中输入 关键字:input() pyt ...

  9. Github 绑定域名添加https的方法 2019年9月更新

    官方教程 https://help.github.com/en/articles/using-a-custom-domain-with-github-pages 打开 https://github.c ...

  10. Design Patterns | 01 为什么要尽早掌握设计模式

    标题:Design Patterns | 01 为什么要尽早掌握设计模式 链接: 标签:设计模式 摘要:设计模式是前人经验的总结,教大家如何写出可扩展.可读.可维护的高质量代码.设计模式与日常工作中的 ...