目录
介绍
概述
目录
分类建模:概述
建立基本分类模型
1。数据准备
2。逻辑回归
3。支持向量机(SVM)
4。决策树
5。带张量的神经网络
确定错误
使用网格搜索改进逻辑回归的示例
带有张量的神经网络
提早停止和模型检查点
了解各种指标的意义
模型性能的可视化
结论
常见问题
首页 科技周边 人工智能 您是否在分类建模中犯了这些错误?

您是否在分类建模中犯了这些错误?

Apr 14, 2025 am 10:02 AM

介绍

评估机器学习模型不仅是最后一步,而且是成功的基石。想象一下,建立一个高精度使其眼花azz乱的尖端模型,只是发现它在现实世界的压力下崩溃了。评估不仅仅是滴定指标;这是关于确保您的模型在野外始终如一。在本文中,我们将潜入常见的陷阱,这些陷阱甚至可能是最有希望的分类模型,并揭示可以将您的模型从良好提升到卓越的最佳实践。让我们将您的分类建模任务变成可靠,有效的解决方案。

概述

  • 构建分类模型:通过分步指导构建一个固体分类模型。
  • 识别频繁的错误:在分类建模中发现并避免常见的陷阱。
  • 理解过度拟合:了解过度拟合并学习如何在模型中预防它。
  • 提高模型构建技能:通过最佳实践和高级技术来增强您的模型构建技能。

目录

  • 介绍
  • 分类建模:概述
  • 建立基本分类模型
    • 1。数据准备
    • 2。逻辑回归
    • 3。支持向量机(SVM)
    • 4。决策树
    • 5。带张量的神经网络
  • 确定错误
  • 使用网格搜索改进逻辑回归的示例
  • 带有张量的神经网络
  • 了解各种指标的意义
  • 模型性能的可视化
  • 结论
  • 常见问题

分类建模:概述

在分类问题中,我们尝试构建一个模型,该模型使用自变量预测目标变量的标签。当我们处理标记的目标数据时,我们将需要监督的机器学习算法,例如逻辑回归,SVM,决策树等。我们还将研究用于解决分类问题的神经网络模型,确定人们可能犯的常见错误,并确定如何避免它们。

建立基本分类模型

我们将展示使用Kaggle的日期工作数据集创建基本分类模型。关于数据集:目标变量由七种类型的日期水果组成:Barhee,Deglet Nour,Sukkary,Rotab Mozafati,Ruthana,Ruthana,Safawi和Sagai。数据集由898张图像组成,这些图像七个不同的日期水果品种,并通过图像处理技术提取了34个特征。目的是根据其属性对这些水果进行分类。

1。数据准备

导入大熊猫作为pd

来自sklearn.model_selection导入train_test_split

从sklearn.prepercorsing进口标准标准

#加载数据集

data = pd.read_excel('/content/date_fruit_datasets.xlsx')

#将数据分为功能和目标

x = data.drop('class',轴= 1)

y =数据['class']

#将数据集分为培训和测试集

x_train,x_test,y_train,y_test = train_test_split(x,y,test_size = 0.3,andural_state = 42)

#功能缩放

sualer = StandardScaler()

x_train = scaler.fit_transform(x_train)

x_test = scaler.transform(x_test) 
登录后复制

您是否在分类建模中犯了这些错误?

您是否在分类建模中犯了这些错误?

2。逻辑回归

来自sklearn.linear_model导入logisticRegress

来自Sklearn.metrics导入精度_score

#逻辑回归模型

log_reg = logisticRegress()

log_reg.fit(x_train,y_train)

#预测和评估

y_train_pred = log_reg.redict(x_train)

y_test_pred = log_reg.redict(x_test)

# 准确性

train_acc = efceracy_score(y_train,y_train_pred)

test_acc = efceracy_score(y_test,y_test_pred)

打印(f'logistic回归 - 火车准确性:{train_acc},测试准确性:{test_acc}')
登录后复制

结果:

 - 逻辑回归 - 火车准确性:0.9538<br><br> - 测试准确性:0.9222
登录后复制

另请阅读:逻辑回归简介

3。支持向量机(SVM)

来自Sklearn.svm导入SVC

来自Sklearn.metrics导入精度_score

#svm

svm = svc(kernel ='linear',概率= true)

svm.fit(x_train,y_train)

#预测和评估

y_train_pred = svm.predict(x_train)

y_test_pred = svm.predict(x_test)

train_accuracy = ecuctacy_score(y_train,y_train_pred)

test_accuracy = efcucy_score(y_test,y_test_pred)

打印(f“ svm-火车准确性:{train_accuracy},测试准确性:{test_accuracy}”)
登录后复制

