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

网站子页怎么做 视频合肥建设学校网站首页

网站子页怎么做 视频,合肥建设学校网站首页,静态网站用什么做,水果配送网站建设文章目录 一、支持向量机概述什么是支持向量机#xff1f;超平面和支持向量大边距直觉 二、数据预处理与可视化数据集的基本信息导入必要的库加载数据集数据概况数据可视化特征对的散点图矩阵类别分布条形图平均面积与平均光滑度的散点图变量之间的相关性热图 三、模型训练超平面和支持向量大边距直觉 二、数据预处理与可视化数据集的基本信息导入必要的库加载数据集数据概况数据可视化特征对的散点图矩阵类别分布条形图平均面积与平均光滑度的散点图变量之间的相关性热图 三、模型训练问题解决数据准备与预处理评估模型性能支持向量机SVM线性核 SVM多项式核 SVM径向基函数RBF核 SVM总结 四、SVM 数据准备模型训练与评估多项式核 SVM径向基函数Radial Basis Function核 SVM 支持向量机超参数调优 五、主成分分析PCA 简介PCA 可视化解释组件支持向量机SVM模型的参数调整 六、总结 支持向量机 (SVM) 是一种功能强大且用途广泛的机器学习模型适用于线性和非线性分类、回归以及异常值检测。本文将介绍支持向量机算法及其在 scikit-learn 中的实现并简要探讨主成分分析及其在 scikit-learn 中的应用。 一、支持向量机概述 支持向量机SVM是一种在机器学习领域广泛使用的算法以其在较少计算资源下提供显著准确性的特点而受到青睐。SVM 可用于分类和回归任务但在分类问题中应用最为广泛。 什么是支持向量机 支持向量机的目标是在 N N N 维空间 N N N 为特征数中找到一个能够明确区分数据点的超平面。该超平面使得不同类别的数据点被分开并且尽可能远离超平面从而确保分类的稳健性。 为了实现数据点的有效分离可能存在多个超平面。我们的目标是选择一个具有最大边距的超平面即两个类别之间的最大距离。最大化边距有助于提高分类的准确性。 超平面和支持向量 超平面是划分数据点的决策边界。位于超平面两侧的数据点可以被分为不同的类别。超平面的维度取决于特征的数量如果输入特征为 2则超平面是直线如果特征为 3则超平面是二维平面。当特征数量超过 3 时超平面变得难以直观理解。 支持向量是指那些离超平面最近的点这些点影响了超平面的位置和方向。通过这些支持向量我们可以最大化分类器的边距。删除支持向量会改变超平面的位置因此它们对构建 SVM 至关重要。 大边距直觉 在逻辑回归中我们使用 S 型函数将线性函数的输出值压缩到 [0,1] 范围内并根据阈值0.5分配标签。而在 SVM 中我们使用线性函数的输出值来决定分类如果输出大于 1则属于一个类如果输出为 -1则属于另一个类。SVM 通过将输出值的阈值设为 1 和 -1形成了边际范围 [-1,1]。 二、数据预处理与可视化 使用支持向量机来预测癌症诊断的良恶性。 数据集的基本信息 特征数为30个例如 半径从中心到周长点的距离平均值纹理灰度值的标准偏差周长面积平滑度半径长度的局部变化紧凑度周长^2 / 面积 - 1.0凹度轮廓凹陷部分的严重程度凹点轮廓凹陷部分的数量对称性分形维数“海岸线近似” - 1 数据集包含 569 个样本类别分布为 212 个恶性样本和 357 个良性样本。目标类别 恶性良性 导入必要的库 import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns%matplotlib inline sns.set_style(whitegrid)加载数据集 from sklearn.datasets import load_breast_cancercancer load_breast_cancer()# 创建 DataFrame col_names list(cancer.feature_names) col_names.append(target) df pd.DataFrame(np.c_[cancer.data, cancer.target], columnscol_names) df.head()数据概况 df.info()print(cancer.target_names) # [malignant, benign]# 数据描述 df.describe() # 统计摘要 df.info()数据可视化 特征对的散点图矩阵 sns.pairplot(df, huetarget, vars[mean radius, mean texture, mean perimeter, mean area,mean smoothness, mean compactness, mean concavity,mean concave points, mean symmetry, mean fractal dimension ])类别分布条形图 sns.countplot(xdf[target], labelCount)平均面积与平均光滑度的散点图 plt.figure(figsize(10, 8)) sns.scatterplot(xmean area, ymean smoothness, huetarget, datadf)变量之间的相关性热图 plt.figure(figsize(20,10)) sns.heatmap(df.corr(), annotTrue)三、模型训练问题解决 在机器学习中模型训练是寻找问题解决方案的关键步骤。下面我们将介绍如何使用 scikit-learn 进行模型训练并展示支持向量机SVM在不同内核下的性能表现。 数据准备与预处理 首先我们需要准备和预处理数据。以下是数据预处理的代码示例 from sklearn.model_selection import cross_val_score, train_test_split from sklearn.pipeline import Pipeline from sklearn.preprocessing import StandardScaler, MinMaxScalerX df.drop(target, axis1) y df.targetprint(fX shape: {X.shape}) print(fy shape: {y.shape}) # X shape: (569, 30) # y shape: (569,)pipeline Pipeline([(min_max_scaler, MinMaxScaler()),(std_scaler, StandardScaler()) ])X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.3, random_state42)在代码中我们使用 MinMaxScaler 和 StandardScaler 对数据进行缩放。数据被分为训练集和测试集其中 30% 的数据用于测试。 评估模型性能 为了评估模型的性能我们定义了一个 print_score 函数该函数可以输出训练和测试结果的准确率、分类报告和混淆矩阵 from sklearn.metrics import accuracy_score, confusion_matrix, classification_report import pandas as pddef print_score(clf, X_train, y_train, X_test, y_test, trainTrue):if train:pred clf.predict(X_train)clf_report pd.DataFrame(classification_report(y_train, pred, output_dictTrue))print(Train Result:\n)print(fAccuracy Score: {accuracy_score(y_train, pred) * 100:.2f}%)print(_______________________________________________)print(fCLASSIFICATION REPORT:\n{clf_report})print(_______________________________________________)print(fConfusion Matrix: \n {confusion_matrix(y_train, pred)}\n)else:pred clf.predict(X_test)clf_report pd.DataFrame(classification_report(y_test, pred, output_dictTrue))print(Test Result:\n) print(fAccuracy Score: {accuracy_score(y_test, pred) * 100:.2f}%)print(_______________________________________________)print(fCLASSIFICATION REPORT:\n{clf_report})print(_______________________________________________)print(fConfusion Matrix: \n {confusion_matrix(y_test, pred)}\n)支持向量机SVM 支持向量机SVM是一种强大的分类算法其性能受超参数的影响。下面将介绍 SVM 的主要参数及其对模型性能的影响 C 参数控制正确分类训练点和拥有平滑决策边界之间的权衡。较小的 C C C宽松使误分类成本惩罚较低软边距而较大的 C C C严格使误分类成本较高硬边距迫使模型更严格地解释输入数据。gamma 参数控制单个训练集的影响范围。较大的 γ \gamma γ 使影响范围较近较近的数据点具有较高的权重较小的 γ \gamma γ 使影响范围较广更广泛的解决方案。degree 参数多项式核函数poly的度被其他内核忽略。可以通过网格搜索来找到最佳超参数值。 线性核 SVM 线性核 SVM 适用于大多数情况特别是当数据集具有大量特征时。以下是使用线性核 SVM 的代码示例 from sklearn.svm import LinearSVCmodel LinearSVC(losshinge, dualTrue) model.fit(X_train, y_train)print_score(model, X_train, y_train, X_test, y_test, trainTrue) print_score(model, X_train, y_train, X_test, y_test, trainFalse)训练和测试结果如下 训练结果 Accuracy Score: 86.18% _______________________________________________ CLASSIFICATION REPORT:0.0 1.0 accuracy macro avg weighted avg precision 1.000000 0.819079 0.861809 0.909539 0.886811 recall 0.630872 1.000000 0.861809 0.815436 0.861809 f1-score 0.773663 0.900542 0.861809 0.837103 0.853042 support 149.000000 249.000000 0.861809 398.000000 398.000000 _______________________________________________ Confusion Matrix: [[ 94 55][ 0 249]]测试结果 Accuracy Score: 89.47% _______________________________________________ CLASSIFICATION REPORT:0.0 1.0 accuracy macro avg weighted avg precision 1.000000 0.857143 0.894737 0.928571 0.909774 recall 0.714286 1.000000 0.894737 0.857143 0.894737 f1-score 0.833333 0.923077 0.894737 0.878205 0.890013 support 63.000000 108.000000 0.894737 171.000000 171.000000 _______________________________________________ Confusion Matrix: [[ 45 18][ 0 108]]多项式核 SVM 多项式核 SVM 适用于非线性数据。以下是使用二阶多项式核的代码示例 from sklearn.svm import SVCmodel SVC(kernelpoly, degree2, gammaauto, coef01, C5) model.fit(X_train, y_train)print_score(model, X_train, y_train, X_test, y_test, trainTrue) print_score(model, X_train, y_train, X_test, y_test, trainFalse)训练和测试结果如下 训练结果 Accuracy Score: 96.98% _______________________________________________ CLASSIFICATION REPORT:0.0 1.0 accuracy macro avg weighted avg precision 0.985816 0.961089 0.969849 0.973453 0.970346 recall 0.932886 0.991968 0.969849 0.962427 0.969849 f1-score 0.958621 0.976285 0.969849 0.967453 0.969672 support 149.000000 249.000000 0.969849 398.000000 398.000000 _______________________________________________ Confusion Matrix: [[139 10][ 2 247]]测试结果 Accuracy Score: 97.08% _______________________________________________ CLASSIFICATION REPORT:0.0 1.0 accuracy macro avg weighted avg precision 0.967742 0.972477 0.97076 0.970109 0.970733 recall 0.952381 0.981481 0.97076 0.966931 0.970760 f1-score 0.960000 0.976959 0.97076 0.968479 0.970711 support 63.000000 108.000000 0.97076 171.000000 171.000000 _______________________________________________ Confusion Matrix: [[ 60 3][ 2 106]]径向基函数RBF核 SVM 径向基函数RBF核适用于处理非线性数据。以下是使用 RBF 核的代码示例 model SVC(kernelrbf, gamma0.5, C0.1) model.fit(X_train, y_train)print_score(model, X_train, y_train, X_test, y_test, trainTrue) print_score(model, X_train, y_train, X_test, y_test, trainFalse)训练和测试结果如下 训练结果 Accuracy Score: 62.56% _______________________________________________ CLASSIFICATION REPORT:0.0 1.0 accuracy macro avg weighted avg precision 0.0 0.625628 0.625628 0.312814 0.392314 recall 0.0 1.000000 0.625628 0.500000 0.625628 f1-score 0.0 0.769231 0.625628 0.384615 0.615385 support 149.0 249.0 0.625628 398.0 398.0 _______________________________________________ Confusion Matrix: [[ 0 149][ 0 249]]测试结果 Accuracy Score: 64.97% _______________________________________________ CLASSIFICATION REPORT:0.0 1.0 accuracy macro avg weighted avg precision 0.0 0.655172 0.649661 0.327586 0.409551 recall 0.0 1.000000 0.649661 0.500000 0.649661 f1-score 0.0 0.792453 0.649661 0.396226 0.628252 support 63.0 108.0 0.649661 171.0 171.0 _______________________________________________ Confusion Matrix: [[ 0 63][ 0 108]]总结 通过以上模型训练和评估过程我们可以观察到不同 SVM 内核的性能差异。线性核 SVM 在准确性和训练时间上表现良好适用于数据维度较高的情况。多项式核 SVM 和 RBF 核 SVM 在非线性数据上具有更好的表现但在某些参数设置下可能会导致过拟合。选择合适的内核和超参数对于模型性能的提升至关重要。 四、SVM 数据准备 数字输入SVM 假设输入数据为数字。如果输入数据为分类变量可能需要将其转换为二进制虚拟变量每个类别一个变量。 二元分类基本的 SVM 适用于二元分类问题。虽然 SVM 主要用于二元分类但也有扩展版本用于回归和多类分类。 X_train pipeline.fit_transform(X_train) X_test pipeline.transform(X_test)模型训练与评估 以下展示了不同 SVM 内核的训练和测试结果 线性核 SVM print(Linear Kernel SVM) model SVC(kernellinear) model.fit(X_train, y_train)print_score(model, X_train, y_train, X_test, y_test, trainTrue) print_score(model, X_train, y_train, X_test, y_test, trainFalse)训练结果 Accuracy Score: 98.99% _______________________________________________ CLASSIFICATION REPORT:0.0 1.0 accuracy macro avg weighted avg precision 1.000000 0.984190 0.98995 0.992095 0.990109 recall 0.973154 1.000000 0.98995 0.986577 0.989950 f1-score 0.986395 0.992032 0.98995 0.989213 0.989921 support 149.000000 249.000000 0.98995 398.000000 398.000000 _______________________________________________ Confusion Matrix: [[145 4][ 0 249]]测试结果Accuracy Score: 97.66% _______________________________________________ CLASSIFICATION REPORT:0.0 1.0 accuracy macro avg weighted avg precision 0.968254 0.981481 0.976608 0.974868 0.976608 recall 0.968254 0.981481 0.976608 0.974868 0.976608 f1-score 0.968254 0.981481 0.976608 0.974868 0.976608 support 63.000000 108.000000 0.976608 171.000000 171.000000 _______________________________________________ Confusion Matrix: [[ 61 2][ 2 106]]多项式核 SVM print(Polynomial Kernel SVM) from sklearn.svm import SVCmodel SVC(kernelpoly, degree2, gammaauto) model.fit(X_train, y_train)print_score(model, X_train, y_train, X_test, y_test, trainTrue) print_score(model, X_train, y_train, X_test, y_test, trainFalse)训练结果 Accuracy Score: 85.18% _______________________________________________ CLASSIFICATION REPORT:0.0 1.0 accuracy macro avg weighted avg precision 0.978723 0.812500 0.851759 0.895612 0.874729 recall 0.617450 0.991968 0.851759 0.804709 0.851759 f1-score 0.757202 0.893309 0.851759 0.825255 0.842354 support 149.000000 249.000000 0.851759 398.000000 398.000000 _______________________________________________ Confusion Matrix: [[ 92 57][ 2 247]]测试结果Accuracy Score: 82.46% _______________________________________________ CLASSIFICATION REPORT:0.0 1.0 accuracy macro avg weighted avg precision 0.923077 0.795455 0.824561 0.859266 0.842473 recall 0.571429 0.972222 0.824561 0.771825 0.824561 f1-score 0.705882 0.875000 0.824561 0.790441 0.812693 support 63.000000 108.000000 0.824561 171.000000 171.000000 _______________________________________________ Confusion Matrix: [[ 36 27][ 3 105]]径向基函数Radial Basis Function核 SVM print(Radial Kernel SVM) from sklearn.svm import SVCmodel SVC(kernelrbf, gamma1) model.fit(X_train, y_train)print_score(model, X_train, y_train, X_test, y_test, trainTrue) print_score(model, X_train, y_train, X_test, y_test, trainFalse)训练结果 Accuracy Score: 100.00% _______________________________________________ CLASSIFICATION REPORT:0.0 1.0 accuracy macro avg weighted avg precision 1.0 1.0 1.0 1.0 1.0 recall 1.0 1.0 1.0 1.0 1.0 f1-score 1.0 1.0 1.0 1.0 1.0 support 149.0 249.0 1.0 398.0 398.0 _______________________________________________ Confusion Matrix: [[149 0][ 0 249]]测试结果Accuracy Score: 63.74% _______________________________________________ CLASSIFICATION REPORT:0.0 1.0 accuracy macro avg weighted avg precision 1.000000 0.635294 0.637427 0.817647 0.769659 recall 0.015873 1.000000 0.637427 0.507937 0.637427 f1-score 0.031250 0.776978 0.637427 0.404114 0.502236 support 63.000000 108.000000 0.637427 171.000000 171.000000 _______________________________________________ Confusion Matrix: [[ 1 62][ 0 108]]支持向量机超参数调优 from sklearn.model_selection import GridSearchCVparam_grid {C: [0.01, 0.1, 0.5, 1, 10, 100], gamma: [1, 0.75, 0.5, 0.25, 0.1, 0.01, 0.001], kernel: [rbf, poly, linear]} grid GridSearchCV(SVC(), param_grid, refitTrue, verbose1, cv5) grid.fit(X_train, y_train)best_params grid.best_params_ print(fBest params: {best_params})svm_clf SVC(**best_params) svm_clf.fit(X_train, y_train) print_score(svm_clf, X_train, y_train, X_test, y_test, trainTrue) print_score(svm_clf, X_train, y_train, X_test, y_test, trainFalse)训练结果 Accuracy Score: 98.24% _______________________________________________ CLASSIFICATION REPORT:0.0 1.0 accuracy macro avg weighted avg precision 0.986301 0.980159 0.982412 0.983230 0.982458 recall 0.966443 0.991968 0.982412 0.979205 0.982412 f1-score 0.976271 0.986028 0.982412 0.981150 0.982375 support 149.000000 249.000000 0.982412 398.000000 398.000000 _______________________________________________ Confusion Matrix: [[144 5][ 2 247]]测试结果Accuracy Score: 98.25% _______________________________________________ CLASSIFICATION REPORT:0.0 1.0 accuracy macro avg weighted avg precision 0.983871 0.981651 0.982456 0.982761 0.982469 recall 0.968254 0.990741 0.982456 0.979497 0.982456 f1-score 0.976000 0.986175 0.982456 0.981088 0.982426 support 63.000000 108.000000 0.982456 171.000000 171.000000 _______________________________________________ Confusion Matrix: [[ 61 2][ 1 107]]五、主成分分析 PCA 简介 主成分分析PCA是一种通过将数据投影到较低维空间来实现线性降维的技术具体步骤如下 使用奇异值分解通过奇异值分解将数据投影到低维空间。无监督学习PCA 不需要标记数据来进行降维。特征转换尝试找出哪些特征可以解释数据中的最大差异。 PCA 可视化 由于高维数据难以直接可视化我们可以使用 PCA 找到前两个主成分并在二维空间中可视化数据。为了实现这一点需要先对数据进行标准化使每个特征的方差为单位方差。 from sklearn.preprocessing import StandardScaler from sklearn.model_selection import train_test_split from sklearn.decomposition import PCA import matplotlib.pyplot as plt# 数据标准化 scaler StandardScaler() X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.3, random_state42) X_train scaler.fit_transform(X_train) X_test scaler.transform(X_test)# PCA 降维 pca PCA(n_components2) X_train pca.fit_transform(X_train) X_test pca.transform(X_test)# 可视化前两个主成分 plt.figure(figsize(8,6)) plt.scatter(X_train[:,0], X_train[:,1], cy_train, cmapplasma) plt.xlabel(First Principal Component) plt.ylabel(Second Principal Component) plt.show()通过前两个主成分我们可以在二维空间中轻松分离不同类别的数据点。 解释组件 降维虽然强大但组件的含义较难直接理解。每个组件对应于原始特征的组合这些组件可以通过拟合 PCA 对象获得。 组件的相关属性包括 成分得分变换后的变量值。载荷权重特征的组合权重。数据压缩和信息保存通过 PCA 实现数据的压缩同时保留关键信息。噪声过滤降维过程中可以过滤掉噪声。特征提取和工程用于提取和构造新的特征。 支持向量机SVM模型的参数调整 在使用支持向量机SVM进行模型训练时我们需要调整超参数以获得最佳模型。以下是使用网格搜索GridSearchCV调整 SVM 参数的示例代码 from sklearn.svm import SVC from sklearn.model_selection import GridSearchCV# 定义参数网格 param_grid {C: [0.01, 0.1, 0.5, 1, 10, 100], gamma: [1, 0.75, 0.5, 0.25, 0.1, 0.01, 0.001], kernel: [rbf, poly, linear]} # 网格搜索 grid GridSearchCV(SVC(), param_grid, refitTrue, verbose1, cv5) grid.fit(X_train, y_train) best_params grid.best_params_ print(fBest params: {best_params})# 使用最佳参数训练模型 svm_clf SVC(**best_params) svm_clf.fit(X_train, y_train)训练结果 Accuracy Score: 96.48% _______________________________________________ CLASSIFICATION REPORT:0.0 1.0 accuracy macro avg weighted avg precision 0.978723 0.957198 0.964824 0.967961 0.965257 recall 0.926174 0.987952 0.964824 0.957063 0.964824 f1-score 0.951724 0.972332 0.964824 0.962028 0.964617 support 149.000000 249.000000 0.964824 398.000000 398.000000 _______________________________________________ Confusion Matrix: [[138 11][ 3 246]]测试结果Accuracy Score: 96.49% _______________________________________________ CLASSIFICATION REPORT:0.0 1.0 accuracy macro avg weighted avg precision 0.967213 0.963636 0.964912 0.965425 0.964954 recall 0.936508 0.981481 0.964912 0.958995 0.964912 f1-score 0.951613 0.972477 0.964912 0.962045 0.964790 support 63.000000 108.000000 0.964912 171.000000 171.000000 _______________________________________________ Confusion Matrix: [[ 59 4][ 2 106]]六、总结 本文我们学习了以下内容 支持向量机SVM了解了 SVM 的基本概念及其在 Python 中的实现。SVM 核函数包括线性、径向基函数RBF和多项式核函数。数据准备如何为 SVM 算法准备数据。超参数调整通过网格搜索调整 SVM 的超参数。主成分分析PCA如何使用 PCA 降低数据的复杂性并在 scikit-learn 中进行重用。 参考Support Vector Machine PCA Tutorial for Beginner 推荐我的相关专栏 python 错误记录python 笔记数据结构
http://www.dnsts.com.cn/news/25184.html

