介绍
评估机器学习模型不仅是最后一步,而且是成功的基石。想象一下,建立一个高精度使其眼花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构建神经网络
确定错误
分类模型可能会遇到一些可能损害其有效性的挑战。必须识别和解决这些问题以建立可靠的模型。以下是要考虑的一些关键方面:
-
过于拟合和不足:
- 交叉验证:避免仅取决于单列火车测试拆分。利用K折的交叉验证来通过对各种数据段进行测试来更好地评估模型的性能。
- 正则化:高度复杂的模型可能会通过捕获数据中的噪声而过度。诸如修剪或正则化之类的正规化方法应用于惩罚复杂性。
- 高参数优化:彻底探索和调整超参数(例如,通过网格或随机搜索)来平衡偏差和方差。
-
合奏技术:
- 模型聚集:诸如随机森林或梯度增强的集合方法结合了多个模型的预测,通常会导致概括。这些技术可以在数据中捕获复杂的模式,同时通过平均单个模型错误来减轻过度拟合的风险。
-
班级失衡:
- 班级不平衡:在许多情况下,一个类可能比其他类别少,导致偏见的预测。必须根据问题使用诸如过采样,底漆或SMOTE之类的方法。
-
数据泄漏:
- 无意的泄漏:数据泄漏发生在训练集外部的信息会影响模型时导致膨胀性能指标时。至关重要的是要确保在培训期间完全看不见测试数据,并且要谨慎管理从目标变量获得的功能。
使用网格搜索改进逻辑回归的示例
来自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}”)
了解各种指标的意义
- 准确性:尽管重要的是,精度可能无法完全捕获模型的性能,尤其是在处理不平衡的班级分布时。
- 损失:损耗函数评估预测值与真实标签的对齐程度;较小的损耗值表示较高的精度。
- 精度,召回和F1得分:精确评估正面预测的正确性,召回衡量该模型在识别所有阳性案例方面的成功,以及F1得分平衡的精度和回忆。
- 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中文网其他相关文章!
![无法使用chatgpt!解释可以立即测试的原因和解决方案[最新2025]](https://img.php.cn/upload/article/001/242/473/174717025174979.jpg?x-oss-process=image/resize,p_40)
ChatGPT无法访问?本文提供多种实用解决方案!许多用户在日常使用ChatGPT时,可能会遇到无法访问或响应缓慢等问题。本文将根据不同情况,逐步指导您解决这些问题。 ChatGPT无法访问的原因及初步排查 首先,我们需要确定问题是出在OpenAI服务器端,还是用户自身网络或设备问题。 请按照以下步骤进行排查: 步骤1:检查OpenAI官方状态 访问OpenAI Status页面 (status.openai.com),查看ChatGPT服务是否正常运行。如果显示红色或黄色警报,则表示Open

2025年5月10日,麻省理工学院物理学家Max Tegmark告诉《卫报》,AI实验室应在释放人工超级智能之前模仿Oppenheimer的三位一体测试演算。 “我的评估是'康普顿常数',这是一场比赛的可能性

AI音乐创作技术日新月异,本文将以ChatGPT等AI模型为例,详细讲解如何利用AI辅助音乐创作,并辅以实际案例进行说明。我们将分别介绍如何通过SunoAI、Hugging Face上的AI jukebox以及Python的Music21库进行音乐创作。 通过这些技术,每个人都能轻松创作原创音乐。但需注意,AI生成内容的版权问题不容忽视,使用时务必谨慎。 让我们一起探索AI在音乐领域的无限可能! OpenAI最新AI代理“OpenAI Deep Research”介绍: [ChatGPT]Ope

ChatGPT-4的出现,极大地拓展了AI应用的可能性。相较于GPT-3.5,ChatGPT-4有了显着提升,它具备强大的语境理解能力,还能识别和生成图像,堪称万能的AI助手。在提高商业效率、辅助创作等诸多领域,它都展现出巨大的潜力。然而,与此同时,我们也必须注意其使用上的注意事项。 本文将详细解读ChatGPT-4的特性,并介绍针对不同场景的有效使用方法。文中包含充分利用最新AI技术的技巧,敬请参考。 OpenAI发布的最新AI代理,“OpenAI Deep Research”详情请点击下方链

CHATGPT应用程序:与AI助手释放您的创造力!初学者指南 ChatGpt应用程序是一位创新的AI助手,可处理各种任务,包括写作,翻译和答案。它是一种具有无限可能性的工具,可用于创意活动和信息收集。 在本文中,我们将以一种易于理解的方式解释初学者,从如何安装chatgpt智能手机应用程序到语音输入功能和插件等应用程序所独有的功能,以及在使用该应用时要牢记的要点。我们还将仔细研究插件限制和设备对设备配置同步

ChatGPT中文版:解锁中文AI对话新体验 ChatGPT风靡全球,您知道它也提供中文版本吗?这款强大的AI工具不仅支持日常对话,还能处理专业内容,并兼容简体中文和繁体中文。无论是中国地区的使用者,还是正在学习中文的朋友,都能从中受益。 本文将详细介绍ChatGPT中文版的使用方法,包括账户设置、中文提示词输入、过滤器的使用、以及不同套餐的选择,并分析潜在风险及应对策略。此外,我们还将对比ChatGPT中文版和其他中文AI工具,帮助您更好地了解其优势和应用场景。 OpenAI最新发布的AI智能

这些可以将其视为生成AI领域的下一个飞跃,这为我们提供了Chatgpt和其他大型语言模型聊天机器人。他们可以代表我们采取行动,而不是简单地回答问题或产生信息

使用chatgpt有效的多个帐户管理技术|关于如何使用商业和私人生活的详尽解释! Chatgpt在各种情况下都使用,但是有些人可能担心管理多个帐户。本文将详细解释如何为ChatGpt创建多个帐户,使用时该怎么做以及如何安全有效地操作它。我们还介绍了重要的一点,例如业务和私人使用差异,并遵守OpenAI的使用条款,并提供指南,以帮助您安全地利用多个帐户。 Openai


热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

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

热门文章

热工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver Mac版
视觉化网页开发工具

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

Dreamweaver CS6
视觉化网页开发工具