结果:

 -SVM-火车准确性:0.9602<br><br> - 测试准确性:0.9074
登录后复制

另请阅读:支持向量机(SVM)算法指南

4。决策树

从Sklearn.Tre Import DecisionTreeTreclalerifier

来自Sklearn.metrics导入精度_score

#决策树

tree = dekistionTreeClalsifier(Random_State = 42)

tree.fit(x_train,y_train)

#预测和评估

y_train_pred = tree.predict(x_train)

y_test_pred = tree.predict(x_test)

train_accuracy = ecuctacy_score(y_train,y_train_pred)

test_accuracy = efcucy_score(y_test,y_test_pred)

打印(f“决策树 - 火车准确性:{train_accuracy},测试准确性:{test_accuracy}”)
登录后复制

结果:

 - 决策树 - 火车准确性:1.0000<br><br> - 测试准确性:0.8222
登录后复制

5。带张量的神经网络

导入numpy作为NP

从Sklearn.Preprocessing Import LabElenCoder,StandardardScaler

来自sklearn.model_selection导入train_test_split

从TensorFlow.keras导入模型,层

从TensorFlow.keras.callbacks导入早期踩踏,modelCheckpoint

#标签编码目标类

label_encoder = labelencoder()

y_encoded = label_encoder.fit_transform(y)

#火车测试拆分

x_train,x_test,y_train,y_test = train_test_split(x,y_encoded,test_size = 0.2,andury_state = 42)

#功能缩放

sualer = StandardScaler()

x_train = scaler.fit_transform(x_train)

x_test = scaler.transform(x_test)

#神经网络

模型=模型。

layers.dense(64,activation ='relu',input_shape =(x_train.shape [1],)),),

layers.dense(32,激活='relu'),

layers.dense(len(np.unique(y_encoded))),激活='softmax')#确保输出层大小与类数量

)))

model.compile(优化器='adam',loss ='sparse_categorical_crossentropy',metrics = ['fecicy'])

#回调

早期_STOPPING =早期stopping(Monitor ='Val_loss',耐心= 10,Restore_best_weights = true)

model_checkpoint = modelCheckpoint('best_model.keras',monitor ='val_loss',save_best_only = true)

#训练模型

历史= model.fit(x_train,y_train,epochs = 100,batch_size = 32,validation_data =(x_test,y_test),

回调= [早期_Stopping,model_checkpoint],详细= 1)

#评估模型

train_loss,train_accuracy = model.evaluate(x_train,y_train,冗长= 0)

test_loss,test_accuracy = model.evaluate(x_test,y_test,冗长= 0)

打印(f“神经网络 - 火车精度:{train_accuracy},测试精度:{test_accuracy}”)
登录后复制
登录后复制

结果:

 - 神经网络 - 火车准确性:0.9234<br><br> - 测试准确性:0.9278
登录后复制

另请阅读:使用TensorFlow构建神经网络

确定错误

分类模型可能会遇到一些可能损害其有效性的挑战。必须识别和解决这些问题以建立可靠的模型。以下是要考虑的一些关键方面:

  1. 过于拟合和不足:
    • 交叉验证:避免仅取决于单列火车测试拆分。利用K折的交叉验证来通过对各种数据段进行测试来更好地评估模型的性能。
    • 正则化:高度复杂的模型可能会通过捕获数据中的噪声而过度。诸如修剪或正则化之类的正规化方法应用于惩罚复杂性。
    • 高参数优化:彻底探索和调整超参数(例如,通过网格或随机搜索)来平衡偏差和方差。
  2. 合奏技术:
    • 模型聚集:诸如随机森林或梯度增强的集合方法结合了多个模型的预测,通常会导致概括。这些技术可以在数据中捕获复杂的模式,同时通过平均单个模型错误来减轻过度拟合的风险。
  3. 班级失衡:
    • 班级不平衡:在许多情况下,一个类可能比其他类别少,导致偏见的预测。必须根据问题使用诸如过采样,底漆或SMOTE之类的方法。
  4. 数据泄漏:
    • 无意的泄漏:数据泄漏发生在训练集外部的信息会影响模型时导致膨胀性能指标时。至关重要的是要确保在培训期间完全看不见测试数据,并且要谨慎管理从目标变量获得的功能。

使用网格搜索改进逻辑回归的示例

来自sklearn.model_selection导入GridSearchCV

#实施网格搜索逻辑回归

param_grid = {'c':[0.1,1,10,100],'solver':['lbfgs']}

grid_search = GridSearchCV(LogisticRegression(Multi_class ='MultiNomial',max_iter = 1000),param_grid,cv = 5)

grid_search.fit(x_train,y_train)

#最佳模型

