scikit-learn估计器-KNN均值聚类

Posted zx0801

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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格式,后面是像素和白边的设置



附件列表

     

    以上是关于scikit-learn估计器-KNN均值聚类的主要内容,如果未能解决你的问题,请参考以下文章

    Sklearn K均值聚类

    如何在 scikit-learn 中使用 KDE(核密度估计)进行一维数组聚类?

    实验二 K-近邻算法及应用

    DBSCAN与kmeans,OPTICS区别?

    skLearn 支持向量机

    scikit-learn 入门