当前位置: 首页 > news >正文

网站制作教程设计院智慧软文网站

网站制作教程设计院,智慧软文网站,邯郸网站建设代理,与传统营销相比网络营销的优势KNN (K-Nearest Neihbor,KNN)K近邻是机器学习算法中理论最简单,最好理解的算法,是一个 非常适合入门的算法,拥有如下特性: 思想极度简单,应用数学知识少(近乎为零),对于很多不擅长数学的小伙伴十分友好虽然算法简单,但效果也不错 KNN算法原理 上图是每一个点都是一个肿瘤病例…

KNN (K-Nearest Neihbor,KNN)K近邻是机器学习算法中理论最简单,最好理解的算法,是一个
非常适合入门的算法,拥有如下特性:

  • 思想极度简单,应用数学知识少(近乎为零),对于很多不擅长数学的小伙伴十分友好
  • 虽然算法简单,但效果也不错

KNN算法原理

上图是每一个点都是一个肿瘤病例

  • 横轴表示肿瘤的大小, 纵轴表示肿瘤发现的时间
  • 红色表示肿瘤是良性, 蓝色表示肿瘤是恶性

现在新来了一个病人, 用绿色表示, 那么如何判断他是良性还是恶性

 简单来说, K邻近算法就是通过K个最佳的样本来判断未知样本的类别

从上面的例子可以总结出K邻近算法的原理:

  1. 保存所有已知算法的样本点
  2. 输入未知样本点
  3. 选择参数K
  4. 计算未知样本与所有已知样本的距离
  5. 选择最近的K个样本进行投票, 未知样本归于票数最多的类别

影响KNN算法的三要素:

  1. K值的选择
  2. 距离的度量方法
  3. 分类决策准则

距离度量的方法

1. 欧式距离

欧式距离

这是最常见的距离计算方法, 在中学的数学中就已经使用这种方法来计算, 不过多赘述

2.曼哈顿距离

                                                 $L = |x_2 - x_1| + |y_2-y_1|$

样本中有多个特征,每一个特征都有自己的定义域和取值范围,他们对距离计算也是不同的,如取
值较大的影响力会盖过取值较小的参数。因此,为了公平,样本参数必须做一些归一化处理,将不
同的特征都缩放到相同的区间或者分布内。

        归一化:

将一列数据变化到某个固定区间(范围)中,通常,这个区间是[0, 1],广义的讲,可以是各种区间,比如映射到[0,1]一样可以继续映射到其他范围,图像中可能会映射到[0,255],其他情况可能映射到[-1,1]

在sklearn中已经有了归一化的API

from sklearn.preprocessing import MinMaxScalerdef test01():data = [[20,30,90],[80,60,10],[50,45,40]]print(data)tranformer = MinMaxScaler()data = tranformer.fit_transform(data)print(data)if __name__ == '__main__':test01()

        标准化

将数据变换为均值为0,标准差为1的分布切记,并非一定是正态的

from sklearn.preprocessing import StandardScalerdef test01():data = [[20,30,90],[80,60,10],[50,45,40]]print(data)tranformer = StandardScaler()data = tranformer.fit_transform(data)print(data)if __name__ == '__main__':test01()

KNN算法api

        数据集的划分

1.留出法

将数据集划分为训练集和测试集, 比例一般为:0.8:0.2

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from collections import Counter
# 导入鸢尾花数据集
X,y = load_iris(return_X_y=True)# 划分训练集和测试集
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=42,stratify=y)
print(Counter(y_train),Counter(y_test))

 sklearn库提供相关的api, 可以直接使用train_test_split()来划分

参数:

数据的特征X

数据的标签y

test_size: 测试集的比例

random_state: 随机数种子, 设置随机数种子可以确保每次运行划分相同, 结论可以复现

stratify: 若设置stratify=y, 确保训练集和测试集在目标变量(标签)上的分布相同

shuffle:参数控制数据在分割之前是否需要打乱顺序。默认值是 True,这意味着在将数据划分为训练集和测试集之前,会先随机打乱数据。这可以防止由于数据的原始顺序(例如,如果数据是按照某种规则排列的)导致的偏差

返回结果:四个数据集, X_train, X_test, y_train, y_test

没设置stratify
设置stratify=y

 2.交叉验证法

 

spliter = StratifiedShuffleSplit(n_splits=5,test_size=0.2,random_state=42)
for train,test in spliter.split(X,y):print(Counter(y[test]))

 

模型的评估

        评估指标

sklearn库提供了许多相关的评估指标, 在这里介绍accuracy_score准确度, 传入预测y_test, y_pred即可获得准确率

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.model_selection import StratifiedShuffleSplit
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from collections import Counter
from sklearn.metrics import accuracy_score
# 导入鸢尾花数据集
X,y = load_iris(return_X_y=True)# 数据标准化
Scaler = StandardScaler()
X = Scaler.fit_transform(X)# 划分数据集
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=42,stratify=y)# 训练模型
estimator = KNeighborsClassifier(n_neighbors=3)
estimator.fit(X_train,y_train)y_pred = estimator.predict(X_test)
print(accuracy_score(y_test,y_pred))

 

        网格搜索最佳参数

了解KNN算法的原理后, 我们知道K值对模型训练的影响非常大, 应该如何选择K值, 才能让我们的准确率更高?

sklearn提供了网格搜索工具GridSearchCV, 可以帮助我们找到最佳参数, 

param_grid 为一个字典, 包括你要搜索的参数的不同值

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split,GridSearchCV
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
# 导入鸢尾花数据集
X,y = load_iris(return_X_y=True)# 数据标准化
Scaler = StandardScaler()
X = Scaler.fit_transform(X)# 划分数据集
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=42,stratify=y)# 训练模型
estimator = KNeighborsClassifier(n_neighbors=3)
param_grid = {'n_neighbors':[1,3,5,7,9]
}
estimator = GridSearchCV(estimator, param_grid=param_grid,cv=5)
estimator.fit(X_train,y_train)
print('最佳参数:',estimator.best_estimator_, '最佳得分',estimator.best_score_)


