• lesson01


    学习目标:

    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:

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

    Answer2:

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

    Answer3:

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

     结果输出:

     1 语文平均成绩: 86.20
     2 语文最低分: 68
     3 语文最高分: 98
     4 语文成绩方差: 120.16
     5 语文成绩标准差: 10.96
     6 
     7 数学平均成绩: 81.00
     8 数学最低分: 65
     9 数学最高分: 90
    10 数学成绩方差: 87.20
    11 数学成绩标准差: 9.34
    12 
    13 英语平均成绩: 76.60
    14 英语最低分: 30
    15 英语最高分: 98
    16 英语成绩方差: 587.84
    17 英语成绩标准差: 24.25
    18 
    19 第1名:刘备,总分:272
    20 第2名:关羽,总分:269
    21 第3名:许褚,总分:260
    22 第4名:典韦,总分:255
    23 第5名:张飞,总分:163
    View Code

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

  • 相关阅读:
    C++ 临时对象
    【转】C++ static关键字
    python读写文件
    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
    Debian下的crontab保存
    Innodb后台线程
    查看当前数据库支持哪些存储引擎
    ERROR: No query specified
    WARNING: The host 'r6' could not be looked up with /usr/local/mysql/bin/resolveip.
    mysql_install_db 运行结果
  • 原文地址:https://www.cnblogs.com/raykindle/p/12513485.html
Copyright © 2020-2023  润新知