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

网站建设与管理的认识软件详细设计文档模板

网站建设与管理的认识,软件详细设计文档模板,wordpress divi教程,网站后台修改的页面不能显示Python在糖尿病分类问题上寻找具有最佳 ROC AUC 分数和 PR AUC 分数(决策树、逻辑回归、KNN、SVM) 问题模板解题思路1. 导入必要的库2. 加载数据3. 划分训练集和测试集4. 数据预处理5. 定义算法及其参数6. 存储算法和对应指标7. 训练模型并计算指标8. 找…

Python在糖尿病分类问题上寻找具有最佳 ROC AUC 分数和 PR AUC 分数(决策树、逻辑回归、KNN、SVM)

  • 问题
  • 模板
  • 解题思路
    • 1. 导入必要的库
    • 2. 加载数据
    • 3. 划分训练集和测试集
    • 4. 数据预处理
    • 5. 定义算法及其参数
    • 6. 存储算法和对应指标
    • 7. 训练模型并计算指标
    • 8. 找出最佳算法
    • 9. 输出结果
  • 代码

问题

我们建议您使用 4 种不同的算法来解决糖尿病数据集上的二元分类问题:

Decision Tree (1) Logistic Regression (2) KNN (3) SVC (4)
您的任务是找到具有最佳 ROC AUC 分数和 PR AUC 分数的算法。作为答案,请指出数字 a b,其中 a 是 ROC AUC 分数方面的最佳算法,b 是 PR AUC 分数方面的最佳算法。

例如,答案 43 将被解释如下:算法 4(SVM)在 roc_auc_score 方面是最好的,算法 3(KNN)在 pr_auc_score 方面是最好的。

选择默认设置作为参数。对于 KNN,选择 k=5。将随机状态设置为 42。分成训练和测试,参数 test_size=0.3。

不要忘记对数据进行额外的预处理,使用 StandardScaler 将其调整到单一比例。

注意

  1. 请注意,StandardScaler 可能会影响算法的结果。因此,我们建议使用它。

  2. 当我们将数据分成训练和测试时,我们必须明白所有算法都必须仅在训练上进行训练。训练期间不使用测试。而且,在现实生活中我们对测试根本就一无所知。因此,StandardScaler 应该仅在 X_train 上进行训练,并且只应对 X_test 进行变换(而不是 fit_transform)。

模板

from sklearn.datasets import fetch_openml
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.svm import SVC
from sklearn.preprocessing import StandardScaler
"""
TODO: make additional imports here
TODO:在此处进行额外导入
"""data = fetch_openml(data_id=42608)
X, y = data['data'].drop(columns='Outcome').values, data['data']['Outcome'].astype(int).valuesX_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42
)"""
In the following part of code specify algorithms with their own parameters by yourself
在下面的代码部分中,您可以自己指定具有自己参数的算法
"""
tree = DecisionTreeClassifier()
lr = LogisticRegression()
knn = KNeighborsClassifier()
svm = SVC(probability=True)"""
TODO: fit estimators and find best one
TODO:拟合估算器并找到最佳估算器
"""

解题思路

1. 导入必要的库

from sklearn.datasets import fetch_openml
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.svm import SVC
from sklearn.preprocessing import StandardScalerfrom sklearn.metrics import roc_auc_score, auc
from sklearn.metrics import precision_recall_curve
import numpy as np

这些库的作用分别为:

  • fetch_openml:从 OpenML 平台加载数据集。
  • train_test_split:把数据集划分成训练集和测试集。
  • KNeighborsClassifierLogisticRegressionDecisionTreeClassifierSVC:四种不同的机器学习分类算法。
  • StandardScaler:对数据进行标准化处理。
  • roc_auc_scoreaucprecision_recall_curve:用于计算评估指标。
  • numpy:用于数值计算。

2. 加载数据

data = fetch_openml(data_id=42608)
X, y = data['data'].drop(columns='Outcome').values, data['data']['Outcome'].astype(int).values
  • 借助 fetch_openml 加载 ID 为 42608 的数据集,把特征数据存于 X 中,目标变量存于 y 中,同时将目标变量转换为整数类型。
  • 特征数据 X
    • data['data'] 取出的是数据集的特征数据部分,这是一个 pandasDataFrame 对象。
    • drop(columns='Outcome') 会从特征数据中移除名为 Outcome 的列,因为 Outcome 通常代表目标变量。
    • .valuesDataFrame 转换为 NumPy 数组,这样更适合用于机器学习模型的输入。
  • 目标变量 y
    • data['data']['Outcome'] 提取出 Outcome 列的数据,它同样是一个 pandasSeries 对象。
    • .astype(int) 将目标变量的数据类型转换为整数类型。
    • .valuesSeries 转换为 NumPy 数组。

