模式识别课程educoder平台实训

Posted 是一个小迷糊吧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模式识别课程educoder平台实训相关的知识,希望对你有一定的参考价值。

NumPy基础及取值操作

第1关:ndarray对象

import numpy as np


def print_ndarray(input_data):
    '''
    实例化ndarray对象并打印
    :param input_data: 测试用例,类型为字典类型
    :return: None
    '''

    #********* Begin *********#
    a=np.array(input_data.get('data'))
    print(a)
    #********* End *********#

第2关:形状操作

import numpy as np


def reshape_ndarray(input_data):
    '''
    将ipnut_data转换成ndarray后将其变形成一位数组并打印
    :param input_data: 测试用例,类型为list
    :return: None
    '''

    #********* Begin *********#
    a=np.reshape(input_data,(1,-1))
    print(a[0])
    #********* End *********#

第3关:基础操作

import numpy as np


def get_answer(input_data):
    '''
    将input_data转换成ndarray后统计每一行中最大值的位置并打印
    :param input_data: 测试用例,类型为list
    :return: None
    '''

    #********* Begin *********#
    a=np.array(input_data)
    a1=len(a)
    b=[]
    for i in range(a1):
        m=a[i].argmax()
        b.append(m)
    c=np.array(b)
    print(c)
    #********* End *********#

第4关:随机数生成

import numpy as np


def shuffle(input_data):
    '''
    打乱input_data并返回打乱结果
    :param input_data: 测试用例输入,类型为list
    :return: result,类型为list
    '''

    # 保存打乱的结果
    result = []
    #********* Begin *********#
    a=len(input_data)
    b=np.random.choice(input_data,size=a,replace=False)
    result=b.tolist()
    #********* End *********#
    return result

第5关:索引与切片

import numpy as np

def get_roi(data, x, y, w, h):
    '''
    提取data中左上角顶点坐标为(x, y)宽为w高为h的ROI
    :param data: 二维数组,类型为ndarray
    :param x: ROI左上角顶点的行索引,类型为int
    :param y: ROI左上角顶点的列索引,类型为int
    :param w: ROI的宽,类型为int
    :param h: ROI的高,类型为int
    :return: ROI,类型为ndarray
    '''

    #********* Begin *********#
    a=data[x:,y:]
    b=a[:h+1,:w+1]
    #print(a)
    #print(b)
    ROI=b
    return ROI
    #********* End *********#

NumPy数组的高级操作

第1关:堆叠操作

import numpy as np


def get_mean(feature1, feature2):
    '''
    将feature1和feature2横向拼接,然后统计拼接后的ndarray中每列的均值
    :param feature1:待`hstack`的`ndarray`
    :param feature2:待`hstack`的`ndarray`
    :return:类型为`ndarray`,其中的值`hstack`后每列的均值
    '''
    #********* Begin *********#
    a=np.hstack((feature1,feature2))
    return a.mean(axis=0)
    #********* End *********#

第2关:比较、掩码和布尔逻辑

import numpy as np


def student(num,input_data):
    result=[]
    # ********* Begin *********#
    input_data =np.array(input_data)
    result = input_data[input_data>num]
    # ********* End *********#
    return result

第3关:花式索引与布尔索引

import numpy as np

def student(input_data):
    result=[]
    #********* Begin *********#
    performance = np.array(input_data)
    result=performance[(performance<='Z')&(performance>='A')]
    # ********* End *********#
    return result

第4关:广播机制

import numpy as np

def student(a,b,c):
    result=[]
    # ********* Begin *********#
    a1=np.array(a)
    b1=np.array(b)
    c1=np.array(c)
    result=a1+b1+c1
    # ********* End *********#
    return result

第5关:线性代数

from numpy import linalg
import numpy as np
def student(input_data):
    '''
    将输入数据筛选性别为男,再进行线性方程求解
    :param input_data:类型为`list`的输入数据
    :return:类型为`ndarray`
    '''
    result=[]
    # ********* Begin *********#
    a = np.array(input_data)
    x=[]
    y=[]
    for i in a:
        if i[0]=='男':
            x.append([int(i[1]),int(i[2])])
            y.append([int(i[-1])])
    if x==[] and y==[]:
        return result
    x=np.array(x)
    y=np.array(y)
    result=linalg.solve(x,y)
    # ********* End *********#
    return result

