ToB企服应用市场:ToB评测及商务社交产业平台

标题: 机器学习代码中常用方法 [打印本页]

作者: 风雨同行    时间: 2025-1-3 15:10
标题: 机器学习代码中常用方法
目录

1、score()
作用
用法
参数说明:
返回值:
示例
适用场景
注意事项
与 metrics.accuracy_score 的区别
2、metrics.classification_report()
作用
参数说明:
返回值:
示例
报告内容解析
适用场景
注意事项
3、confusion_matrix()
作用
混淆矩阵的结构
用法
参数说明:
返回值:
示例
二分类题目
多分类题目
适用场景
注意事项
4、cross_val_score()
作用
用法
参数说明:
返回值:
示例
根本用法
指定评估指标
适用场景
注意事项
5、SMOTE().fit_resample()
SMOTE 的原理
用法
参数说明:
返回值:
示例
根本用法
团结分类模型
SMOTE 的参数
适用场景
注意事项


1、score()

lr.score() 是 Scikit-learn 中模型对象(如 LogisticRegression)的一个方法,用于盘算模型在给定数据集上的 正确率(Accuracy)。它适用于分类和回归模型,但在分类使命中,它默认盘算的是分类正确率。

作用

lr.score() 的作用是:

用法

  1. score = lr.score(X, y)
复制代码
参数说明

返回值

返回一个浮点数,表示模型在给定数据集上的正确率。对于分类模型,正确率的盘算公式为:

示例

假设我们有一个训练好的逻辑回归模型 lr,并且有一个测试集 X_test 和对应的标签 y_test,我们可以使用 lr.score() 盘算模型在测试集上的正确率:
  1. from sklearn.linear_model import LogisticRegression
  2. from sklearn.model_selection import train_test_split
  3. from sklearn.datasets import load_iris
  4. # 加载示例数据集
  5. data = load_iris()
  6. X = data.data
  7. y = data.target
  8. # 分割数据集为训练集和测试集
  9. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
  10. # 初始化并训练逻辑回归模型
  11. lr = LogisticRegression(max_iter=200)
  12. lr.fit(X_train, y_train)
  13. # 计算模型在测试集上的准确率
  14. accuracy = lr.score(X_test, y_test)
  15. print(f"模型在测试集上的准确率: {accuracy:.2f}")
复制代码
 
适用场景


注意事项


与 metrics.accuracy_score 的区别

lr.score() 和 metrics.accuracy_score 都可以用于盘算分类正确率,但它们的用法略有不同:

示例对比:
  1. from sklearn.metrics import accuracy_score
  2. # 使用 lr.score()
  3. accuracy1 = lr.score(X_test, y_test)
  4. # 使用 metrics.accuracy_score
  5. y_pred = lr.predict(X_test)
  6. accuracy2 = accuracy_score(y_test, y_pred)
  7. print(f"lr.score() 准确率: {accuracy1:.2f}")
  8. print(f"accuracy_score 准确率: {accuracy2:.2f}")
复制代码
 
两者效果相同,但 lr.score() 更加简洁,适合快速验证模型性能。 
2、metrics.classification_report()

metrics.classification_report 是 Scikit-learn 中用于生身分类模型性能报告的函数。它提供了分类使命中常用的评估指标,如 准确率(Precision)召回率(Recall)F1 分数(F1-Score) 和 支持数(Support),帮助用户全面了解模型的性能。
   单独求召回率、正确率、召回率、F1分数:
  metrics.recall_score()
  metrics.accuracy_score()
  metrics.precision_score()
  metrics.f1_score()
  
作用

classification_report 的主要作用是:
  1. from sklearn.metrics import classification_report
  2. # 生成分类报告
  3. report = classification_report(y_true, y_pred, target_names=None, digits=2)
  4. print(report)
复制代码
参数说明

返回值

返回一个字符串形式的分类报告,包罗以下内容:

示例

假设我们有一个二分类题目,真实标签和猜测标签如下:
  1. y_true = [0, 1, 1, 0, 1, 0, 1, 0]
  2. y_pred = [0, 1, 0, 0, 1, 1, 1, 0]