3. 划分训练集和测试集

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42
)

使用 train_test_split 函数按 7:3 的比例将数据集划分为训练集和测试集,并且设置随机种子为 42 以保证结果的可重复性。

4. 数据预处理

scaler = StandardScaler() 
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
  • 利用 StandardScaler 对训练集和测试集的数据进行标准化处理,保证所有特征具有相同的尺度。(StandardScaler 是 sklearn 库中用于数据标准化的类,它可以将数据转换为均值为 0,标准差为 1 的标准正态分布。)
  • fit_transform 方法结合了 fittransform 两个步骤:
    • fit 方法:计算训练集的均值和标准差。具体来说,它会遍历训练集中的每个特征,计算其均值和标准差,这些统计信息会被存储在 scaler 对象中,后续用于对测试集进行转换。
    • transform 方法:使用计算得到的均值和标准差对训练集进行标准化处理。标准化的公式为:
      x s c a l e d = x − μ σ x_{scaled} = \frac{x - \mu}{\sigma} xscaled=σxμ
      其中, x x x 是原始数据, μ \mu μ 是均值, σ \sigma σ 是标准差。经过标准化处理后,每个特征的均值变为 0,标准差变为 1。
  • scaler.transform(X_test):这里只使用了 transform 方法,而没有再次使用 fit 方法。这是因为在机器学习中,我们必须使用训练集的统计信息(均值和标准差)来对测试集进行标准化处理,以保证训练集和测试集具有相同的尺度。如果对测试集也使用 fit_transform 方法,那么 scaler 会重新计算测试集的均值和标准差,这会导致训练集和测试集的尺度不一致,从而影响模型的性能。

5. 定义算法及其参数

tree = DecisionTreeClassifier(random_state=42)
lr = LogisticRegression(random_state=42, max_iter=1000)
knn = KNeighborsClassifier(n_neighbors=5)
svm = SVC(probability=True, random_state=42)

定义了四种分类算法,分别是决策树、逻辑回归、K 近邻和支持向量机,同时设置了相应的参数。

6. 存储算法和对应指标

algorithms = [tree, lr, knn, svm]
roc_aucs = []
pr_aucs = []

把四种算法存于 algorithms 列表中,并且创建两个空列表 roc_aucspr_aucs 用于存储每种算法的 ROC AUC 和 PR AUC 指标。

7. 训练模型并计算指标

for algorithm in algorithms:algorithm.fit(X_train, y_train)y_score = algorithm.predict_proba(X_test)[:, 1]# 计算ROC AUCroc_auc = roc_auc_score(y_test, y_score)roc_aucs.append(roc_auc)# 计算PR AUCprecision, recall, _ = precision_recall_curve(y_test, y_score)pr_auc = auc(recall, precision)pr_aucs.append(pr_auc)
  • 通过循环依次对每种算法进行训练,接着预测测试集的概率得分,计算 ROC AUC 和 PR AUC 指标,并将结果分别存储在 roc_aucspr_aucs 列表中。
  • algorithm.fit(X_train, y_train):对当前算法进行训练,使用训练集的特征数据 X_train 和对应的目标变量 y_train 来学习特征和目标之间的关系。
  • algorithm.predict_proba(X_test)[:, 1]:使用训练好的模型对测试集 X_test 进行预测,得到每个样本属于正类的概率。[:, 1] 表示只取属于正类的概率值

8. 找出最佳算法

best_roc_algorithm = np.argmax(roc_aucs) + 1
best_pr_algorithm = np.argmax(pr_aucs) + 1

运用 np.argmax 函数找出 roc_aucspr_aucs 列表中最大值的索引,加 1 后得到对应的算法编号。

9. 输出结果

result = int(str(best_roc_algorithm) + str(best_pr_algorithm))
print(result)

把最佳 ROC AUC 算法编号和最佳 PR AUC 算法编号拼接成一个字符串,再转换为整数后输出。

代码

