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

网站建设营销推广平台营销方式有哪些

网站建设营销推广,平台营销方式有哪些,网站安全评估怎么做,中国菲律宾高铁一.K-近邻(KNN) K-近邻#xff08;K-Nearest Neighbors, 简称 KNN#xff09;是一种基于实例的学习算法#xff0c;主要用于分类和回归问题。KNN 的工作原理直观且简单#xff0c;它基于相似性进行预测#xff0c;也就是说给定一个新的数据点#xff0c;KNN 算法会查找距…一.K-近邻(KNN) K-近邻K-Nearest Neighbors, 简称 KNN是一种基于实例的学习算法主要用于分类和回归问题。KNN 的工作原理直观且简单它基于相似性进行预测也就是说给定一个新的数据点KNN 算法会查找距离最近的 K 个数据点然后通过这些邻居来确定新数据点的类别在分类任务中或数值在回归任务中。 KNN 的工作原理 选择 K 值 K 是算法中的一个超参数表示在做出预测时要参考的最近邻居的数量。常见的取值是 3、5、7 等。K 值的选择直接影响模型性能。较小的 K 值使模型对局部噪声更敏感而较大的 K 值则会使模型过于平滑可能会错过局部模式。 计算距离 常用的距离度量方式是欧几里得距离也可以使用曼哈顿距离、闵可夫斯基距离等。欧几里得距离公式 d ∑ i 1 n ( x i − y i ) 2 d \sqrt{\sum_{i1}^{n} (x_i - y_i)^2} di1∑n​(xi​−yi​)2 ​ 其中x 和 y 是两个数据点 n 是特征的数量。 确定最近的 K 个邻居 根据计算得到的距离选出距离最近的 K 个点作为邻居。 分类对于分类问题 在分类任务中KNN 通过让 K 个最近邻居中的多数投票来决定新数据点的类别。例如如果在 K5 的情况下有 3 个邻居属于类别 A2 个属于类别 B那么预测结果将是类别 A。 回归对于回归问题 在回归任务中KNN 通过计算 K 个最近邻居的平均值或加权平均值来预测新数据点的数值。 KNN 算法的优缺点 优点 简单直观易于理解和实现。不需要训练阶段属于“懒惰学习”Lazy Learning即模型在训练阶段几乎不做计算预测时才进行计算。可用于多类别分类问题。 缺点 计算复杂度高由于在预测时需要计算每个数据点与新数据点的距离特别是在数据量大时计算开销较大。对数据的标度敏感特征的不同标度如度量单位不同可能会影响距离计算因此通常需要对数据进行标准化或归一化。对噪声敏感K 值较小时噪声点可能会对结果产生较大影响。 适用场景 小数据集由于 KNN 的计算开销较大它更适合于小型数据集。多类别分类KNN 可以很好地处理多类别分类问题。实例具有自然分组的情况如果数据本身具有天然的分组或簇结构KNN 能够很好地捕捉这些模式。 KNN 算法的代码示例分类任务 下面是一个简单的 KNN 分类任务代码示例 from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn.metrics import accuracy_score# 加载数据集 data load_iris() X data.data y data.target# 划分训练集和测试集 X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.3, random_state42)# 初始化KNN分类器设置K3 knn KNeighborsClassifier(n_neighbors3)# 训练模型 knn.fit(X_train, y_train)# 预测 y_pred knn.predict(X_test)# 计算准确率 accuracy accuracy_score(y_test, y_pred) print(f模型准确率: {accuracy})KNeighborsClassifier 参数详细解释 n_neighbors: 解释: 指定参与投票的最近邻居的数量即 K 值。类型: 整数。默认值: 5。作用: 决定了模型在分类时会考虑多少个最近邻居。例如n_neighbors3 表示将选择距离最近的 3 个样本进行投票。示例: n_neighbors3 weights: 解释: 决定如何计算每个邻居的投票权重。常见的选项有 uniform: 所有邻居的权重相等。distance: 根据距离进行加权距离越近的邻居权重越高。自定义函数可以传入一个用户定义的函数基于该函数计算权重。 类型: 字符串或可调用函数。默认值: uniform。作用: 影响分类决策。如果选择 distance那么更近的邻居对分类结果影响更大。示例: weightsdistance algorithm: 解释: 用于计算最近邻居的算法有以下几种选择 auto: 自动选择最合适的算法根据数据的特征选择。ball_tree: 使用 Ball Tree 数据结构适合高维数据。kd_tree: 使用 KD Tree 数据结构适合低维数据。brute: 直接进行暴力搜索计算所有点的距离。 类型: 字符串。默认值: auto。作用: 控制最近邻居搜索的速度和内存效率通常建议使用默认的 auto 选项。示例: algorithmkd_tree leaf_size: 解释: 指定 Ball Tree 或 KD Tree 的叶子节点大小影响树的构建和查询速度。较小的叶子节点通常会带来更快的查询速度但会消耗更多的内存。类型: 整数。默认值: 30。作用: 在使用 ball_tree 或 kd_tree 算法时可以调整该值以优化查询性能。示例: leaf_size20 p: 解释: 当使用 minkowski 距离度量时定义了距离公式中的幂指数 当 p1 时使用曼哈顿距离L1。当 p2 时使用欧几里得距离L2。 类型: 整数。默认值: 2。作用: 控制距离的计算方式可以根据数据特性调整该参数。示例: p1使用曼哈顿距离 metric: 解释: 指定距离度量的方式。常用选项有 minkowski: 闵可夫斯基距离是欧几里得距离和曼哈顿距离的泛化形式。euclidean: 欧几里得距离等同于 minkowski 距离与 p2 的组合。manhattan: 曼哈顿距离等同于 minkowski 距离与 p1 的组合。其他度量方法如 chebyshev 或自定义距离函数。 类型: 字符串或可调用函数。默认值: minkowski。作用: 控制如何计算样本之间的距离影响最近邻居的选择。示例: metriceuclidean metric_params: 解释: 距离度量函数的附加参数可选。如果使用自定义的距离函数可以通过这个参数传递额外信息。类型: 字典或 None。默认值: None。作用: 用于在自定义度量函数时提供额外的控制参数。示例: metric_params{w: [1, 2, 3]}示例自定义权重 n_jobs: 解释: 用于并行处理最近邻居搜索的线程数量。如果设置为 -1则使用所有可用的 CPU 核心进行计算。类型: 整数。默认值: None使用单个 CPU 核心。作用: 在大数据集上可以使用多线程加速计算缩短模型训练和预测时间。示例: n_jobs-1 二.K-折交叉验证 K-折交叉验证K-Fold Cross-Validation是一种常用的模型评估方法广泛用于机器学习中。它通过将数据集划分为 K 个相同大小的子集称为“折”来多次训练和测试模型从而获得更稳定和可靠的性能评估。 工作原理 划分数据集: 将整个数据集随机划分成 K 个等大小的子集。每个子集称为一个“折”。 训练和验证: 在每次迭代中选择其中一个折作为验证集剩余的 K-1 个折作为训练集。这个过程会重复 K 次每次选择不同的折作为验证集其余折作为训练集。 计算平均性能: 每次迭代都会得到一个模型的性能度量如准确率、F1 分数等。最终将 K 次迭代的性能结果进行平均得到整体的模型性能。 优点 稳定的性能评估: 通过多次迭代K-折交叉验证减小了模型评估中的随机性得到的结果更具稳定性。充分利用数据: 每一个样本都在不同的折中被用作训练和验证集避免了数据浪费。 参数选择 K 的取值: K 通常取值为 5 或 10这两种配置在大多数应用中效果较好。较小的 K 值如 2 或 3会导致较大的方差而较大的 K 值如 20则增加了计算开销。Shuffle可选: 在划分数据集之前可以选择对数据进行洗牌shuffle以确保每个折的样本分布更随机。 代码示例 下面是一个使用 scikit-learn 实现 K-折交叉验证的示例 from sklearn.model_selection import KFold from sklearn.datasets import load_iris from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score import numpy as np# 加载数据集 data load_iris() X data.data y data.target# 初始化K折交叉验证 kf KFold(n_splits5, shuffleTrue, random_state42)# 存储每折的准确率 accuracies []# 执行交叉验证 for train_index, test_index in kf.split(X):X_train, X_test X[train_index], X[test_index]y_train, y_test y[train_index], y[test_index]# 初始化并训练模型model LogisticRegression(max_iter200)model.fit(X_train, y_train)# 预测并计算准确率y_pred model.predict(X_test)accuracy accuracy_score(y_test, y_pred)accuracies.append(accuracy)# 输出结果 print(f每折的准确率: {accuracies}) print(f平均准确率: {np.mean(accuracies)})解释 KFold(n_splits5, shuffleTrue, random_state42): n_splits5 指定将数据集划分为 5 个折。shuffleTrue 表示在分割数据之前打乱数据以确保每个折的样本分布更加随机。random_state42 确保结果的可重复性。 kf.split(X): 生成训练集和测试集的索引。对于每一折都会用不同的折作为测试集。 三.分层k-折交叉验证(Stratified k-fold) StratifiedKFold 参数 n_splits: 解释: 指定将数据集划分成多少个折子集。类型: 整数。默认值: 5。示例: n_splits5 表示数据将被分成 5 个折。 shuffle: 解释: 指定是否在分割之前对数据进行洗牌打乱顺序。如果为 True则在分割数据之前会对数据进行打乱减少样本顺序对模型评估的影响。类型: 布尔值。默认值: False。示例: shuffleTrue 表示在分割之前打乱数据。 random_state: 解释: 用于控制随机数生成器的种子确保结果的可重复性。当 shuffleTrue 时使用。类型: 整数或 None。默认值: None。示例: random_state42 确保在每次运行时数据划分的一致性。 min_groups (仅在 scikit-learn 版本 0.24 及以后版本中可用): 解释: 用于指定每个折中样本的最小组数。主要用于对分层 K-折交叉验证的样本量进行控制确保每一折中至少有指定数量的组。类型: 整数。默认值: 1。示例: min_groups5 表示每个折中至少包含 5 个组。 使用示例 from sklearn.model_selection import StratifiedKFold from sklearn.datasets import load_iris from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score import numpy as np# 加载数据集 data load_iris() X data.data y data.target# 初始化分层K折交叉验证 skf StratifiedKFold(n_splits5, shuffleTrue, random_state42)# 存储每折的准确率 accuracies []# 执行交叉验证 for train_index, test_index in skf.split(X, y):X_train, X_test X[train_index], X[test_index]y_train, y_test y[train_index], y[test_index]# 初始化并训练模型model LogisticRegression(max_iter200)model.fit(X_train, y_train)# 预测并计算准确率y_pred model.predict(X_test)accuracy accuracy_score(y_test, y_pred)accuracies.append(accuracy)# 输出结果 print(f每折的准确率: {accuracies}) print(f平均准确率: {np.mean(accuracies)})四.模型与加载 在 scikit-learn 中保存和加载模型通常使用 joblib 或 pickle。joblib 是 scikit-learn 推荐的方式因为它在处理大型模型如包含大量数组的模型时效率更高。 1. 使用 joblib 保存和加载模型 模型保存 import joblib# 保存模型到文件 joblib.dump(knn, knn_model.pkl)模型加载 # 从文件加载模型 loaded_model joblib.load(knn_model.pkl)# 使用加载的模型进行预测 y_pred loaded_model.predict(X_test)2. 使用 pickle 保存和加载模型 模型保存 import pickle# 保存模型到文件 with open(knn_model.pkl, wb) as file:pickle.dump(knn, file)模型加载 # 从文件加载模型 with open(knn_model.pkl, rb) as file:loaded_model pickle.load(file)# 使用加载的模型进行预测 y_pred loaded_model.predict(X_test)总结 joblib 更适合包含大量数组的模型。pickle 适用于一般情况下的模型保存和加载。 五.超参数搜索 超参数搜索Hyperparameter Tuning是机器学习模型优化的重要步骤。不同的超参数配置会对模型的性能产生显著影响因此找到最优的超参数组合对于提升模型性能至关重要。 class sklearn.model_selection.GridSearchCV(estimator, param_grid)说明 同时进行交叉验证(CV)、和网格搜索(GridSearch)GridSearchCV实计上也是一个估计器(estimator)同时它有几个重要属性 best_params_ 最佳参数 best_score_ 在训练集中的准确率 best_estimator_ 最佳估计器 cv_results_ 交叉验证过程描述 best_index_最佳k在列表中的下标 完整示例代码 # best_params_ 最佳参数# best_score_ 在训练集中的准确率# best_estimator_ 最佳估计器# cv_results_ 交叉验证过程描述# best_index_最佳k在列表中的下标from sklearn.datasets import load_wine from sklearn.preprocessing import StandardScaler #标准化 from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier #KNN from sklearn.model_selection import GridSearchCV #超参数GridSearchCV from sklearn.decomposition import PCA #PCA降维 import pandas as pddata load_wine()#数据结构 x pd.DataFrame(data.data,columnsdata.feature_names)#标准化 tr StandardScaler() x2 tr.fit_transform(x)#数据结构 data2 pd.DataFrame(x2,columnsdata.feature_names)#PCA降维 transfer1 PCA(n_components0.5) data2 transfer1.fit_transform(data2)x_train,x_test,y_train,y_test train_test_split(data2,data.target,test_size0.2,random_state33)#创建模型 param {n_neighbors:[1,2,3,4,5,6,7,8,9,10]}#knn model KNeighborsClassifier() model GridSearchCV(model,param) model.fit(x_train,y_train)#预测 predict model.predict(x_test)score model.score(x_test,y_test)print(最佳模型:, model.best_estimator_) print(最佳参数:\n,model.best_params_) print(最佳k在列表中的下标:\n,model.best_index_) print(在训练集中的准确率:\n,model.best_score_) print(最佳估计器:\n,model.best_estimator_) print(交叉验证过程描述:\n,model.cv_results_) 总结 best_params_最优的超参数组合。best_score_在交叉验证中的最佳平均得分。best_estimator_使用最佳超参数组合训练的模型。cv_results_交叉验证过程中所有超参数组合的详细结果。best_index_最优超参数组合在结果中的索引。 这些属性为你提供了全面的模型优化信息帮助你选择和评估最佳模型。 实例葡萄酒–分层k-折交叉验证 from sklearn.datasets import load_wine from sklearn.neighbors import KNeighborsClassifier from sklearn.preprocessing import StandardScaler from sklearn.decomposition import PCA from sklearn.model_selection import StratifiedKFold import pandas as pd import numpy as np #加载数据 data load_wine()X pd.DataFrame(datadata.data,columnsdata.feature_names)#标准化 transfer StandardScaler() X1 transfer.fit_transform(X) X2 pd.DataFrame(X1,columnsdata.feature_names)#降维 transfer1 PCA(n_components0.5) data1 transfer1.fit_transform(X2)#分层k-折交叉验证Stratified k-fold skf StratifiedKFold(n_splits10,shuffleTrue,random_state2)#储存每折准确率 accuracies []for train_index,test_index in skf.split(data1,data.target):x_train,x_test data1[train_index],data1[test_index]y_train,y_test data.target[train_index],data.target[test_index]#K近邻模型estimator KNeighborsClassifier(n_neighbors9)estimator.fit(x_train,y_train)#预测y_predict estimator.predict(x_test)# print(y_predict:\n,y_test y_predict)#计算准确率score estimator.score(x_test,y_test)accuracies.append(score)print(accuracies) print(np.mean(accuracies))实例2 葡萄酒–K-折交叉验证(K-fold) from sklearn.datasets import load_wine from sklearn.preprocessing import StandardScaler from sklearn.model_selection import KFold from sklearn.neighbors import KNeighborsClassifier from sklearn.decomposition import PCA import pandas as pd import joblibdata load_wine()x pd.DataFrame(data.data,columnsdata.feature_names)#标准化 sta StandardScaler() x1 sta.fit_transform(x)x2 pd.DataFrame(x1,columnsdata.feature_names)#降维 tra PCA(n_components0.6)data1 tra.fit_transform(x2)kf KFold(n_splits10,shuffleTrue,random_state33) #标准化 accuracies [] best_accuracy 0 best_model Nonefor train_index,test_index in kf.split(data1,data.target):x_train,x_test data1[train_index],data1[test_index]y_train,y_test data.target[train_index],data.target[test_index]#创建模型model KNeighborsClassifier(n_neighbors7)model.fit(x_train,y_train)#预测predict model.predict(x_test)#准确率score model.score(x_test,y_test)accuracies.append(score)if score best_accuracy:best_accuracy scorebest_model model# print(模型评估率\n,accuracies) # print(平均得分\n,np.mean(accuracies))joblib.dump(best_model,./src/KNNmodel.pkl) # 输出结果 print(f每折的准确率: {accuracies}) print(f最高准确率: {best_accuracy})实例mytool 函数的功能 mytool 函数的功能是计算一个文本数据集中每个词的 TF-IDF 值。TF-IDF 是一种常用的文本挖掘方法用于衡量一个词在文档中的重要性。 import math from collections import defaultdict def calculate_tfidf(data): total_documents len(data) word_document_count defaultdict(int) # 统计每个词在文档中出现的次数 for document in data: unique_words set(document.split()) for word in unique_words: word_document_count[word] 1 tfidf_matrix [] # 计算每个文档的TF-IDF for document in data: word_list document.split() total_words len(word_list) tfidf_scores [] for word in set(word_list): TF word_list.count(word) / total_words IDF math.log(total_documents / (1 word_document_count[word])) tfidf_scores.append(TF * IDF) tfidf_matrix.append(tfidf_scores) return tfidf_matrix # 示例使用 data [世界 你好 我 是 华清 远见 的 张三,你好 世界 我 是 李四 世界,华清 远见 666 ] result calculate_tfidf(data) print(result)
http://www.dnsts.com.cn/news/225444.html