best_model = grid_search.best_estimator_

#评估测试集

test_accuracy = best_model.score(x_test,y_test)

打印(f“最佳逻辑回归 - 测试精度:{test_accuracy}”)
登录后复制

结果:

 - 最佳逻辑回归 - 测试准确性:0.9611
登录后复制

带有张量的神经网络

让我们专注于改善以前的神经网络模型,专注于最大程度地减少过度拟合和增强概括的技术。

提早停止和模型检查点

早期停止在模型的验证性能高原时停止训练,从而避免从训练数据噪声中学习过多,从而防止过度适应。

模型检查点可以节省在整个训练中验证集中最佳的模型,从而确保保留最佳模型版本,即使随后的培训导致过度拟合。

导入numpy作为NP

从Sklearn.Preprocessing Import LabElenCoder,StandardardScaler

来自sklearn.model_selection导入train_test_split

从TensorFlow.keras导入模型,层

从TensorFlow.keras.callbacks导入早期踩踏,modelCheckpoint

#标签编码目标类

label_encoder = labelencoder()

y_encoded = label_encoder.fit_transform(y)

#火车测试拆分

x_train,x_test,y_train,y_test = train_test_split(x,y_encoded,test_size = 0.2,andury_state = 42)

#功能缩放

sualer = StandardScaler()

x_train = scaler.fit_transform(x_train)

x_test = scaler.transform(x_test)

#神经网络

模型=模型。

layers.dense(64,activation ='relu',input_shape =(x_train.shape [1],)),),

layers.dense(32,激活='relu'),

layers.dense(len(np.unique(y_encoded))),激活='softmax')#确保输出层大小与类数量

)))

model.compile(优化器='adam',loss ='sparse_categorical_crossentropy',metrics = ['fecicy'])

#回调

早期_STOPPING =早期stopping(Monitor ='Val_loss',耐心= 10,Restore_best_weights = true)

model_checkpoint = modelCheckpoint('best_model.keras',monitor ='val_loss',save_best_only = true)

#训练模型

历史= model.fit(x_train,y_train,epochs = 100,batch_size = 32,validation_data =(x_test,y_test),

回调= [早期_Stopping,model_checkpoint],详细= 1)

#评估模型

train_loss,train_accuracy = model.evaluate(x_train,y_train,冗长= 0)

test_loss,test_accuracy = model.evaluate(x_test,y_test,冗长= 0)

打印(f“神经网络 - 火车精度:{train_accuracy},测试精度:{test_accuracy}”)
登录后复制
登录后复制

您是否在分类建模中犯了这些错误?

了解各种指标的意义

  1. 准确性:尽管重要的是,精度可能无法完全捕获模型的性能,尤其是在处理不平衡的班级分布时。
  2. 损失:损耗函数评估预测值与真实标签的对齐程度;较小的损耗值表示较高的精度。
  3. 精度,召回和F1得分:精确评估正面预测的正确性,召回衡量该模型在识别所有阳性案例方面的成功,以及F1得分平衡的精度和回忆。
  4. ROC-AUC :ROC-AUC度量标准量量化了模型区分类别的能力,无论阈值设置如何。
来自sklearn.metrics导入classification_report,roc_auc_score

#预测

Y_TEST_PRED_PROBA = model.predict(x_test)

y_test_pred = np.argmax(y_test_pred_proba,axis = 1)

#分类报告

print(classification_report(y_test,y_test_pred))

#Roc-auc

roc_auc = roc_auc_score(y_test,y_test_pred_proba,multi_class ='ovr')

打印(f'Roc-auc得分:{roc_auc}')
登录后复制

您是否在分类建模中犯了这些错误?

模型性能的可视化

通过绘制学习曲线的准确性和损失,可以看到该模型在训练过程中的性能,显示该模型是否过于拟合或不适合。我们使用早期停止来防止过度拟合,这有助于推广到新数据。

导入matplotlib.pyplot作为PLT

#情节培训和验证精度值

plt.figure(无花果=(14,5))

plt.subplot(1,2,1)

plt.plot(历史学家['准确性'])

plt.plot(history.history ['val_accuracy'])

plt.title(“模型精度”)

plt.xlabel('epoch')

plt.ylabel(“准确性”)

plt.legend(['train','验证'],loc =“左上”)

#情节培训和验证损失值

plt.subplot(1,2,2)

plt.plot(历史学家['损失'])

plt.plot(历史学家['val_loss'])

plt.title(“模型损失”)

plt.xlabel('epoch')

plt.ylabel(“损失”)

plt.legend(['train','验证'],loc =“左上”)

plt.show()
登录后复制

您是否在分类建模中犯了这些错误?

结论

