- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
1) 实现过程 。
2) 距离的确定 。
该算法的「 距离 」在二维坐标轴就表示两点之间的距离,计算距离的公式有很多.
我们常用欧拉公式,即“ 欧氏距离 ”。(x 1 、x 2 、x 3 为特征) $$ \sqrt{(x_1 - y_1)^2 + (x_2 - y_2)^2 + (x_3 - y_3)^2+...+(x_n - y_n)^2} =\sqrt{ \sum_{i=1} {n}{(x_i-y_i) 2}} $$ 。
算法 超参数 是 k(人为设置的参数为超参数),k 可以理解为标记数据周围几个数作为参考对象,参数选择需要根据数据来决定。(通过学习曲线找最优的k) 。
变种一 :默认情况下,在计算距离时,权重都是相同的,但实际上我们可以针对不同的邻居指定不同的距离权重,比如距离越近权重越高.
变种二 :使用一定半径内的点取代距离最近的 k 个点 。
# 红酒参数
rowdata = {'颜色深度':[14.13,13.2,13.16,14.27,13.24,12.07,12.43,11.79,12.37,12.04],
'酒精浓度': [5.64,4.28,5.68,4.80,4.22,2.76,3.94,3.1,2.12,2.6],
'品种': [0,0,0,0,0,1,1,1,1,1]}
# 0 代表 “黑皮诺”,1 代表 “赤霞珠”
wine_data = pd.DataFrame(rowdata)
def KNN(x): #x是输入的点 返回类别
# 1.把10个训练数据提取到data中
data = wine_data.iloc[:,:2].values #将前两列提取出来----data
# 2. 新数据点与10个一维数组的欧式距离
# 数据点第一个特征与10个点的欧式距离
a = ((x-data) ** 2)[:,0] #第一列抽取出来
# 数据点第二个特征与10个点的欧式距离
b = ((x-data) ** 2)[:,1] #第二列抽取出来
# 得到数据点与10个点的欧氏距离
Distance = np.sqrt(a+b)
np.sort(Distance)
# 3.排序找出最近的K个点 K=3
K3 = np.argsort(Distance)[:3] #得到开始表的索引值 6 1 4
# 4.判断类别
y = wine_data.品种
# 根据频数统计判断属于哪一类
return pd.Series([y[i] for i in K3]).value_counts().idxmax()
KNN([[12.3,4.1]])
# OUT:0
scikit-learn,简称 sklearn, 支持了包括 分类 、 回归 、 降维 和 聚类 四大机器学习算法,以及 特征提取 、 数据预处理 和 模型评估 三大模块.
主要设计原则: 1) 一致性 。
所有对象共享一个简单一致的界面(接口).
2)监控 。
3)防止类扩散 。
4) 合成 。
5)合理默认值 。
6)SKlearn KNN 实现 。
class sklearn.neighbors.KNeighborsClassifier(n_neighbors=5, *, weights='uniform', algorithm='auto', leaf_size=30, p=2, metric='minkowski', metric_params=None, n_jobs=None)[source]
参数名 | 形式 | 意义 |
---|---|---|
n_neighbors | int, default=5 | 近邻 个数 |
weights | {‘uniform’, ‘distance’}, callable or None, default=’uniform’ | • 'uniform':默认参数,不管远近权重都一样,就是最普通的 KNN 算法的形式。 • 'distance':权重和距离成反比,距离预测目标越近具有越高的权重。 • 自定义函数:自定义一个函数,根据输入的坐标值返回对应的权重,达到自定义权重的目的。 |
algorithm | {‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’}, default=’auto’ | •'brute' :蛮力实现 • 'kd_tree':KD 树实现 KNN • 'ball_tree':球树实现 KNN • 'auto': 默认参数,自动选择合适的方法构建模型 |
leaf_size | int, default=30 | 当使用KD树或球树,它就是是停止建子树的叶子节点数量的阈值 |
p | int, default=2 | p=1为曼哈顿距离 p=2为欧式距离 |
metric | str or callable, default=’minkowski‘ | • 'euclidean' :欧式距离 • 'manhattan':曼哈顿距离 • 'chebyshev':切比雪夫距离 • 'minkowski': 闵可夫斯基距离,默认参数 |
n_jobs | int, default=None | 指定多少个CPU进行运算,-1表示全部都算 |
from sklearn.neighbors import KNeighborsClassifier
clf = KNeighborsClassifier(n_neighbors=3)
clf = clf.fit(wine_data.iloc[:,0:2].values,wine_data.iloc[:,-1].values)
#测试单个点
clf.predict([[12.3,4.1]])
# OUT: array([0]) 属于“黑皮诺”红酒
最后此篇关于机器学习-KNN算法的文章就讲到这里了,如果你想了解更多关于机器学习-KNN算法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
library(ISLR) standardized.X=scale(Caravan [,-86]) test =1:1000 train.X=standardized.X[-test ,] test
这可能是一个愚蠢的问题,但我只是想知道在 scikit.ml 中实现的 ML-KNN 与 scikit-learn 的 KNeighborsClassifier 之间的区别是什么。根据sklearn'
我担心我的预测与测试的准确性,这完全有意义。 X_train , X_test, y_train ,y_test =train_test_split(iris_dataset['data'], iri
我已经开始在 python tensorflow 库上使用 K-Nearest-Neighbors 方法开发一个机器学习项目。我没有使用tensorflow工具的经验,所以我在github上找到了一些
大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 KNN算法的工作原理简单直观,易于理解和实现,这使得它在各种应用场景
我试图在 R 中使用 knn(使用了几个包( knnflex , class ))来预测基于 8 个变量的违约概率。数据集大约有 100k 行 8 列,但我的机器似乎很难处理 10k 行的样本。在数据
我有一个 60.000 obs/40 变量数据集,我在其中使用了 Clara,主要是由于内存限制。 library(cluster) library(dplyr) mutate(kddne
我尝试运行这条线: knn(mydades.training[,-7],mydades.test[,-7],mydades.training[,7],k=5) 但我总是收到这个错误: Error in
我正在尝试使用 python 实现 k-近邻算法。我最终得到了以下代码。但是,我正在努力寻找最近邻居项目的索引。以下函数将返回距离矩阵。但是,我需要在features_train(算法的输入矩阵)中获
我正在使用Kobe Bryant Dataset 。我希望用 KnnRegressor 预测 shot_made_flag。 我使用game_date来提取year和month特征: # covert
在 kNN classifier 的文档中,有一个方法kneighbors ,返回 k 个最近邻居。我感兴趣的是如何优雅地返回此类分类器中的 k 个最远邻居? 最佳答案 不,没有这样的能力。 您需要记
我想优化 KNN。关于SVM、RF和XGboost的内容有很多;但对于 KNN 来说很少。 据我所知,邻居的数量是一个需要调整的参数。 但是还有哪些参数需要测试呢?有什么好的文章吗? 谢谢 最佳答案
我正在尝试使用具有两列的数据集进行词袋问题 - 摘要和解决方案。我正在使用 KNN。训练数据集有 91 列,测试数据集有 15 列。 为了生成向量,我使用以下代码。 vectorizer = Coun
我了解 k 最近邻 (KNN) 的工作原理,但我不熟悉“软投票”一词。与 KNN 相关的软投票是什么?它与标准 KNN 投票相比如何工作? 比较两种投票方案的简单示例会很有用,并且指向 Matlab
我正在尝试将 KNN 应用到 tips 数据集 并将对象映射如下: f.Male=df.Gender.map({'Female':0,'Male':1}) df.Smokes = df.Smoker.
在下面的代码(最后一行)中,根据文档使用了 X_test 和 y_test: Returns the mean accuracy on the given test data and label 问题
我有约 65 个特征、450k 个观察值和不平衡的分类响应变量 Y(约 5% 真实,2 个状态)的 df。这已通过 train_test_split 分为 {Xtrain, ytrain} (10%)
为什么在 KNN 中需要规范化?我知道这个过程标准化了所有特征对结果的影响,但是在标准化之前到特定点 V 的“K”最近点将与到该特定点的“K”最近点完全相同归一化后的 V。那么归一化对欧氏距离有何影响
我目前正在为我的人工智能考试做一个机器学习项目。目标是使用 WEKA 正确选择两种分类算法进行比较,请记住,这两种算法必须有足够的不同才能进行比较。此外,算法必须同时处理标称数据和数字数据(我想这是进
进行数据挖掘时,什么时候应该选择其中一种算法而不是另一种?有具体原因吗?另外,其中哪一个是最有效的? 我将给出一个表格作为示例。 最佳答案 一种选择方法是尝试所有这些并选择最好的。 如果我要尝试构建数
我是一名优秀的程序员,十分优秀!