相关文章:

  • 东莞建设小学网站企业网络组建方案
  • 衡水建设网站首页做网站要用到数据库吗
  • 让人家做网站需要问什么问题wordpress加载html代码
  • 公司手机网站模板一 网站建设总体目标
  • 凯里网络公司建设网站网站建设技术手段
  • 网页设计制作网站素材资源网站快速优化排名
  • 广东省网站建设网站企业建站系统营销吧tt团队
  • 掀浪云网站建设网站建设技术分类
  • 网站开发服务税率是多少win8网站模版
  • 提升网站安全学校模板
  • 怎么才能自己做网站期货贵金属网站源码建设
  • 成都专门做网站的公司常用的北京文化馆设计公司
  • 哪个网站可以做链接我想找电商合作
  • 中企动力做的电梯网站专做外贸的网站
  • 张家界网站制作公司有了网站怎么写文章
  • 做百度糯米网站的团队wordpress 广告传媒
  • 厦门旅游网站企业网站的常见类型有什么
  • 站长之家 wordpresswordpress 轮播图代码
  • 建设网站需要虚拟空间嘛开源电商网站建设价格
  • 网站建设通知wordpress quora
  • 平面设计网站源码企业融资的三种方式
  • 关于网站建设调查问卷做的网站怎么一搜就能出来
  • 室内设计师之路网站做实体识别的网站
  • c 网站建设步骤如何自己学建设网站
  • 上海网站设计图片wordpress searchform
  • 浙江网站建设商城价格网络服务费属于什么费用
  • 网站高并发前端怎么做扬中新闻中心
  • 建站 网站程序机电建设工程施工网站
  • 网站建设加关键词是什么意思dw做网站导航
  • 揭阳网站建设模板重庆宣传片制作