knn

How do I avoid time leakage in my KNN model?

心已入冬 提交于 2019-12-04 11:24:23
I am building a KNN model to predict housing prices. I'll go through my data and my model and then my problem. Data - # A tibble: 81,334 x 4 latitude longitude close_date close_price <dbl> <dbl> <dttm> <dbl> 1 36.4 -98.7 2014-08-05 06:34:00 147504. 2 36.6 -97.9 2014-08-12 23:48:00 137401. 3 36.6 -97.9 2014-08-09 04:00:40 239105. Model - library(caret) training.samples <- data$close_price %>% createDataPartition(p = 0.8, list = FALSE) train.data <- data[training.samples, ] test.data <- data[-training.samples, ] model <- train( close_price~ ., data = train.data, method = "knn", trControl =

K-近邻算法(KNN)

a 夏天 提交于 2019-12-04 08:13:05
K-近邻算法 K-K个 N-nearest-最近 N-Neighbor 来源:KNN算法最早是由Cover和Hart提出的一种分类算法 定义 如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。 距离公式 两个样本的距离可以通过如下公式计算,又叫欧式距离 KNN算法流程总结 根据K个邻居判定你的类别 1.计算当前样本与所有样本距离 2.距离从小到大排序 3.取前K个邻居 4.K个邻居投票,统计投票结果(A,B) 5.根据投票结果值出现频率高类别作为最终类别 K近邻算法api初步使用 机器学习流程 1.获取数据 2.数据基本处理 3.特征工程 4.建立模型   1.KNN算法 5.模型评估 Scikit-learn工具介绍 Python语言的机器学习工具 Scikit-learn包括许多知名的机器学习算法的实现 Scikit-learn文档完善,容易上手,丰富的API 目前稳定版本0.19.1-?? 安装: pip3 install scikit-learn==0.19.1注:安装scikit-learn需要Numpy, Scipy等库 Scikit-learn 包含的内容 分类、聚类、回归 特征工程 模型选择、调优 K-近邻算法API sklearn.neighbors.KNeighborsClassifier(n

集成学习和代码实现

孤人 提交于 2019-12-04 04:26:52
从百度云课堂上截图的基础概念,如果之前不了解的可以先看一下这篇博客: https://blog.csdn.net/weixin_30708329/article/details/97262409 不同的数据集训练不同的模型,根据模型进行投票得到最终预测结果 多棵决策树组成森林,每个模型训练集不同和选择的决策属性不同是RF算法随机的最主要体现 adaboost算法不同模型之间会有影响 多层分类器进行结果的预测 bagging算法提高KNN和决策树算法精确度 1 # 导入算法包以及数据集 2 from sklearn import neighbors 3 from sklearn import datasets 4 from sklearn.ensemble import BaggingClassifier 5 from sklearn import tree 6 from sklearn.model_selection import train_test_split 7 import numpy as np 8 import matplotlib.pyplot as plt 9 iris = datasets.load_iris() 10 x_data = iris.data[:,:2] 11 y_data = iris.target 12 def plot(model): 13 #

KNN

我们两清 提交于 2019-12-04 04:07:52
一、knn的原理 K-近邻算法采用测量不同特征值之间的距离方法进行分类。 问题是求某点的最近 K 个点。求两点间距离公式 ,此外还可能需要增加权重 优点:精度高、对异常值不敏感、无数据输入假定。 缺点:时间复杂度高、空间复杂度高。 1、当样本不平衡时,比如一个类的样本容量很大,其他类的样本容量很小,输入一个样本的时候,K个临近值中大多数都是大样本容量的那个类,这时可能就会导致分类错误。 可以对K临近点进行加权,也就是距离近的点的权值大,距离远的点权值小 。 2、计算量较大,每个待分类的样本都要计算它到全部点的距离,根据距离排序才能求得K个临近点, 可以先对已知样本点进行剪辑,事先去除对分类作用不大的样本。 适用数据范围:数值型和标称型 二、python实现knn 参考链接:https://www.cnblogs.com/lyuzt/p/10471617.html ''' trainData - 训练集 testData - 测试集 labels - 分类 ''' def knn(trainData, testData, labels, k): # 计算训练样本的行数 rowSize = trainData.shape[0] # 计算训练样本和测试样本的差值 diff = np.tile(testData, (rowSize, 1)) - trainData # 计算差值的平方和

knn学习笔记

拈花ヽ惹草 提交于 2019-12-04 03:56:11
#knn算法学习笔记 1.定义 邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是 数据挖掘 分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。俗话说:近朱者赤近墨者黑。。 kNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。 用最近的邻居来代表自己,若你的邻居很脑残,那不好意思,the same to you 图片来自 https://baike.baidu.com/item/%E9%82%BB%E8%BF%91%E7%AE%97%E6%B3%95/1151153?fr=aladdin K值若较小,这里取内圈,红色三角占2/3,则绿色的未知物被判断为红色三角; K值若较大,这里取外圈,蓝色方块占3/5,则绿色未知物被判断为蓝色方块。 2.适用范围 一般来说这算法适用于比较小的数据集进行分类或者回归在,适用于小样本 3.基本要素 3.1 k选择问题 k值的选择会对结果有很大的影响。如果选择较小的k值,相当于用较小的邻域中训练实例进行预测,近似误差会变小,只有与输入实例较近的训练实例才会对预测结果起作用。k值较小意味着整体模型算法变得复杂了,容易发生过拟合。如果k值过大的话,相当于模型算法变得简单

kNN(上)

爷,独闯天下 提交于 2019-12-04 02:04:38
本篇文章是机器学习小组第一周kNN学习的总结,主要参考资料为: 机器学习的敲门砖:kNN算法(上) https://mp.weixin.qq.com/s?__biz=MzUyMjI4MzE0MQ==&mid=2247484679&idx=1&sn=aec5259ee503b9b127b79e2a9661205d&chksm=f9cf74edceb8fdfb43e5dcd3279347e99fa6fb7523de2aaf301418eda6b4b14e17c24d671cd8&scene=21#wechat_redirect 机器学习的敲门砖:kNN算法(中) https://mp.weixin.qq.com/s/vvCM0vWH5kmRfrRWxqXT8Q kNN算法的应用场景 kNN:k-NearestNeighbor,即寻找离样本最近的k个邻居。寻找这k个邻居的目的,是认为可以通过最相近的k个邻居中出现次数最多的标签来作为样本自身的标签。因为k个邻居本身存在多个分类,所以kNN不仅是一个分类算法,而且是一个天生的多分类算法。 kNN算法的原理 kNN算法的原理如下: kNN算法的使用(sklearn) 1 from sklearn import datasets 2 from sklearn.model_selection import train_test_split,

理解KNN算法中的k值

痞子三分冷 提交于 2019-12-04 01:51:02
为方便自己收藏学习,转载博文from:https://blog.csdn.net/llhwx/article/details/102652798 knn算法是指对预测集中的每一个图像与训练集中的所有图像比较,寻找出在训练集中与这一张预测图片最接近的图像,将该图像的标签给这张预测图片。实施的方法为图像矩阵相减并取绝对值,然后将得到的像素矩阵各元素相加,找到结果中的最小值,我们说产生这个最小值的图像与该预测图像最接近。 上面所说的是knn算法中当k值等于1的一种情况,这种让一个最小值来决定预测图像标签的方法有些绝对化,容易在某种巧合下产生错误的结果。比如:两张背景是一种颜色的不同物体,他们相减往往会产生一个比较小的值。 k = 1时对应的模型如上图所示:左图中的点代表训练集,他们的颜色代表为某一类,点周围的空白可以看作为预测集。现要按照距离的大小将整个图像分为不同颜色的区域。当k为1时分类结果如右图所示,可以看到图中紫色区域中包含了一小点绿色区域,按照经验来看,在大量紫色点的附近出现的最有可能的是紫色区域,但由于这个绿点(实际上称该点为噪声)的存在,使得结果出现了误差。就像下面这张图,让我们来预测一下虚线点最有可能是什么颜色。当然是红色。回到knn算法的思想,当我们仅用一个最小值来判断该点的颜色,那么就有可能出现判断错误的情况。 那么就可以将knn算法中的k值取其他值,当k等于5的时候

python实战之泰坦尼克号获救问题

穿精又带淫゛_ 提交于 2019-12-04 00:38:23
数据来源: Kaggle数据集 → 共有1309名乘客数据,其中891是已知存活情况(train.csv),剩下418则是需要进行分析预测的(test.csv) 字段意义: PassengerId: 乘客编号 Survived :存活情况(存活:1 ; 死亡:0) Pclass : 客舱等级 Name : 乘客姓名 Sex : 性别 Age : 年龄 SibSp : 同乘的兄弟姐妹/配偶数 Parch : 同乘的父母/小孩数 Ticket : 船票编号 Fare : 船票价格 Cabin :客舱号 Embarked : 登船港口 目的:通过已知获救数据,预测乘客生存情况研究问题: 1、整体来看,存活比例如何? 要求:① 读取已知生存数据train.csv② 查看已知存活数据中,存活比例如何? 提示:① 注意过程中筛选掉缺失值之后再分析② 这里用seaborn制图辅助研究 2、结合性别和年龄数据,分析幸存下来的人是哪些人? 要求:① 年龄数据的分布情况② 男性和女性存活情况③ 老人和小孩存活情况 3、结合 SibSp、Parch字段,研究亲人多少与存活的关系 要求:① 有无兄弟姐妹/父母子女和存活与否的关系② 亲戚多少与存活与否的关系 4、结合票的费用情况,研究票价和存活与否的关系 要求:① 票价分布和存活与否的关系② 比较研究生还者和未生还者的票价情况 5、利用KNN分类模型

泰坦尼克号获救问题分析和预测-Python项目实战记录

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-04 00:29:40
本文是作者( 含笑半步癫 )在学习Python网课时,将项目实战“泰坦尼克号获救问题分析”进行总结如下(含部分代码): 题目描述 数据来源:Kaggle数据集 → 共有1309名乘客数据,其中891是已知存活情况(train.csv),剩下418则是需要进行分析预测的(test.csv) 字段意义: PassengerId: 乘客编号 Survived :存活情况(存活:1 ; 死亡:0) Pclass : 客舱等级 Name : 乘客姓名 Sex : 性别 Age : 年龄 SibSp : 同乘的兄弟姐妹/配偶数 Parch : 同乘的父母/小孩数 Ticket : 船票编号 Fare : 船票价格 Cabin :客舱号 Embarked : 登船港口 目的:通过已知获救数据,预测乘客生存情况 研究问题1 1、整体来看,存活比例如何? 1.1 分析思路:查看数据集,Survived为存活情况(存活:1 ; 死亡:0)。通过seaborn绘制一个饼图,Survived=1的数据占比即为存活比例。 1.2 相关代码块: # 读取数据(训练数据train.csv;预测数据test.csv) os.chdir('D:\\学习\\数据分析\\网易课堂\\CLASSDATA_ch06数据分析项目实战\\练习09_泰坦尼克号获救问题\\') train_data=pd.read_csv(

Caret and KNN in R: predict function gives error

▼魔方 西西 提交于 2019-12-03 23:01:48
问题 I try to predict with a simplified KNN model using the caret package in R. It always gives the same error, even in the very simple reproducible example here: library(caret) set.seed(1) #generate training dataset "a" n = 10000 a = matrix(rnorm(n*8,sd=1000000),nrow = n) y = round(runif(n)) a = cbind(y,a) a = as.data.frame(a) a[,1] = as.factor(a[,1]) colnames(a) = c("y",paste0("V",1:8)) #estimate simple KNN model ctrl <- trainControl(method="none",repeats = 1) knnFit <- train(y ~ ., data = a,