相关文章:

  • 摄影设计网站怎么建立外贸网站
  • 仿站工具下载后咋做网站怎样自己建一个网站
  • 营销策划方案范文wordpress 描文本优化
  • 重庆建设厅网站做网站文字编辑好不好
  • 网站标题logo制作wordpress 下载栏目
  • wordpress站内短信中卫网站建站设计
  • 外贸搜素网站PPT做音乐网站介绍
  • 做网站后台需要写代码吗建立的读音
  • 网站备案后东莞教育平台网站建设
  • 怎么做网站流量鞍山做网站的
  • 吧网站做软件的软件app开发需要什么资源和团队
  • 如何制作网站效果图网站改版模版
  • 如何查看网站的服务器位置微信做一元云购网站
  • 客户网站建设确认书做网站不会写代码
  • 个人网站创建平台要多少钱建设本地网站 配置iis
  • 网站logo显示wordpress文章列表摘要
  • 公司网站建设工作计划网站建设试用
  • 网站推广计划书十大免费视频素材网
  • 用cms建网站江西人才招聘网官网
  • 淘宝客网站怎么做视频wordpress买域名
  • php做电影网站推广引流渠道有哪些
  • 国内做网站大公司有哪些wordpress商城 淘宝客
  • 吴江规划建设局网站创建全国文明城市的宗旨是什么
  • 高中教做网站的软件微网站建设哪家好
  • 定制化网站开发的好处从化定制型网站建设
  • 做网站的宽度为多少钱服务器在哪里
  • 网站建设企业开发建设工程规划许可证查询网站
  • 进网站备案wordpress主题付费
  • 廊坊网站建设的公司成都网站建设 公司
  • 聊城网站开发个人福建住建设厅官方网站