zoukankan      html  css  js  c++  java
  • scikit-learn估计器-KNN均值聚类

    scikit-learn库实现了一系列的数据挖掘,提供通用的编程接口、标准化的测试和调参工具

    主要包含:

    估计器:用于聚类、回归、分类分析

    转化器:用于数据的预处理和数据抓换

    流水线:组合数据挖掘的流程,便于再次使用


    估计器:为了实现大量的分类算法,该库把相关功能封装成所谓的估计器,主要包括两个函数:

            fit():训练算法,设置内部参数。接受训练集和类别这两个参数

      predict():参数为测试集,预测测试机的类别,并且返回一个测试集识别后级别的数组

    大多scikit-learn库接受和输出的数据格式都为numpy 的数组格式

    scikit-learn库提供了很多估计器,例如随机森林,svm,神经网络


    近邻算法:

    距离测度方法:

    欧式距离:两个特征响亮的长度平方和的平方根

    曼哈顿距离

    余弦距离


    1. # -*- coding: utf-8 -*-
    2. """
    3. Created on Thu Mar  2 21:43:06 2017
    4. @author: zzpp220
    5. """
    6. from pandas import DataFrame,Series
    7. import pandas as pd
    8. import numpy as np
    9. import os,csv
    10. from sklearn.cross_validation import train_test_split
    11. from sklearn.cross_validation import cross_val_score#交叉验证
    12. from matplotlib import pyplot as plt
    13. data_folder='/media/zzpp220/Data/Linux_Documents/DOWNLOAD/python-DataAnalysis/xianku_book'
    14. data=os.path.join(data_folder,'ionosphere.data')#csv --comma-seperated-values
    15. X=np.zeros((351,34),dtype='float')
    16. y=np.zeros((351,),dtype='bool')
    17. with open(data,'r') as input:
    18.    reader=csv.reader(input)
    19. #    X=np.array([])
    20.    for i ,row in enumerate(reader):
    21.        data=[float(datum) for datum in row[:-1]]
    22.        X[i]=data#读数据至数组X
    23.        y[i]=row[-1]=='g'#读类别值数组y
    24.    ## set train_set and test_set
    25.    X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=14)
    26.    ##导入k近邻分类器,并为其初始化一个实例,参数用默认的,以后再讲调参,该算法默认选择5个近邻作为分类一句
    27.    from sklearn.neighbors import  KNeighborsClassifier
    28.    estimator=KNeighborsClassifier()# 建立实例
    29.    #估计器创建号之后,就要用进行数据训练,
    30.    #k近邻估计器分析训练集中 的数据,比较待分类的新数据点和训练集中的数据,找到新数据点的 近邻
    31.    estimator.fit(X_train,y_train)
    32.    #用测试集测试孙发,【评估在测试集上的表现
    33.    y_predicted=estimator.predict(X_test)
    34.    accuracy=np.mean(y_test==y_predicted)*100
    35.    print 'the accuracy is {0:.1f}%'.format(accuracy)
    36.    
    37.    scores=cross_val_score(estimator,X,y,scoring='accuracy')
    38.    average_accuracy=np.mean(scores)*100
    39.    print 'the accuracy is {0:.1f}%'.format(average_accuracy)
    40.    
    41.    ##调参优化结果
    42.   #k近邻算法有多个参数,最终药店 是初始紧邻点的选择,想测试一系列的紧邻点的值,可以进行多次实验
    43.    avg_Scores,all_score=[],[]
    44.    parameter_values=range(1,21)
    45.    for num_neighbor in parameter_values:
    46.        multi_test_estimator=KNeighborsClassifier(n_neighbors=num_neighbor)
    47.        multi_testscore=cross_val_score(multi_test_estimator,X,y,scoring='accuracy')
    48.        all_score.append(multi_testscore)
    49.        avg_Scores.append(np.mean(multi_testscore))
    50.    plt.plot(parameter_values,avg_Scores,'-o')#画图,横坐标,纵坐标,点的标志
    51.    plt.savefig('knn-multi-neighbor-test.pdf',dpi=400,bbox_inchs='tight')#保存成pdf格式,后面是像素和白边的设置



    附件列表

    • 相关阅读:
      算法竞赛入门经典习题2-3 韩信点兵
      ios入门之c语言篇——基本函数——5——素数判断
      ios入门之c语言篇——基本函数——4——数值交换函数
      144. Binary Tree Preorder Traversal
      143. Reorder List
      142. Linked List Cycle II
      139. Word Break
      138. Copy List with Random Pointer
      137. Single Number II
      135. Candy
    • 原文地址:https://www.cnblogs.com/zzxx-myblog/p/6498556.html
    Copyright © 2011-2022 走看看