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

荆门做微信公众号的网站做网站赚钱但又不想开公司

荆门做微信公众号的网站,做网站赚钱但又不想开公司,网页设计网站作业,开源程序做网站任务KNN工作原理 “近朱者赤#xff0c;近墨者黑”可以说是KNN的工作原理。整个计算过程分为三步#xff1a;1:计算待分类物体与其他物体之间的距离#xff1b;2:统计距离最近的K个邻居#xff1b;3:对于K个最近的邻居#xff0c;它们属于哪个分类最多#xff0c;待分类物体就…KNN工作原理 “近朱者赤近墨者黑”可以说是KNN的工作原理。整个计算过程分为三步1:计算待分类物体与其他物体之间的距离2:统计距离最近的K个邻居3:对于K个最近的邻居它们属于哪个分类最多待分类物体就属于哪一类。K-最近邻算法K-Nearest Neighbor, KNN中的K值是一个重要的超参数不同的K值会影响模型的性能。常见的选择K值的方法包括以下几种 网格搜索Grid Search指定一组候选的K值对每个K值进行交叉验证选取平均交叉验证误差最小的K值作为最佳K值。缺点是需要进行大量的计算时间开销较大。K折交叉验证K-fold Cross Validation将训练集分成K个子集每次使用其中K-1个子集作为训练集剩下的1个子集作为验证集重复K次。对于每个K值计算K次的平均交叉验证误差选取平均交叉验证误差最小的K值作为最佳K值。这种方法的优点是可以减少模型的方差但是计算时间仍然比较长。自助法Bootstrap从训练集中有放回地随机抽取样本构建新的训练集。对于每个K值计算自助样本的平均误差选取平均误差最小的K值作为最佳K值。这种方法的优点是计算速度快但是对于小数据集来说可能会出现较大的方差。 网格搜索(Grid Search) 接下来先看看如何通过网格搜索(Grid Search)获取K值。GridSearchCV是Scikit-Learn库中用于网格搜索的函数其主要作用是在指定的超参数范围内进行穷举搜索并使用交叉验证来评估每种超参数组合的性能以找到最优的超参数组合。该函数包含多个参数具体参数以及每个参数含义如下所示 estimator通常是一个Scikit-Learn模型对象例如KNeighborsClassifier()、RandomForestClassifier()等用于表示要使用的模型。param_grid需要遍历的超参数空间是一个字典其中每个键是一个超参数名称对应的值是超参数的取值列表。例如对于KNN模型可以指定param_grid {n_neighbors: [3, 5, 7, 9], weights: [uniform, distance], p: [1, 2]}表示K值在3, 5, 7和9中选择权重方式为uniform和distance距离度量方式为曼哈顿距离和欧几里得距离。当然除了这两种距离计算方式还可以选择闵可夫斯基距离切比雪夫距离余弦距离。 scoring评价指标用于评估模型性能的指标通常是一个字符串或可调用的函数例如accuracy、f1、precision、recall等。如果需要评估多个指标则可以将评价指标指定为列表或元组。cv交叉验证的折数通常为整数或KFold对象。例如cv 5表示将数据集分成5个折其中4个用于训练1个用于验证。n_jobs并行处理的数量通常为整数指定在训练期间使用的CPU数量。如果设置为-1则使用所有可用的CPU。verbose输出详细程度通常为整数。0表示不输出任何消息1表示输出少量消息大于1表示输出更多消息。return_train_score是否返回每个超参数组合在训练集上的性能指标。默认情况下它为False表示只返回每个超参数组合在验证集上的性 下面是使用GridSearchCV执行分类任务的demo代码,运行demo代码会显示执行的交叉参数组合且给出最优的参数组合值。 from sklearn.datasets import load_iris from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import GridSearchCV, train_test_split # 加载数据集 iris load_iris() X, y iris.data, iris.target # 划分数据集 X_train, X_test, y_train, y_test train_test_split(X,y,test_size0.3,random_state42) # 定义待调优的超参数及其取值范围 param_grid {n_neighbors: [3, 5, 7, 9],weights: [uniform, distance],p: [1, 2] } # 构建KNN模型 knn KNeighborsClassifier() # 使用网格搜索进行超参数调优 grid_search GridSearchCV(knn, param_grid, cv5, verbose2) grid_search.fit(X_train, y_train) # 输出最优超参数组合及其在验证集上的性能指标 print(Best parameters: , grid_search.best_params_) print(Best score: , grid_search.best_score_) # 在测试集上进行评估 score grid_search.score(X_test, y_test) print(Test score: , score) K折交叉验证K-fold Cross Validation KFold函数是Scikit-Learn库中用于生成K折交叉验证分割的函数。该函数的主要参数及含义如下 n_splits交叉验证折数默认值为5。shuffle是否对样本进行随机排序默认值为False。random_state随机种子数默认为None即随机种子为当前时间戳。indices指定分割的索引数组可以用于固定分割以进行可重复的交叉验证。 下面是使用KFold函数采用交叉验证进行模型评估的demo代码。 from sklearn.datasets import load_iris from sklearn.model_selection import KFold, cross_val_score from sklearn.neighbors import KNeighborsClassifier # 加载数据集 iris load_iris() X iris.data y iris.target # 定义模型和超参数 knn KNeighborsClassifier(n_neighbors5, weightsuniform, p2) # 定义交叉验证的折数 kfold KFold(n_splits10, shuffleTrue, random_state42) # 使用交叉验证进行模型评估 scores cross_val_score(knn, X, y, cvkfold) # 输出平均分数和标准差 print(Accuracy: %0.2f (/- %0.2f) % (scores.mean(), scores.std() * 2)) 各类算法准确率对比 前面介绍了KNN算法、SVM 算法、多项式朴素贝叶斯算法等下面的demo例子使用手写数字作为训练数据观察每种算法的精确度具体code如下所示。其中sklearn.datasets是Scikit-Learn库中用于加载各种标准数据集的模块之一。load_digits函数可以加载一个手写数字数据集该数据集包含1797个8x8像素的手写数字图像。每个图像都有相应的标签表示图像中的数字。该数据集可以用于分类和降维等任务。 # 手写数字分类 from sklearn.model_selection import train_test_split from sklearn import preprocessing from sklearn.metrics import accuracy_score from sklearn.datasets import load_digits from sklearn.neighbors import KNeighborsClassifier from sklearn.svm import SVC from sklearn.naive_bayes import MultinomialNB from sklearn.tree import DecisionTreeClassifier import matplotlib.pyplot as plt# 加载数据 digits load_digits() data digits.data # 数据探索 print(data.shape) # 查看第一幅图像 print(digits.images[0]) # 第一幅图像代表的数字含义 print(digits.target[0]) # 将第一幅图像显示出来 plt.gray() plt.imshow(digits.images[0]) plt.show()# 分割数据将25%的数据作为测试集其余作为训练集 train_x, test_x, train_y, test_y train_test_split(data,digits.target,test_size0.25,random_state33)# 采用Z-Score规范化 ss preprocessing.StandardScaler() train_ss_x ss.fit_transform(train_x) test_ss_x ss.transform(test_x)# 创建KNN分类器 knn KNeighborsClassifier() knn.fit(train_ss_x, train_y) predict_y knn.predict(test_ss_x) print(KNN准确率: %.4lf % accuracy_score(test_y, predict_y))# 创建SVM分类器 svm SVC() svm.fit(train_ss_x, train_y) predict_y svm.predict(test_ss_x) print(SVM准确率: %0.4lf % accuracy_score(test_y, predict_y))# 采用Min-Max规范化 mm preprocessing.MinMaxScaler() train_mm_x mm.fit_transform(train_x) test_mm_x mm.transform(test_x)# 创建Naive Bayes分类器 mnb MultinomialNB() mnb.fit(train_mm_x, train_y) predict_y mnb.predict(test_mm_x) print(多项式朴素贝叶斯准确率: %.4lf % accuracy_score(test_y, predict_y))# 创建CART决策树分类器 dtc DecisionTreeClassifier() dtc.fit(train_mm_x, train_y) predict_y dtc.predict(test_mm_x) print(CART决策树准确率: %.4lf % accuracy_score(test_y, predict_y)) 实验结果如下图所示可以看到KNN和SVM准确率比较接近多项式朴素贝叶斯和CART决策树准确率稍低。
http://www.yutouwan.com/news/221103/

