zoukankan      html  css  js  c++  java
  • 深度学习代码索引

    本篇博客总结了,可能会重复使用的代码的索引,方便查找

    分类性能度量

    P-R曲线绘制

    #利用鸢尾花数据集绘制P-R曲线
    print(__doc__)      #打印注释
    
    import matplotlib.pyplot as plt
    import numpy as np
    from sklearn import svm, datasets
    from sklearn.metrics import precision_recall_curve    # 精确率和召回率
    from sklearn.metrics import average_precision_score   
    from sklearn.preprocessing import label_binarize      # 标签的标准化处理
    from sklearn.multiclass import OneVsRestClassifier    #一对其余(每次将一个类作为正类,剩下的类作为负类)
    
    # from sklearn.cross_validation import train_test_split  #适用于anaconda 3.6及以前版本
    from sklearn.model_selection import train_test_split     #适用于anaconda 3.7,训练集和数据集拆分模块
    
    #以iris数据为例,画出P-R曲线
    iris = datasets.load_iris()
    X = iris.data    #150*4
    y = iris.target  #150*1
    
    # 标签二值化,将三个类转为001, 010, 100的格式.因为这是个多类分类问题,后面将要采用
    #OneVsRestClassifier策略转为二类分类问题
    y = label_binarize(y, classes=[0, 1, 2])    #将150*1转化成150*3
    n_classes = y.shape[1]                      #列的个数,等于3
    print (y)
    
    # 增加了800维的噪声特征
    random_state = np.random.RandomState(0)
    n_samples, n_features = X.shape
    
    X = np.c_[X, random_state.randn(n_samples, 200 * n_features)]   #行不变,只增加了列,150*804
    
    # 训练集和测试集拆分,比例为0.5
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.5, random_state=random_state) #随机数,填0或不填,每次都会不一样
    
    # 一对其余,转换成两类,构建新的分类器
    classifier = OneVsRestClassifier(svm.SVC(kernel='linear', probability=True, random_state=random_state))
    #训练集送给fit函数进行拟合训练,训练完后将测试集的样本特征注入,得到测试集中每个样本预测的分数
    y_score = classifier.fit(X_train, y_train).decision_function(X_test)
    
    # Compute Precision-Recall and plot curve
    #下面的下划线是返回的阈值。作为一个名称:此时“_”作为临时性的名称使用。
    #表示分配了一个特定的名称,但是并不会在后面再次用到该名称。
    precision = dict()
    recall = dict()
    average_precision = dict()
    for i in range(n_classes):
        #对于每一类,计算精确率和召回率的序列(:表示所有行,i表示第i列)
        precision[i], recall[i], _ = precision_recall_curve(y_test[:, i],  y_score[:, i])
        average_precision[i] = average_precision_score(y_test[:, i], y_score[:, i])#切片,第i个类的分类结果性能
    
    # Compute micro-average curve and area. ravel()将多维数组降为一维
    precision["micro"], recall["micro"], _ = precision_recall_curve(y_test.ravel(),  y_score.ravel())
    average_precision["micro"] = average_precision_score(y_test, y_score, average="micro") #This score corresponds to the area under the precision-recall curve.
    
    # Plot Precision-Recall curve for each class
    plt.clf()#clf 函数用于清除当前图像窗口
    plt.plot(recall["micro"], precision["micro"],
             label='micro-average Precision-recall curve (area = {0:0.2f})'.format(average_precision["micro"]))
    for i in range(n_classes):
        plt.plot(recall[i], precision[i],
                 label='Precision-recall curve of class {0} (area = {1:0.2f})'.format(i, average_precision[i]))
    
    plt.xlim([0.0, 1.0])
    plt.ylim([0.0, 1.05]) #xlim、ylim:分别设置X、Y轴的显示范围。
    plt.xlabel('Recall', fontsize=16)
    plt.ylabel('Precision',fontsize=16)
    plt.title('Extension of Precision-Recall curve to multi-class',fontsize=16)
    plt.legend(loc="lower right")#legend 是用于设置图例的函数
    plt.show()
    

    特征处理

    量纲缩放(标准化缩放法和区间缩放法)

    # -*- coding: utf-8 -*-
    """
    演示内容:量纲的特征缩放
    (两种方法:标准化缩放法和区间缩放法。每种方法举了两个例子:简单二维矩阵和iris数据集)
    """
    #方法1:标准化缩放法 例1:对简单示例二维矩阵的列数据进行
    from sklearn import preprocessing   
    import numpy as np  
    #采用numpy的array表示,因为要用到其mean等函数,而list没有这些函数
    X = np.array([[0, 0], 
            [0, 0], 
            [100, 1], 
            [1, 1]])  
    # calculate mean  
    X_mean = X.mean(axis=0)  
    # calculate variance   
    X_std = X.std(axis=0)  
    #print (X_std)
    # standardize X  
    X1 = (X-X_mean)/X_std
    print (X1)
    print ("")
     
    # we can also use function preprocessing.scale to standardize X  
    X_scale = preprocessing.scale(X)  
    print (X_scale)
     
     
    #方法1: 标准化缩放法 例2:对iris数据二维矩阵的列数据进行。这次采用一个集成的方法StandardScaler
    from sklearn import datasets
    iris = datasets.load_iris()
    X_scale = preprocessing.scale(iris.data)  
    print (X_scale)
     
    #方法2: 区间缩放法 例3:对简单示例二维矩阵的列数据进行
    from sklearn.preprocessing import MinMaxScaler
     
    data = [[0, 0], 
            [0, 0], 
            [100, 1], 
            [1, 1]]
     
    scaler = MinMaxScaler()
    print(scaler.fit(data))
    print(scaler.transform(data))
     
    #方法2: 区间缩放法 例4:对iris数据二维矩阵的列数据进行
    from sklearn.preprocessing import MinMaxScaler
     
    data = iris.data
     
    scaler = MinMaxScaler()
    print(scaler.fit(data))
    print(scaler.transform(data))
    

    深度学习

    自然语言处理

    持续更新...........

  • 相关阅读:
    Wireshark按照域名过滤
    【黑客免杀攻防】读书笔记12
    【逆向知识】反调试-除0异常-编程与逆向
    JS脚本病毒调试脚本-Trojan[Downloader]:JS/Nemucod
    【Python】HackBack(获取暴力破解服务器密码的IP来源)
    【Python】CVE-2017-10271批量自查POC(Weblogic RCE)
    【Python】exe2shellcode,shellcode2exe
    【Python】如何基于Python写一个TCP反向连接后门
    【工具】用命令行与Python使用YARA规则
    选择排序
  • 原文地址:https://www.cnblogs.com/douzujun/p/13032676.html
Copyright © 2011-2022 走看看