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

附件列表

时间: 2024-08-10 19:15:55

scikit-learn估计器-KNN均值聚类的相关文章

第十篇:K均值聚类(KMeans)

前言 本文讲解如何使用R语言进行 KMeans 均值聚类分析,并以一个关于人口出生率死亡率的实例演示具体分析步骤. 聚类分析总体流程 1. 载入并了解数据集:2. 调用聚类函数进行聚类:3. 查看聚类结果描述:4. 将聚类结果图形化展示:5. 选择最优center并最终确定聚类方案:6. 图形化展示不同方案效果并提交分析报表. 人口出生/死亡率聚类分析 - K均值聚类 1. 载入并了解数据集 1.1 从网上下载一份txt格式的关于人口出生率统计的数据(countries.txt).其内容大致如下

机器学习实战5:k-means聚类:二分k均值聚类+地理位置聚簇实例

k-均值聚类是非监督学习的一种,输入必须指定聚簇中心个数k.k均值是基于相似度的聚类,为没有标签的一簇实例分为一类. 一 经典的k-均值聚类 思路: 1 随机创建k个质心(k必须指定,二维的很容易确定,可视化数据分布,直观确定即可): 2 遍历数据集的每个实例,计算其到每个质心的相似度,这里也就是欧氏距离:把每个实例都分配到距离最近的质心的那一类,用一个二维数组数据结构保存,第一列是最近质心序号,第二列是距离: 3 根据二维数组保存的数据,重新计算每个聚簇新的质心: 4 迭代2 和 3,直到收敛

多核模糊C均值聚类

摘要: 针对于单一核在处理多数据源和异构数据源方面的不足,多核方法应运而生.本文是将多核方法应用于FCM算法,并对算法做以详细介绍,进而采用MATLAB实现. 在这之前,我们已成功将核方法应用于FCM算法,在很大程度上解决了样本线性不可分的情况.但是这种单一核局限于对数据的某一特征进行有效提取,若一个样本含有多个特征,且遵循不同的核分布,单一核学习就不适用,所以说单一核在处理多数据源以及异构数据源的不足是越发明显. 针对于单一核学习不足,我们可以同时结合多个核函数对数据的多种特征进行同步描述,并

k-均值聚类算法;二分k均值聚类算法

根据<机器学习实战>一书第十章学习k均值聚类算法和二分k均值聚类算法,自己把代码边敲边理解了一下,修正了一些原书中代码的细微差错.目前代码有时会出现如下4种报错信息,这有待继续探究和完善. 报错信息: Warning (from warnings module): File "F:\Python2.7.6\lib\site-packages\numpy\core\_methods.py", line 55 warnings.warn("Mean of empty

基于核方法的模糊C均值聚类

摘要: 本文主要针对于FCM算法在很大程度上局限于处理球星星团数据的不足,引入了核方法对算法进行优化.  与许多聚类算法一样,FCM选择欧氏距离作为样本点与相应聚类中心之间的非相似性指标,致使算法趋向于发现具有相近尺度和密度的球星簇.因此,FCM很大程度上局限于对球星星团的处理,不具有普遍性.联系到支持向量机中的核函数,可采用核方法将数据映射到高维特征空间进行特征提取从而进行聚类.现阶段,核方法已广泛应用于模糊聚类分析算法.核方法的应用目前已成为计算机智能方面的热点之一,对于核学习的深入研究具有

Query意图分析:记一次完整的机器学习过程(scikit learn library学习笔记)

所谓学习问题,是指观察由n个样本组成的集合,并根据这些数据来预测未知数据的性质. 学习任务(一个二分类问题): 区分一个普通的互联网检索Query是否具有某个垂直领域的意图.假设现在有一个O2O领域的垂直搜索引擎,专门为用户提供团购.优惠券的检索:同时存在一个通用的搜索引擎,比如百度,通用搜索引擎希望能够识别出一个Query是否具有O2O检索意图,如果有则调用O2O垂直搜索引擎,获取结果作为通用搜索引擎的结果补充. 我们的目的是学习出一个分类器(classifier),分类器可以理解为一个函数,

机器学习--k均值聚类(k-means)算法

一.基本原理 分类是指分类器根据已标注类别的训练集,通过训练可以对未知类别的样本进行分类.分类被称为监督学习.如果训练集的样本没有标注类别,那么就需要用到聚类.聚类是把相似的样本聚成一类,这种相似性通常以距离来度量.聚类被称为无监督学习. 聚类是指根据"物以类聚"的原理,将本身没有类别的样本聚集成不同的组,这样的一组数据对象的集合叫做簇,并且对每一个这样的簇进行描述的过程.它的目的是使得属于同一个簇的样本之间应该彼此相似,而不同簇的样本应该足够不相似.与分类规则不同,进行聚类前并不知道

Python之扩展包安装(scikit learn)

scikit learn 是Python下开源的机器学习包.(安装环境:win7.0 32bit和Python2.7) Python安装第三方扩展包较为方便的方法:easy_install + packages name 在官网 https://pypi.python.org/pypi/setuptools/#windows-simplified 下载名字为 的文件. 在命令行窗口运行 ,安装后,可在python2.7文件夹下生成Scripts文件夹.把路径D:\Python27\Scripts

scikit learn 模块 调参 pipeline+girdsearch 数据举例:文档分类

scikit learn 模块 调参 pipeline+girdsearch 数据举例:文档分类数据集 fetch_20newsgroups #-*- coding: UTF-8 -*- import numpy as np from sklearn.pipeline import Pipeline from sklearn.linear_model import SGDClassifier from sklearn.grid_search import GridSearchCV from sk