相关文章:

  • 如何破解网站后台密码企业网站设计的基本内容包括哪些
  • 网站设计成功案例银行营销案例100例
  • 第三方编辑网站怎么做wordpress 柚子皮下载
  • 青岛国家高新区建设局网站淄博建网站多少钱
  • 企业网站优化分为两个方向冠县建设局网站
  • 做外贸接私单的网站在线装修设计软件
  • 网站搜索显示图片生物科技公司网站建设
  • 护肤品网站模板正规推广平台有哪些
  • 房产建设网站设计汽车网站
  • 网站的优势与不足挂机软件定制
  • 会议专属网站平台建设报价单网页加载不出来怎么办
  • 制作网站的软件有哪些东莞企业网站找谁
  • 太原网站优化方案贵州seo学校
  • 柬埔寨做网站石家庄网站建设咨询
  • 网站建设工作总结范文电子商务网页设计试题
  • 企业3合1网站建设价格南昌seo排名外包
  • 网站建设公司投诉电话室内设计网站配色app
  • dw做的简单的个人网站网盘wordpress里修改网页
  • 蒙牛网站建设方案网站收录差
  • 世界上有一个wordpress站点专业网站开发哪里有
  • 邯郸网站seo国外做化工产品的网站
  • 网站流量提供商江苏网站seo平台
  • 做仓单的网站在线制作手机网站
  • 网站需要什么费用深圳市住房和建设局官网平台
  • 中国做贸易的网站做网站公司哪家好
  • 大气金融php网站源码cn域名注册网站
  • 精品网站建设比较好seo好wordpress主题
  • wp网站做企业站好不好oa网站开发
  • asp个人网站模板肇庆建站模板源码
  • 个人网站内容有哪些内容免费的推广软件下载