zoukankan      html  css  js  c++  java
  • 学习日记2.17

    学习笔记(2.17)

    1.KNN水果分类实践

    1.data=pd.read_csv('E:python-mlF.csv')
    import pandas as pd
    pd.read_csv可以读取CSV文件
    更多的参数可查https://blog.csdn.net/brucewong0516/article/details/79092579
    在这里插入图片描述
    在这里插入图片描述
    2.labelencoder=LabelEncoder()
    data.iloc[:,0]=labelencoder.fit_transform(data.iloc[:,0])
    这个是机器学习中的监督学习标签编码,把一些复杂的标签数字化,方便处理
    A.data.iloc 是从DataFrame中筛选数据可以根据行和列来进行筛选
    B.使用 loc 从DataFrame中筛选数据是根据列头的标签来选择,在坐标轴上挑选不同的列头以获取希望的数据
    C.使用 ix 进行选择
    现在pandas官方已经不推荐使用 ix 进行选择了,并且将会在 0.20.1版本从Pandas中丢弃
    在这里插入图片描述
    这就是上面标签从小到大对应的数字
    这就是上面标签从小到大对应的数字
    3.data.iloc[:,1:]这个语法再一次困扰着我
    从第一行到最后一行提取 从第二行开始的所有列
    给我的启发就是下次遇到这样的就去 打印出来data.iloc[:,1:]
    在这里插入图片描述
    4. knn=KNeighborsClassifier(i)
    KNeighborsClassifier又称K最近邻,是一种经典的模式识别分类方法。sklearn库中的该分类器有以下参数:

    from sklearn.neighbors import KNeighborsClassifier;
     
    model = KNeighborsClassifier(
        n_neighbors=5, 
        weights=’uniform’, 
        algorithm=’auto’, 
        leaf_size=30, 
        p=2, 
        metric=’minkowski’, 
        metric_params=None, 
        n_jobs=None, 
        **kwargs=object);
     
    
    

    这里应该用的只是第一个参数, 那几个最近的就分类为一样的不断的调整,在for循环中不断调整K值再把当前K值对应的模型的精确的存放到一个列表里,我们可以挑选出一个精确度最高的K值
    5.x_train,x_test,y_train,y_test=train_test_split(data.iloc[:,1:],data.iloc[:,0],test_size=0.3,stratify=data.iloc[:,0],random_state=20
    中的参数 stratifysh 是按照中的比列切分
    6.整个过程其实不是很复杂,首先获取数据,把数据的标签和特征分开,把数据集中的数据切分为训练集和测试集,用循环的方式找到一个最优的K值放入KNN模型中得到最好分类精确度。

    BP神经网络手写数字识别

    1.from sklearn.cross_validation import train_test_split
    当我写完这行运行时,出现了报错
    在这里插入图片描述
    经过百度发现:
    这个cross_validatio这个包早就不在使用了,划分到了model_selection这个包中。解决方法:

    from sklearn.model_selection import train_test_split
    

    2.输入数据归一化
    用X减掉最小值然后再除以最大值,X矩阵里所有数据减掉最小值再除以最大值,就可以把X里的所有数据都变成0--1之间的数据。为什么要归一化呢?假如X很大有几个亿,一般权值初始化都是零点几,权值和X相乘,把盛出来的几千万带入激活函数,激活函数是一个S形的曲线,当X很大的时候,X无限趋近与1,在X很大时导数无限趋近于0,是没有梯度的,权值的改变是和梯度有关系的,是没有办法进行学习的。

    #输入数据归一化
    X-=x.min()
    X/=X.max()
    

    3.标签二值化
    在手写数字识别中 图片1的标签就是1,4的标签就是4,但是这并不符合神经网络的风格,输出层的神经元都是0和1来取值,
    如果说一张图片上是0,那么他的标签也是0,我们应该这样表示
    0>1000000000
    1>0100000000
    2>0010000000
    3>0001000000
    4>0000100000

    BP 神经网络到底怎么回事还是没有搞清楚,继续战斗

  • 相关阅读:
    前端js实现复制功能
    vue中流文件下载
    vuex的module简单使用
    vuex及其辅助函数简单使用
    element中合并单元格操作
    js保留小数并四舍五入方法封装
    数组的基本属性和方法
    数组的深复制、扁平化、排序及去重相关方法
    js基本数据类型及数组对象判断
    for/in 语句用于循环对象属性
  • 原文地址:https://www.cnblogs.com/Eldq/p/12323177.html
Copyright © 2011-2022 走看看