Pandas初体验

第1关:了解数据处理对象–Series

# -*- coding: utf-8 -*-
from pandas import Series,DataFrame
import  pandas as pd

def create_series():
    '''
    返回值:
    series_a: 一个Series类型数据
    series_b: 一个Series类型数据
    dict_a:  一个字典类型数据
    '''
    # 请在此添加代码 完成本关任务
    # ********** Begin *********#
    series_a=Series([1,2,5,7],index=['nu','li','xue','xi'])
    dict_a='ting':1,'shuo':2,'du':32,'xie':44
    series_b=Series(dict_a)
    # ********** End **********#

    # 返回series_a,dict_a,series_b
    return series_a,dict_a,series_b

第2关:了解数据处理对象-DataFrame

# -*- coding: utf-8 -*-
from pandas import Series,DataFrame
import  pandas as pd

def create_dataframe():
    '''
    返回值:
    df1: 一个DataFrame类型数据
    '''
    # 请在此添加代码 完成本关任务
    # ********** Begin *********#
    dictionary = 'states':['one','0hio','0hio','Nevada','Nevada'],
             'years':[2000,2001,2002,2001,2002],
             'pops':[1.5,1.7,3.6,2.4,2.9],
             
    df1 = DataFrame(dictionary)
    df1=DataFrame(dictionary,index=['one','two','three','four','five'])
    df1['new_add']=[7,4,5,8,2]
    # ********** End **********#

    #返回df1
    return df1

第3关:读取CSV格式数据

# -*- coding: utf-8 -*-
from pandas import Series,DataFrame
import  pandas as pd
def read_csv_data():
    '''
    返回值:
    df1: 一个DataFrame类型数据
    length1: 一个int类型数据
    '''
    # 请在此添加代码 完成本关任务
    # ********** Begin *********#
    df1 = pd.read_csv('test3/uk_rain_2014.csv', header=0)
    df1.columns = ['water_year','rain_octsep','outflow_octsep','rain_decfeb', 'outflow_decfeb', 'rain_junaug', 'outflow_junaug']
    length1=len(df1)
    # ********** End **********#
    #返回df1,length1
    return df1,length1

第4关:数据的基本操作——排序

# -*- coding: utf-8 -*-
from pandas import Series,DataFrame
import  pandas as pd
def sort_gate():
    '''
    返回值:
    s2: 一个Series类型数据
    d2: 一个DataFrame类型数据
    '''

    # s1是Series类型数据,d1是DataFrame类型数据
    s1 = Series([4, 3, 7, 2, 8], index=['z', 'y', 'j', 'i', 'e'])
    d1 = DataFrame('e': [4, 2, 6, 1], 'f': [0, 5, 4, 2])

    # 请在此添加代码 完成本关任务
    # ********** Begin *********#
    s2=Series(s1.sort_index())
    d2=d1.sort_values(by='f')
    # ********** End **********#
    #返回s2,d2
    return s2,d2

第5关:数据的基本操作——删除

# -*- coding: utf-8 -*-
from pandas import Series,DataFrame
import numpy as np
import  pandas as pd

def delete_data():
    '''
    返回值:
    s2: 一个Series类型数据
    d2: 一个DataFrame类型数据
    '''

    # s1是Series类型数据,d1是DataFrame类型数据
    s1 = Series([5, 2, 4, 1], index=['v', 'x', 'y', 'z'])
    d1=DataFrame(np.arange(9).reshape(3,3), columns=['xx','yy','zz'])
    # 请在此添加代码 完成本关任务
    # ********** Begin *********#
    s2=s1.drop('z')
    d2=d1.drop(['yy'],axis=1)

    # ********** End **********#

    # 返回s2,d2
    return s2, d2

第6关:数据的基本操作——算术运算