细致的评估对于防止过度拟合和不足之类的问题至关重要。建立有效的分类模型不仅涉及选择和培训正确的算法。可以通过实施集合方法,正则化,调整超级计和交叉验证来增强模型一致性和可靠性。尽管我们的小型数据集可能没有经历过过度拟合,但采用这些方法可确保模型坚固且精确,从而在实际应用中更好地决策。

常见问题

Q1。为什么评估机器学习模型超出准确性很重要?

Ans。虽然准确性是关键指标,但并不总是给出完整的图片,尤其是在数据集中的情况下。评估一致性,鲁棒性和泛化等其他方面,可确保模型在各种情况下的表现良好,而不仅仅是在受控的测试条件下。

Q2。在建立分类模型时,要避免的常见错误是什么?

Ans。常见的错误包括过度拟合,拟合不足,数据泄漏,忽略类失衡以及无法正确验证模型。这些问题可能会导致模型在测试中表现良好,但在现实世界中的应用中失败。

Q3。我如何防止分类模型过度拟合?

Ans。通过交叉验证,正则化,早期停止和集合方法可以缓解过度拟合。这些方法有助于平衡模型的复杂性,并确保其良好地推广到新数据。

Q4。我应该用什么指标来评估分类模型的性能?

Ans。除了准确性之外,还要考虑诸如精度,召回,F1得分,ROC-AUC和损失之类的指标。这些指标提供了对模型性能的更加细微的理解,尤其是在处理不平衡数据并进行准确的预测方面。

以上是您是否在分类建模中犯了这些错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1672
14
CakePHP 教程
1428
52
Laravel 教程
1333
25
PHP教程
1277
29
C# 教程
1257
24
如何使用AGNO框架构建多模式AI代理? 如何使用AGNO框架构建多模式AI代理? Apr 23, 2025 am 11:30 AM

在从事代理AI时,开发人员经常发现自己在速度,灵活性和资源效率之间进行权衡。我一直在探索代理AI框架,并遇到了Agno(以前是Phi-

如何在SQL中添加列? - 分析Vidhya 如何在SQL中添加列? - 分析Vidhya Apr 17, 2025 am 11:43 AM

SQL的Alter表语句:动态地将列添加到数据库 在数据管理中,SQL的适应性至关重要。 需要即时调整数据库结构吗? Alter表语句是您的解决方案。本指南的详细信息添加了Colu

OpenAI以GPT-4.1的重点转移,将编码和成本效率优先考虑 OpenAI以GPT-4.1的重点转移,将编码和成本效率优先考虑 Apr 16, 2025 am 11:37 AM

该版本包括三种不同的型号,GPT-4.1,GPT-4.1 MINI和GPT-4.1 NANO,标志着向大语言模型景观内的特定任务优化迈进。这些模型并未立即替换诸如

Andrew Ng的新简短课程 Andrew Ng的新简短课程 Apr 15, 2025 am 11:32 AM

解锁嵌入模型的力量:深入研究安德鲁·NG的新课程 想象一个未来,机器可以完全准确地理解和回答您的问题。 这不是科幻小说;多亏了AI的进步,它已成为R

火箭发射模拟和分析使用Rocketpy -Analytics Vidhya 火箭发射模拟和分析使用Rocketpy -Analytics Vidhya Apr 19, 2025 am 11:12 AM

模拟火箭发射的火箭发射:综合指南 本文指导您使用强大的Python库Rocketpy模拟高功率火箭发射。 我们将介绍从定义火箭组件到分析模拟的所有内容

Google揭示了下一个2025年云上最全面的代理策略 Google揭示了下一个2025年云上最全面的代理策略 Apr 15, 2025 am 11:14 AM

双子座是Google AI策略的基础 双子座是Google AI代理策略的基石,它利用其先进的多模式功能来处理和生成跨文本,图像,音频,视频和代码的响应。由DeepM开发

您可以自己3D打印的开源人形机器人:拥抱面孔购买花粉机器人技术 您可以自己3D打印的开源人形机器人:拥抱面孔购买花粉机器人技术 Apr 15, 2025 am 11:25 AM

“超级乐于宣布,我们正在购买花粉机器人,以将开源机器人带到世界上,” Hugging Face在X上说:“自从Remi Cadene加入Tesla以来,我们已成为开放机器人的最广泛使用的软件平台。

DeepCoder-14b:O3-Mini和O1的开源竞赛 DeepCoder-14b:O3-Mini和O1的开源竞赛 Apr 26, 2025 am 09:07 AM

在AI社区的重大发展中,Agentica和AI共同发布了一个名为DeepCoder-14B的开源AI编码模型。与OpenAI等封闭源竞争对手提供代码生成功能

See all articles