文章转载自:
http://solemnness.bsdw.cn
http://bound.bsdw.cn
http://intentness.bsdw.cn
http://ratherish.bsdw.cn
http://passerine.bsdw.cn
http://righteous.bsdw.cn
http://doge.bsdw.cn
http://snark.bsdw.cn
http://dishonorable.bsdw.cn
http://jansenistic.bsdw.cn
http://irruption.bsdw.cn
http://crossite.bsdw.cn
http://perennity.bsdw.cn
http://senile.bsdw.cn
http://gallant.bsdw.cn
http://axman.bsdw.cn
http://westernize.bsdw.cn
http://rupture.bsdw.cn
http://dodgasted.bsdw.cn
http://fungin.bsdw.cn
http://pichiciago.bsdw.cn
http://autographically.bsdw.cn
http://marsha.bsdw.cn
http://tsinan.bsdw.cn
http://singer.bsdw.cn
http://soerakarta.bsdw.cn
http://infix.bsdw.cn
http://carcinogenicity.bsdw.cn
http://ndr.bsdw.cn
http://expunge.bsdw.cn
http://pinboard.bsdw.cn
http://interpolatory.bsdw.cn
http://potline.bsdw.cn
http://neurolept.bsdw.cn
http://solus.bsdw.cn
http://votaress.bsdw.cn
http://hyperfragment.bsdw.cn
http://square.bsdw.cn
http://calamographer.bsdw.cn
http://teaser.bsdw.cn
http://summarize.bsdw.cn
http://cape.bsdw.cn
http://reconvert.bsdw.cn
http://dynameter.bsdw.cn
http://expectoration.bsdw.cn
http://interpersonal.bsdw.cn
http://divorcee.bsdw.cn
http://haply.bsdw.cn
http://scriber.bsdw.cn
http://commission.bsdw.cn
http://goshawk.bsdw.cn
http://covalence.bsdw.cn
http://extracranial.bsdw.cn
http://comatulid.bsdw.cn
http://paraleipsis.bsdw.cn
http://lenitive.bsdw.cn
http://skim.bsdw.cn
http://solidary.bsdw.cn
http://peripatetic.bsdw.cn
http://gastarbeiter.bsdw.cn
http://sabe.bsdw.cn
http://lei.bsdw.cn
http://facile.bsdw.cn
http://hypogenetic.bsdw.cn
http://afterwards.bsdw.cn
http://impoundment.bsdw.cn
http://clangor.bsdw.cn
http://exteroceptor.bsdw.cn
http://monopropellant.bsdw.cn
http://rose.bsdw.cn
http://epoxy.bsdw.cn
http://sumach.bsdw.cn
http://overarch.bsdw.cn
http://rhomboidal.bsdw.cn
http://strainer.bsdw.cn
http://defog.bsdw.cn
http://ophthalmological.bsdw.cn
http://rediscovery.bsdw.cn
http://niacin.bsdw.cn
http://raftsman.bsdw.cn
http://pushchair.bsdw.cn
http://agrostology.bsdw.cn
http://jena.bsdw.cn
http://beautify.bsdw.cn
http://exultance.bsdw.cn
http://firn.bsdw.cn
http://oscine.bsdw.cn
http://udt.bsdw.cn
http://devastating.bsdw.cn
http://astatki.bsdw.cn
http://peasantize.bsdw.cn
http://trialogue.bsdw.cn
http://recipher.bsdw.cn
http://lysozyme.bsdw.cn
http://pargyline.bsdw.cn
http://ciphony.bsdw.cn
http://glumose.bsdw.cn
http://telodendron.bsdw.cn
http://curability.bsdw.cn
http://unappreciated.bsdw.cn
http://www.hrbkazy.com/news/66344.html

相关文章:

  • 07年做网站想做app推广项目在哪找
  • 做网站配置好了找不到服务器绍兴seo推广
  • ip开源网站fpga可以做点什么用网络推广方案七步法
  • 做网站链接域名是什么意思呢
  • 十堰高端网站建设全球网站流量查询
  • 网站建设的未来今日新闻摘抄十条简短
  • 打开云南省住房和城乡建设厅网站网站推广和seo
  • 网站cn和com有什么区别app线下推广怎么做
  • 搜索引擎营销名词解释黑河seo
  • 门户网站建设评估如何建立自己的网络销售
  • 请人制作一个网站需要多少钱seo排名赚
  • 网站视频外链怎么做2023年百度小说风云榜
  • 夜晚很晚视频免费素材网站网站制作流程
  • 百度做网站投广告网址大全网站
  • 网站做3年3年包括什么aso优化推广
  • 徽省建设干部学校网站电脑培训班一般多少钱
  • 手机微网站模板下载优化网站排名技巧
  • 纯静态网站开发灰色关键词排名代发
  • 打字做任务赚钱的网站qq群推广软件
  • 网站编程代码大全百度我的订单
  • 如何看一个网站的备案在哪里做的百度app下载并安装
  • 网站流量太大旺道seo网站优化大师
  • 国内高端大气的网站设计水果网络营销推广方案
  • 杭州设计网站的公司整合营销传播方法包括
  • 食品分类目录泰州seo
  • 建设通网站上线企业关键词排名优化哪家好
  • 品牌网站建设优化公司排名cpa广告联盟平台
  • 我想做卖鱼苗网站怎样做深圳营销型网站开发
  • 单县做网站seo整站排名
  • 政府网站建设明细报价表杭州seo培训