knn

Using cosine distance with scikit learn KNeighborsClassifier

大城市里の小女人 提交于 2019-11-30 02:45:32
问题 Is it possible to use something like 1 - cosine similarity with scikit learn's KNeighborsClassifier? This answer says no, but on the documentation for KNeighborsClassifier, it says the metrics mentioned in DistanceMetrics are available. Distance metrics don't include an explicit cosine distance, probably because it's not really a distance, but supposedly it's possible to input a function into the metric. I tried inputting the scikit learn linear kernel into KNeighborsClassifier but it gives

knn原理及借助电影分类实现knn算法

时光毁灭记忆、已成空白 提交于 2019-11-30 02:16:55
KNN最近邻算法原理   KNN英文全称K-nearst neighbor,中文名称为K近邻算法,它是由Cover和Hart在1968年提出来的    KNN算法原理:         1. 计算已知类别数据集中的点与当前点之间的距离;         2. 按照距离递增次序排序;         3. 选择与当前距离最小的k个点;         4. 确定前k个点所在类别的出现概率         5. 返回前k个点出现频率最高的类别作为当前点的预测分类   如果数据集中序号1-12为已知的电影分类,分为喜剧片、动作片、爱情片三个种类,使用的特征值分别为搞笑镜头、打斗镜头、拥抱镜头的数量。那么来了一部新电影《唐人街探案》,它属于上述3个电影分类中的哪个类型?   代码实现如下 import pandas as pd import numpy as np def distance(v1, v2): """ 距离计算 :param v1:点1 :param v2: 点2 :return: 距离 """ dist = np.sqrt(np.sum(np.power((v1 - v2), 2))) return dist # 加载数据 data = pd.read_excel("./电影分类数据.xlsx") print("data:\n", data) print("*" * 80)

signals function|KNN|SVM|average linkage|Complete linkage|single linkage

泄露秘密 提交于 2019-11-29 22:36:42
生物医疗大数据 存在系统误差使得估计量有偏,如下图红色和蓝色图形,存在随机误差使得估计量并不是同一个值,如图中除去期望之外的曲线值,为了控制随机抽样造成的误差,可以使用 p-value 决定是否服从假设检验,判断两个变量之间相关性的有无。 相关系数: 该系数广泛用于度量两个变量之间的 线性相关 程度。 建立模型: 技术种类:线性模型 & 机器学习模型 按输出数据分类:监督学习模型 & 非监督学习模型 Average linkage demo 第一个矩阵是原始数据,单未知数据结构,通过 average linkage 方法结倒推得到其数据结构,即把数据展开了。主要步骤是找到 Smallest distance (因为此两者之间的关系最简单),将距离均值作为到中间未知的距离(因为 average linkage 中的 average 决定的),随后以此类推。 除去 average linkage 方法之外还有 Max : Complete linkage&min : single linkage 。 对于 classify 来说,有 data-base 的 KNN : K 取值重要决定学习规则的范围;和 Model-oriented 其最重要的是找到区分多类数据的曲线,该曲线的函数思路可有以下三种: 1. 高次项 SVM (升维) 2. 用傅里叶变换用三角函数凑不平滑曲线 3

Chapter 3 KNN算法

