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格式,后面是像素和白边的设置



    附件列表

    • 相关阅读:
      WordPress伪静态配置
      微信支付后默认关注公众号
      微信公众号中点击A标签嵌套的img
      全站变灰
      人人商城团队初始化
      Map-T
      处理Hbuilder H5页面打包APP 返回直接退出的问题
      ES6:搭建前端环境
      ES6:简介
      jQuery: 案例
    • 原文地址:https://www.cnblogs.com/zzxx-myblog/p/6498556.html
    Copyright © 2011-2022 走看看