zoukankan      html  css  js  c++  java
  • BGD-py实现学习【1】[转载]

    转自:https://github.com/icrtiou/Coursera-ML-AndrewNg

    1.源码-对数据读取

    import numpy as np
    import pandas as pd
    
    
    def get_X(df):
        """
        use concat to add intersect feature to avoid side effect
        not efficient for big dataset though
        """
        ones = pd.DataFrame({'ones': np.ones(len(df))})#返回某一长度的全为1的array,这是一个字典
        data = pd.concat([ones, df], axis=1)  # column concat #按列合并,加上一列1,为b使用
        return data.iloc[:, :-1].as_matrix()  # this return ndarray, not matrix,选取最后一列作为多维数组返回
    
    
    def get_y(df):
        '''assume the last column is the target'''
        return np.array(df.iloc[:, -1])#选最后一列
    
    
    def normalize_feature(df):
        """Applies function along input axis(default 0) of DataFrame."""
        return df.apply(lambda column: (column - column.mean()) / column.std())

    1.pandas数据结构Series

    转自:https://www.cnblogs.com/linux-wangkun/p/5903380.html

     1.1生成指定Series对象

    默认的索引是从0开始。

    1.2 生成指定索引

    //还有其他的一些知识点,根据字典创建以及自动对齐操作等。

    2.pd中的concat函数

    转自:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.concat.html?highlight=concat 

    concat函数就是对两个对象进行拼接,默认的axis是0,有点像R中的rbind函数(按行合并),默认是按行合并;

    若axis为1,那么即按列合并。

    //讲的挺详细的,还有合并两个列名分别相同的数据框,如果列名不完全一样,则用NA补齐。

    2.1 内连接

    通过join=inner进行内连接合并,对有相同列名的进行合并,然后返回。

    join=outer则是取并集,上面是取交集。

     

    3.data.iloc与loc函数

     转自:https://blog.csdn.net/llx1026/article/details/77722608

    import numpy as np  
    import pandas as pd  
    df = pd.DataFrame(np.arange(0,60,2).reshape(10,3),columns=list('abc'))
    
    结果df:
        a   b   c
    0   0   2   4
    1   6   8  10
    2  12  14  16
    3  18  20  22
    4  24  26  28
    5  30  32  34
    6  36  38  40
    7  42  44  46
    8  48  50  52
    9  54  56  58

    其中loc是索引是字符串时使用,iloc是索引是数字时使用,可以实现数据切片

    注意使用df.loc如果取列的话,需要是[:,'列名'],如果直接df.loc['b']报错。

    df.loc[0:3, ['a', 'b']]#取出0,1,2,3行的a,b两列,
                           #如果只取一列那么就这样写df.loc[0:3, 'a']
                           #如果取多列,那么要把列用[]放在一起如df.loc[0:3, ['a', 'b']]
    输出:
       a   b
    0  0   2
    1  6   8
    2  12  14
    3  18  20
    #不想抽取连续的行和列,那么就需要用[]把要取的行和列都列出来
    #如下
    df.loc[[1, 5], ['b', 'c']]或df.loc[[1, 5]][['b', 'c']]

     如果嫌列名太长,则使用iloc

     

    下面的是取全部的行和列。

     另一种格式,用这个的话会十分省代码:

    还有一种就是如下的格式,意思是取出df中第a列中元素等于6的那一行的b列和c列

    df.loc[df['a'] == 6][['b', 'c']]

     //厉害了。

     

    //这一句的意思就是,取所有行,并且列怎么取?-1这里表示最后一列,也就是除去最后一列。

    4.lamda和DataFrame.apply 函数

  • 相关阅读:
    (原)试问那些不劳而获的人?
    (原)资源互换原则
    (原)关于与人沟通时的几个中文语法
    osgviewer读取dxf文件,拣选高亮功能小结
    qt的OSG视图中拣选对象事件消息
    1)OSG与QT单文档视图的结合
    三维渲染引擎设计与实践(八)
    三维渲染引擎设计与实践(七)
    三维渲染引擎设计与实践(六)
    三维渲染引擎设计与实践(五)
  • 原文地址:https://www.cnblogs.com/BlueBlueSea/p/10245920.html
Copyright © 2011-2022 走看看