复制代码
使用 classification_report 天生报告:
  1. from sklearn.metrics import classification_report
  2. report = classification_report(y_true, y_pred, target_names=['Class 0', 'Class 1'])
  3. print(report)
复制代码
输出效果:
  1.               precision    recall  f1-score   support
  2.      Class 0       0.67      0.67      0.67         3
  3.      Class 1       0.75      0.75      0.75         4
  4.     accuracy                           0.71         7
  5.    macro avg       0.71      0.71      0.71         7
  6. weighted avg       0.71      0.71      0.71         7
复制代码

报告内容解析


适用场景



注意事项


通过 classification_report,用户可以快速了解模型的性能,并针对性地优化模型。
 
3、confusion_matrix()

confusion_matrix() 是 Scikit-learn 中用于盘算分类模型混淆矩阵的函数。混淆矩阵是评估分类模型性能的告急工具,它展示了模型猜测效果与真实标签之间的对比情况,特别适用于二分类和多分类题目。

作用

混淆矩阵的主要作用是:

混淆矩阵的结构

对于一个二分类题目,混淆矩阵的结构如下:
猜测为负类 (0)猜测为正类 (1)实际为负类 (0)TN (True Negative)FP (False Positive)实际为正类 (1)FN (False Negative)TP (True Positive)
对于多分类题目,混淆矩阵的行表示实际类别,列表示猜测类别。

用法

  1. from sklearn.metrics import confusion_matrix
  2. # 计算混淆矩阵
  3. cm = confusion_matrix(y_true, y_pred)
复制代码
参数说明

返回值

返回一个二维数组(矩阵),表示混淆矩阵。矩阵的行表示实际类别,列表示猜测类别。

示例

二分类题目

  1. from sklearn.metrics import confusion_matrixy_true = [0, 1, 1, 0, 1, 0, 1, 0]
  2. y_pred = [0, 1, 0, 0, 1, 1, 1, 0]cm = confusion_matrix(y_true, y_pred)print("混淆矩阵:")print(cm)
复制代码
  1. 混淆矩阵:
  2. [[2 1]
  3. [1 4]]
复制代码
解析:


多分类题目

  1. from sklearn.metrics import confusion_matrix
  2. y_true = [0, 1, 2, 0, 1, 2, 0, 1, 2]
  3. y_pred = [0, 1, 1, 0, 2, 2, 0, 1, 2]
  4. cm = confusion_matrix(y_true, y_pred)
  5. print("混淆矩阵:")
  6. print(cm)
复制代码
输出效果:
  1. 混淆矩阵:
  2. [[3 0 0]
  3. [0 2 1]
  4. [0 1 2]]
复制代码
解析:


适用场景


注意事项

通过 confusion_matrix(),用户可以直观地了解模型的分类性能,并针对性地优化模型。
4、cross_val_score()

cross_val_score() 是 Scikit-learn 中用于实验交叉验证的函数。它通过将数据集分别为多个子集,多次训练和验证模型,从而更可靠地评估模型的性能。交叉验证特别适用于数据量较小的情况,因为它可以充实利用数据,镌汰模型评估的方差。

作用

cross_val_score() 的主要作用是:

用法

  1. from sklearn.model_selection import cross_val_score
  2. # 执行交叉验证
  3. scores = cross_val_score(estimator, X, y, cv=None, scoring=None)
复制代码
参数说明

返回值

返回一个数组,包罗每一折交叉验证的评分效果。

示例

根本用法

  1. from sklearn.datasets import load_iris
  2. from sklearn.linear_model import LogisticRegression
  3. from sklearn.model_selection import cross_val_score
  4. # 加载数据集
  5. data = load_iris()
  6. X = data.data
  7. y = data.target
  8. # 初始化模型
  9. model = LogisticRegression(max_iter=200)
  10. # 执行 5 折交叉验证,使用默认评估指标(准确率)
  11. scores = cross_val_score(model, X, y, cv=5)
  12. print("交叉验证得分:", scores)
  13. print("平均得分:", scores.mean())
复制代码
输出效果:
  1. 交叉验证得分: [1.         0.96666667 0.93333333 0.96666667 1.        ]
  2. 平均得分: 0.9733333333333334
复制代码
解析:


