美文网首页TensorFlow@IT·互联网程序员
scikit-learn的基本用法(五)——交叉验证1

scikit-learn的基本用法(五)——交叉验证1

作者: SnailTyan | 来源:发表于2017-05-04 21:26 被阅读1047次

    文章作者:Tyan
    博客:noahsnail.com  |  CSDN  |  简书

    本文主要介绍scikit-learn中的交叉验证。

    • Demo 1
    import numpy as np
    from sklearn import datasets
    from sklearn.cross_validation import train_test_split
    from sklearn.neighbors import KNeighborsClassifier
    from sklearn.cross_validation import cross_val_score 
    
    # 加载iris数据集
    iris = datasets.load_iris()
    # 读取特征
    X = iris.data
    # 读取分类标签
    y = iris.target
    # 定义分类器
    knn = KNeighborsClassifier(n_neighbors = 5)
    # 进行交叉验证数据评估, 数据分为5部分, 每次用一部分作为测试集
    scores = cross_val_score(knn, X, y, cv = 5, scoring = 'accuracy')
    # 输出5次交叉验证的准确率
    print scores
    
    • 结果
    [ 0.96666667  1.          0.93333333  0.96666667  1.        ]
    
    • Demo 2
    
    import numpy as np
    import matplotlib.pyplot as plt
    from sklearn import datasets
    from sklearn.cross_validation import train_test_split
    from sklearn.neighbors import KNeighborsClassifier
    from sklearn.cross_validation import cross_val_score 
    
    # 确定knn中k的取值
    
    # 加载iris数据集
    iris = datasets.load_iris()
    # 读取特征
    X = iris.data
    # 读取分类标签
    y = iris.target
    # 定义knn中k的取值, 0-10
    k_range = range(1, 30)
    # 保存k对应的准确率
    k_scores = []
    # 计算每个k取值对应的准确率
    for k in k_range:
        # 获得knn分类器
        knn = KNeighborsClassifier(n_neighbors = k)
        # 对数据进行交叉验证求准确率
        scores = cross_val_score(knn, X, y, cv = 10, scoring = 'accuracy')
        # 保存交叉验证结果的准确率均值
        k_scores.append(scores.mean())
    
    # 绘制k取不同值时的准确率变化图像
    plt.plot(k_range, k_scores)
    plt.xlabel('K Value in KNN')
    plt.ylabel('Cross-Validation Mean Accuracy')
    plt.show()
    
    • 结果
    image

    相关文章

      网友评论

        本文标题:scikit-learn的基本用法(五)——交叉验证1

        本文链接:https://www.haomeiwen.com/subject/veidtxtx.html