纵然是瞬间 提交于 2019-11-29 14:14:06
前言 目的: k k k 近邻法是基本且简单的分类与回归方法。 k k k 近邻法的基本做法是:对给定的训练实例点和输入实例点,首先确定输入实例点的 k k k 个最近邻训练实例点,然后利用这 k k k 个训练实例点的类的多数来预测输入实例点的类。 1. k 近邻模型 1.1 算法 输入: KaTeX parse error: Expected 'EOF', got '\cal' at position 51: …y_N)\}, x_i\in \̲c̲a̲l̲{X}\sube{\bf{R}… ; 实例特征向量 x x x 输出: 实例所属的 y y y 步骤: 根据指定的 距离度量 ,在 T T T 中查找 x x x 的 最近邻的 k k k 个点 ,覆盖这 k k k 个点的 x x x 的邻域定义为 N k ( x ) N_k(x) N k ​ ( x ) 在 N k ( x ) N_k(x) N k ​ ( x ) 中应用 分类决策规则 决定 x x x 的类别 y y y y = arg ⁡ max ⁡ c j ∑ x i ∈ N k ( x ) I ( y i = c j ) , i = 1 , 2 , … , N , j = 1 , 2 , … , K y=\arg\max_{c_j}\sum_{x_i\in N_k(x)}I(y_i=c_j), i=1,2,

KNN算法

别说谁变了你拦得住时间么 提交于 2019-11-29 12:17:40
一、底层算法 import numpy as np import pandas as pd import matplotlib . pyplot as plt #先随机设置十个样本点表示十杯酒 rowdata = { '颜色深度' : [ 14.23 , 13.2 , 13.16 , 14.37 , 13.24 , 12.07 , 12.43 , 11.79 , 12.37 , 12.04 ] , '酒精浓度' : [ 5.64 , 4.38 , 5.68 , 4.80 , 4.32 , 2.76 , 3.94 , 3 . , 2.12 , 2.6 ] , '品种' : [ 0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 , 1 ] } # 0代表黑皮诺 , 1代表赤霞珠 wine_data = pd . DataFrame ( rowdata ) wine_data X = np . array ( wine_data . iloc [ : , 0 : 2 ] ) X y = np . array ( wine_data . iloc [ : , - 1 ] ) y new_data = np . array ( [ 12.8 , 4.1 ] ) #要判断的数据 # 1 算距离 from math import sqrt distance = [ sqrt (

15. 使用KNN实现DBRHD数据集的手写识别

喜你入骨 提交于 2019-11-29 12:01:15
import numpy as np from os import listdir # 使用listdir模块,用于访问本地文件 from sklearn import neighbors def img2vector ( file_name ) : """ 将加载的32*32的图片矩阵展开成一维向量。 :param file_name: 文件路径 :return: retMat: 一维向量 """ retMat = np . zeros ( [ 1024 ] , int ) # 定义返回的矩阵,大小为1*1024 fr = open ( file_name ) # 打开包含32*32大小的数字文件 lines = fr . readlines ( ) # 读取文件的所有行 for i in range ( 32 ) : # 遍历文件所有行 for j in range ( 32 ) : # 并将01数字存放在retMat中 retMat [ i * 32 + j ] = lines [ i ] [ j ] return retMat def read_dataset ( path ) : """ 加载训练数据,并将样本标签转化为one-hot向量 :param path: 文件夹路径 :return: data_set, hw_labels: 训练数据, 标签数据 """

python调用scikit-learn机器学习

天涯浪子 提交于 2019-11-29 11:20:05
不支持深度学习和强化学习 numpy介绍: np.eye(n)生成一个n维单元数组 数据预处理: iris数据加载 from sklearn import datasets iris = datasets.load_iris() 数据展示 显示iris的信息 print(iris.data) [[5.1 3.5 1.4 0.2] [4.9 3. 1.4 0.2] [4.7 3.2 1.3 0.2] …… [5. 3.6 1.4 0.2] [5.4 3.9 1.7 0.4] [4.6 3.4 1.4 0.3]] 每列数据表示不同样本同一属性下对用的数值 print(iris.feature_names) ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)'] 输出目标结果 print(iris.target) [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

机器学习之K近邻算法(KNN)

孤街浪徒 提交于 2019-11-29 10:43:06
机器学习之K近邻算法(KNN) 标签: python 算法 KNN 机械学习 苛求真理的欲望让我想要了解算法的本质,于是我开始了机械学习的算法之旅 from numpy import * import operator from collections import Counter #KNN需要测试集,训练集,标签和k值 #测试集:你需要测试的数据 #训练集:给定的标准数据 #标签:每个标准数据的类别 #k值 :测试集和训练集相比较下前K个最相识的训练集的值 # 用KNN算法找出测试集的类别 #1,求出已知类别训练集中的点与当前点之间的距离 #2,对所求距离以此递增排序 #3,选取与当前点距离最小的k个点 #4,确定前k个点所在类别的出现频率 #5,返回前k个点出现频率最高的类别作为当前点的预测分类 def kNNClassify(testSet, trainSet, labels, k = 3 ): rows = trainSet.shape[ 0 ] #shape[0]得到训练集的行数 #求距离 distSet = tile(testSet, (rows, 1 )) - trainSet #得到距离矩阵 distance = sum (distSet ** 2 , axis = 1 ) ** 0.5 # 求出距离 #排序 #得到排序后数据原位置的下标,排序后位置是不变的

KNN algo in matlab

情到浓时终转凉″ 提交于 2019-11-29 10:28:43
问题 I am working on thumb recognition system. I need to implement KNN algorithm to classify my images. according to this, it has only 2 measurements, through which it is calculating the distance to find the nearest neighbour but in my case I have 400 images of 25 X 42, in which 200 are for training and 200 for testing. I am searching for few hours but I am not finding the way to find the distance between the points. EDIT: I have reshaped 1st 200 images in to 1 X 1050 and stored them in a matrix

Knn算法实现

旧街凉风 提交于 2019-11-29 02:30:52
Knn算法实现 /*--> */ /*--> */ /*--> */ /*--> */ /*--> */ /*--> */ k近邻算法 ¶ 0.引入依赖 ¶ In [8]: import numpy as np import pandas as pd #这里直接引入sklearn里面的数据集,iris 鸢尾花 from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split # 切分数据集为训练集和测试集 from sklearn.metrics import accuracy_score #计算分类预测的准确率 1.数据加载和预处理 ¶ In [23]: iris = load_iris() df = pd.DataFrame(data=iris.data, columns = iris.feature_names) df['class'] = iris.target df['class'] = df['class'].map( lambda i:iris.target_names[i] ) df.describe() Out[23]: /*--> */ /*--> */ sepal length (cm) sepal width (cm) petal