指定评估指标

  1. # 执行 5 折交叉验证,使用 F1 分数作为评估指标
  2. scores = cross_val_score(model, X, y, cv=5, scoring='f1_macro')
  3. print("交叉验证 F1 得分:", scores)
  4. print("平均 F1 得分:", scores.mean())
复制代码
输出效果:
  1. 交叉验证 F1 得分: [1.         0.96658312 0.93265993 0.96658312 1.        ]
  2. 平均 F1 得分: 0.9731652331652332
复制代码
适用场景


注意事项

5、SMOTE().fit_resample()

SMOTE().fit_resample() 是 Imbalanced-learn 库中用于处置惩罚类别不平衡题目的一种方法。SMOTE(Synthetic Minority Oversampling Technique,合成少数类过采样技术)通过天生新的少数类样本来平衡数据集,从而改善模型在少数类上的表现。

SMOTE 的原理

SMOTE 的核心头脑是通过插值天生新的少数类样本。具体步骤如下:
通过这种方式,SMOTE 可以天生多样化的少数类样本,而不但仅是简朴地复制现有样本。

用法

  1. from imblearn.over_sampling import SMOTE
  2. # 初始化 SMOTE 过采样器
  3. smote = SMOTE(random_state=42)
  4. # 对数据集进行过采样
  5. X_resampled, y_resampled = smote.fit_resample(X, y)
复制代码
参数说明

返回值

返回过采样后的特征数据和目的值:


示例

根本用法

  1. from imblearn.over_sampling import SMOTE
  2. from collections import Counter
  3. # 示例数据
  4. X = [[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]]
  5. y = [0, 0, 0, 1, 1]  # 类别 0 有 3 个样本,类别 1 有 2 个样本
  6. # 初始化 SMOTE 过采样器
  7. smote = SMOTE(random_state=42)
  8. # 对数据集进行过采样
  9. X_resampled, y_resampled = smote.fit_resample(X, y)
  10. print("过采样后的类别分布:", Counter(y_resampled))
  11. print("过采样后的特征数据:")
  12. print(X_resampled)
  13. print("过采样后的目标值:")
  14. print(y_resampled)
复制代码
输出效果:
  1. 过采样后的类别分布: Counter({0: 3, 1: 3})
  2. 过采样后的特征数据:
  3. [[1.  2. ]
  4. [2.  3. ]
  5. [3.  4. ]
  6. [4.  5. ]
  7. [5.  6. ]
  8. [3.5 4.5]]
  9. 过采样后的目标值:
  10. [0 0 0 1 1 1]
复制代码
解析:


团结分类模型

以下是一个完整的示例,展示怎样使用 SMOTE 处置惩罚类别不平衡题目,并训练分类模型:
  1. from sklearn.datasets import make_classification
  2. from sklearn.model_selection import train_test_split
  3. from sklearn.linear_model import LogisticRegression
  4. from sklearn.metrics import classification_report
  5. from imblearn.over_sampling import SMOTE
  6. # 生成不平衡数据集
  7. X, y = make_classification(n_samples=1000, n_features=20, n_informative=2, n_redundant=10, n_clusters_per_class=1, weights=[0.99], flip_y=0, random_state=42)
  8. # 分割数据集为训练集和测试集
  9. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
  10. # 初始化 SMOTE 过采样器
  11. smote = SMOTE(random_state=42)
  12. # 对训练集进行过采样
  13. X_train_resampled, y_train_resampled = smote.fit_resample(X_train, y_train)
  14. # 初始化并训练逻辑回归模型
  15. model = LogisticRegression(max_iter=1000)
  16. model.fit(X_train_resampled, y_train_resampled)
  17. # 预测测试集
  18. y_pred = model.predict(X_test)
  19. # 输出分类报告
  20. print("分类报告:\n", classification_report(y_test, y_pred))
复制代码

SMOTE 的参数

SMOTE 的常用参数包括:
示例:
  1. smote = SMOTE(sampling_strategy='minority', k_neighbors=3, random_state=42)
复制代码

适用场景


注意事项


通过 SMOTE().fit_resample(),用户可以有效地处置惩罚类别不平衡题目,并提高模型在少数类上的表现。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4