from sklearn.datasets import fetch_openml
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.svm import SVC
from sklearn.preprocessing import StandardScalerfrom sklearn.metrics import roc_auc_score, auc
from sklearn.metrics import precision_recall_curve
import numpy as np# 加载数据
data = fetch_openml(data_id=42608)
X, y = data['data'].drop(columns='Outcome').values, data['data']['Outcome'].astype(int).values# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42
)# 数据预处理
scaler = StandardScaler() # 对数据进行标准化处理,确保所有特征具有相同的尺度。
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)# 定义算法及其参数
tree = DecisionTreeClassifier(random_state=42)
lr = LogisticRegression(random_state=42, max_iter=1000)
knn = KNeighborsClassifier(n_neighbors=5)
svm = SVC(probability=True, random_state=42)# 存储算法和对应指标
algorithms = [tree, lr, knn, svm]
roc_aucs = []
pr_aucs = []# 训练模型并计算指标
for algorithm in algorithms:algorithm.fit(X_train, y_train)y_score = algorithm.predict_proba(X_test)[:, 1]# 计算ROC AUCroc_auc = roc_auc_score(y_test, y_score)roc_aucs.append(roc_auc)# 计算PR AUCprecision, recall, _ = precision_recall_curve(y_test, y_score)pr_auc = auc(recall, precision)pr_aucs.append(pr_auc)# 找出最佳算法
best_roc_algorithm = np.argmax(roc_aucs) + 1
best_pr_algorithm = np.argmax(pr_aucs) + 1# 输出结果
result = int(str(best_roc_algorithm) + str(best_pr_algorithm))
print(result)

输出:21


文章转载自:

http://Bj191l9h.xpzrx.cn
http://m2DLggd9.xpzrx.cn
http://8oJPy9YT.xpzrx.cn
http://W1f6Ague.xpzrx.cn
http://yAJQYlLm.xpzrx.cn
http://CCDPhBtc.xpzrx.cn
http://Ko0ChDYv.xpzrx.cn
http://5bdtgLEx.xpzrx.cn
http://LKtm83Y8.xpzrx.cn
http://c3AKZyM9.xpzrx.cn
http://1zEcHlSC.xpzrx.cn
http://2TQhN0MX.xpzrx.cn
http://7IwuYW60.xpzrx.cn
http://066XYwNA.xpzrx.cn
http://OHQdocaf.xpzrx.cn
http://W3ELm3jK.xpzrx.cn
http://Dnqls4eY.xpzrx.cn
http://CdApSt1U.xpzrx.cn
http://IsLGmDRc.xpzrx.cn
http://exnZim5U.xpzrx.cn
http://yM0HwKs9.xpzrx.cn
http://umYgGMPg.xpzrx.cn
http://m2WpuMKT.xpzrx.cn
http://2F1sOhql.xpzrx.cn
http://bf9MUwNi.xpzrx.cn
http://kPY4wZhE.xpzrx.cn
http://qphzUDvG.xpzrx.cn
http://J2UlDDuC.xpzrx.cn
http://kyvTsVIh.xpzrx.cn
http://HBQ942jm.xpzrx.cn
http://www.dtcms.com/wzjs/698442.html

相关文章:

  • 众包网站开发电商是做什么行业的
  • 唯品会网站建设数据安全分析锤子手机网站模板
  • 惠州建设网站公司天津招投标 天津建设工程信息网
  • 网站建设怎么样做账企业展厅策划设计公司有哪些
  • 上海做网站的公中国机械加工网18易0下6拉en
  • ip查询网站备案查询系统信息手机网站模板下载安装
  • 母婴网站源码dede网络营销公司做得比较好的
  • 小学生做网站步骤为什么网络经营者要有自己的网站
  • 从零开始学ui设计seo优化软件哪个好
  • 网站后台可视化编辑wordpress角色
  • 红酒网站源码网站三元素怎么做
  • 全球搜索网站排名网站多语言包
  • 仿京东电商的网站开发报价做局域网网站
  • 校园网站建设建议视频网站怎么建设
  • 个人建网站需要多少钱盐城优化办
  • 网上做翻译兼职网站制作网站赚钱吗
  • 自己怎么注册一个网站在线文字编辑器
  • 西安做公司网站的公司南宁网站快
  • 乡村旅游网站建设的意义做棋盘游戏辅助的网站
  • 全球设计网站排行泰兴企业网站建设
  • 深圳微商城网站设计制作移动通网站建设
  • 帝国cms建站实例教程响应式模板网站建设哪家好
  • 网站空间服务商app 开发
  • 品牌网站排名软件wordpress 十万
  • 杭州公司注销网站备案国外网站 网站 推荐
  • 怎么收录网站福田公司怎么样
  • 网站建设行业分析建设网站工作报告
  • 玉树电子商务网站建设哪家快咸宁市网站建设
  • 网站服务器和网站备案在服务器上运行wordpress
  • 东莞网站建设总结推介网手机版