# -*- coding: utf-8 -*-
from pandas import Series,DataFrame
import numpy as np
import  pandas as pd

def add_way():
    '''
    返回值:
    df3: 一个DataFrame类型数据
    '''

    # df1,df2是DataFrame类型数据
    df1 = DataFrame(np.arange(12.).reshape((3, 4)), columns=list('abcd'))
    df2 = DataFrame(np.arange(20.).reshape((4, 5)), columns=list('abcde'))

    # 请在此添加代码 完成本关任务
    # ********** Begin *********#
    df3=df1.add(df2,fill_value=4)

    # ********** End **********#

    # 返回df3
    return df3

第7关:数据的基本操作——去重

# -*- coding: utf-8 -*-
from pandas import Series,DataFrame
import  pandas as pd

def delete_duplicated():
    '''
    返回值:
    df2: 一个DataFrame类型数据
    '''

    # df1是DataFrame类型数据
    df1 = DataFrame('k1': ['one'] * 3 + ['two'] * 4, 'k2': [1, 1, 2, 3, 3, 4, 4])
    # 请在此添加代码 完成本关任务
    # ********** Begin *********#
    df2=DataFrame(df1.drop_duplicates())
    #print(df2)
    # ********** End **********#

    # 返回df2
    return df2

第8关:层次化索引

# -*- coding: utf-8 -*-
from pandas import Series,DataFrame
import  pandas as pd
import numpy as np
def suoying():
    '''
    返回值:
    d1: 一个DataFrame类型数据
    '''
    #s1是Series类型数据
    s1=Series(np.random.randn(10),
           index=[['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd', 'd'], [1, 2, 3, 1, 2, 3, 1, 2, 2, 3]])
    # 请在此添加代码 完成本关任务
    # ********** Begin *********#
    d1=s1.unstack()

    # ********** End **********#

    # 返回d1
    return d1
suoying()

Pandas进阶

第1关:Pandas分组聚合

import pandas as pd
import numpy as np

#返回最大值与最小值的差
def sub(df):
    ######## Begin #######
    #求最大值与最小值之差
    return df.max() - df.min()
    ######## End #######

def main():
    ######## Begin #######
    data = pd.read_csv("step1/drinks.csv")#将表格资源读入
    #创建可视化模型
    df = pd.DataFrame(data)
    #对数据进行分组聚合
    mapping = "wine_servings":sub,"beer_servings":np.sum
    #打印信息
    print(df.groupby("continent").agg(mapping))
    ######## End #######

if __name__ == '__main__':
    main()

第2关:Pandas创建透视表和交叉表

#-*- coding: utf-8 -*-
import pandas as pd

#创建透视表
def create_pivottalbe(data):
    ###### Begin ######
    return data.pivot_table(index=["day"],values=["tip"],columns=["time"],margins=True,aggfunc=sum)

    ###### End ######

#创建交叉表
def create_crosstab(data):
    ###### Begin ######
    return pd.crosstab(index=[data.day],columns=[data.time],values=data.tip,aggfunc=sum ,margins=True)

    ###### End ######

def main():
    #读取csv文件数据并赋值给data
    ###### Begin ######
    data = pd.read_csv("step2/tip.csv")
    ###### End ######
    piv_result = create_pivottalbe(data)
    cro_result = create_crosstab(data)
    print("透视表:\\n".format(piv_result))
    print("交叉表:\\n".format(cro_result))

if __name__ == '__main__':
    main()

以上是关于模式识别课程educoder平台实训的主要内容,如果未能解决你的问题,请参考以下文章

educoder头歌实训 太原理工大学web课程————JavaScript对象:数组

educoder(头歌)平台Java实训作业答案

educoder头歌实训 太原理工大学web课程————JavaScript对象:Math日期

头歌(Educoder)实践教学平台——Hive综合应用案例

educoder头歌Web实训 太原理工web课——综合应用案例:商城下拉菜单的制作[全网更新最快]

educoder头歌Web实训 太原理工web课——综合应用案例:限时秒杀效果的制作全网更新最快