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 神经网络到底怎么回事还是没有搞清楚,继续战斗

  • 相关阅读:
    对象池使用时要注意几点
    Flash3D学习计划(一)——3D渲染的一般管线流程
    714. Best Time to Buy and Sell Stock with Transaction Fee
    712. Minimum ASCII Delete Sum for Two Strings
    647. Palindromic Substrings(马拉车算法)
    413. Arithmetic Slices
    877. Stone Game
    338. Counting Bits
    303. Range Sum Query
    198. House Robber
  • 原文地址:https://www.cnblogs.com/Eldq/p/12323177.html
Copyright © 2011-2022 走看看