《机器学习实战》学习笔记---开发机器学习应用程序的基本步骤

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_38215395/article/details/69787491

作为一名机器学习小白,将自己的学习经历写下来,一方面为了总结和回顾,另一方面希望能得到各路大神的批评指正,若能给他人带来便利就更好不过了。


开发机器学习应用程序的基本步骤:

一、收集数据
可以从各大数据网站获取关于此方面的文章有很多,但一般来说,收集得来的数据存在缺失值,处理缺失值的方法一般有以下几种:

  1. 使用可用特征值的均值来填补;
  2. 直接使用特征值来填补;
  3. 忽略有缺失值的样本,比如对于分类问题,分类标签丢失,则此数据只能丢弃;
  4. 使用相似样本的均值来填补,比如本样本数据量少,若取自身均值来填补,可能会带来较大误差,此时可利用此种方法;
  5. 使用另外的机器学习算法预测缺失值,预测算法有很多,比如时间序列、灰色预测等等。

二、输入数据:若利用Python语言,则涉及到Python对列表、集合、字典的操作

  1. 读取txt文件的Python程序

    
    #读取文件函数,输入参数filename为文件名,函数输出list类型的dataList和labelList
    
    
    #文件中存储三列数据,每一行为一个对象,前两列为对象特征值,第三列为对象的类别标签
    
    def loadDataSet(filename):
    dataList=[];labelList=[]
    fr=open(filename)
    for line in fr.readlines():
        lineArr=line.strip().split('\t')
        dataList.append(lineArr[0],lineArr[1])
        labelList.append(lineArr[2])
    return dataList,labelList   
  2. Python常用的列表操作函数
    (1)创建列表:dataList=[]; 或dataList=[1,2,3,4,5]
    (2)在列表末尾添加数据:append()和extend()。注意两者的区别,append是添加数据块,而extend是添加数据块中的内容。如:

    data=[1,2,3];da=[1,2]  
    data.append(da)        
    print 'append()操作后结果'  
    print data             
    data=[1,2,3];da=[1,2]  
    data.extend(da)        
    print 'extend()操作后结果'  
    print data   

    输出结果为:

    append()操作后结果
    [1, 2, 3, [1, 2]]
    extend()操作后结果
    [1, 2, 3, 1, 2]

    (3)从列表末尾删除数据:pop()
    (4)删除特定项:remove()
    (5)在某个特定位置前面添加数据项:insert(i,x),其中i为添加位置,x为添加的数据
    (6)查找字符:find(),若存在,则返回字符位置;不存在则返回-1
    (7)列表推导:通过for循环遍历列表中的内容

    lower=["I","Love","Python"]         #一个包含小写字母的列表
    upper=[s.upper() for s in lower]  #将所有的小写字母转化为大写,输出:[“I”,"LOVE","PYTHON"]
  3. 集合:
    (1)创建:a=set[]
    (2)特点:集合中不存在重复数据
  4. 字典
    (1)创建:

    dictionary={}或dictionary=dict()
    dictionary['name']='LZ'
    dictionary['sex']=['Men','Women']

    (2)访问:dictionary['sex'][-1] #返回Women
    (3)特点:内置的数据结构,允许与数据与键关联,存储的内容与顺序无关

三、分析输入数据:涉及到Python对数据的排序、绘图、腌制等

  1. 排序:
    (1)原地排序:原数据会被替换,如data.sort(),data原有内容被排序后的数据替换
    (2)复制排序:原有数据不变,将排序后的数据赋另一变量,如data2=sorted(data)
    (3)获取数据从小到大排序后的依次标号,data.argsort()
  2. 绘图:matPlotlib库,import matPlotlib.pyplot
  3. 数据腌制:

    
    #腌制数据
    
    with open("Li.txt","wb") as Li_f:     #以二进制写方式打开
        pickle.dump(Li,Li_ f)               #将数据Li写入Li_f.txt中
    
    #解除腌制
    
    with open("Li.txt","rb") as Li_f:    #以二进制读方式打开
        New_ Li=pickle.load(Li_ f)    #取出Li.txt中的数据,赋给变量New_ Li
  4. 获取矩阵的行列数:

    from numpy  import *
    dataMat=[[1,2],[3,4],[5,6]]
    m,n=shape(dataMat)

四、训练算法:对于无监督学习算法,不需要训练,而对于有监督的学习算法,可利用交叉验证方法,即利用90%的数据训练算法,其余用来测试

五、测试算法:计算错误率,若错误率太大,则继续优化、训练算法

六、使用算法


参考:
1、《Machine Learning in Action》 译名:《机器学习实战》 作者:Peter Harrington 译者:李锐 李鹏 曲亚东 王斌
出版社:人民邮电出版社
2、《Head First Python》(中文版) 作者:Pual Barry 译者:林琪 郭静 等 出版社:中国电力出版社

猜你喜欢

转载自blog.csdn.net/weixin_38215395/article/details/69787491