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

L3学习打卡笔记

  • 🍨 本文为🔗365天深度学习训练营 中的学习记录博客
  • 🍖 原作者:K同学啊

机器学习|数据预处理&线性回归

  • 加载鸢尾花数据集
  • 数据标准化
  • 划分训练集和测试集
  • 逻辑回归模型
  • 预测结果
  • 评估预测结果
  • 函数详解
    • 函数原型
    • 参数含义

加载鸢尾花数据集

import numpy  as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn import datasets
iris = datasets.load_iris()

X = iris.data  # 特征矩阵
Y = iris.target  # 目标变量

数据标准化


from sklearn.preprocessing import StandardScaler
scaler   = StandardScaler()
X_scaled = scaler.fit_transform(X)

划分训练集和测试集


from sklearn.model_selection import train_test_split

X_train, X_test, Y_train, Y_test = train_test_split(X, Y,
                                                    test_size=0.25,
                                                    random_state=0)

X_train.shape,Y_train.shape
((112, 4), (112,))

逻辑回归模型


from sklearn.linear_model import LogisticRegression

model = LogisticRegression(max_iter=200)  # max_iter 是迭代次数,默认为100,这里设为200以保证收敛
model.fit(X_train, Y_train)

预测结果


y_pred = model.predict(X_test)

评估预测结果


from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
accuracy = accuracy_score(Y_test, y_pred)
print(f"模型的准确率: {accuracy:.2f}")

# 打印分类报告
print("分类报告:")
print(classification_report(Y_test, y_pred, target_names=iris.target_names))

# 打印混淆矩阵
print("混淆矩阵:")
print(confusion_matrix(Y_test, y_pred))
模型的准确率: 0.97
分类报告:
              precision    recall  f1-score   support

      setosa       1.00      1.00      1.00        13
  versicolor       1.00      0.94      0.97        16
   virginica       0.90      1.00      0.95         9

    accuracy                           0.97        38
   macro avg       0.97      0.98      0.97        38
weighted avg       0.98      0.97      0.97        38

混淆矩阵:
[[13  0  0]
 [ 0 15  1]
 [ 0  0  9]]

函数详解

函数原型

LogisticRegression(
    penalty='l2',                 # 正则化类型,'l1', 'l2', 'elasticnet', 'none'
    dual=False,                   # 双对偶或原始方法
    tol=0.0001,                   # 优化过程的容差
    C=1.0,                        # 正则化强度的倒数,较小的值表示较强的正则化
    fit_intercept=True,           # 是否拟合截距项
    intercept_scaling=1,          # 拦截(截距)的缩放系数
    class_weight=None,            # 给定类别的权重,'balanced' 或 dict
    random_state=None,            # 随机数种子
    solver='lbfgs',               # 优化算法,{'newton-cg', 'lbfgs', 'liblinear', 'sag', 'saga'}
    max_iter=100,                 # 最大迭代次数
    multi_class='auto',           # 处理多类分类问题的方法,{'auto', 'ovr', 'multinomial'}
    verbose=0,                    # 是否在训练过程中输出日志信息
    warm_start=False,             # 是否使用上次调用的解作为初始解
    n_jobs=None,                  # 并行处理的作业数量
    l1_ratio=None                 # 混合正则化的弹性网络的l1比例
)

参数含义

  • penalty:指定正则化类型。‘l2’ 为默认值,‘l1’ 适用于稀疏特征,‘elasticnet’ 是 L1 和 L2 的组合,‘none’ 不使用正则化。
  • dual:对数对偶或原始方法,默认值为 False,适用于样本数量大于特征数量的情况。
  • tol:停止优化的标准。
  • C:正则化强度的倒数,值越小正则化越强。
  • fit_intercept:是否拟合截距项。
  • intercept_scaling:仅在 solver=‘liblinear’ 时使用。
  • class_weight:用于处理类别不平衡问题,可以设置为 ‘balanced’ 或者自定义的权重字典。
  • random_state:随机数种子,保证结果的可重复性。
  • solver:选择优化算法,不同算法在不同数据集上的表现不同。
  • max_iter:优化算法的最大迭代次数。
  • multi_class:处理多类分类问题的方法,‘auto’ 会根据数据集自动选择。
  • verbose:控制训练过程中的详细输出。
  • warm_start:是否使用上次调用的结果作为初始值。
  • n_jobs:并行运算的作业数量,-1 表示使用所有CPU。
  • l1_ratio:仅在使用 ‘elasticnet’ 正则化时使用,控制 L1 和 L2 的比例。


http://www.kler.cn/a/301684.html

相关文章:

  • 某某科技笔试题
  • 前端埋点、监控
  • IDEA2024:右下角显示内存
  • java中volatile 类型变量提供什么保证?能使得一个非原子操作变成原子操作吗?
  • python的matplotlib实现数据分析绘图
  • 使用Python实现深度学习模型:智能食品配送优化
  • QT进行音频录制
  • elementUI中el-form 嵌套el-from 如何进行表单校验?
  • 【C++ 智能指针】RAII和四种智能指针你理解吗?
  • Python学习笔记--类型、运算符、循环
  • 物联网之PWM呼吸灯、脉冲、LEDC
  • 【Linux】 LTG:移动硬盘部署Ubuntu24.04
  • vue 父组件给子组件传值
  • 基于深度学习的创新设计的生成AI
  • 哪一种反爬虫策略更加人性化,不让用户感知到
  • 02.06、回文链表
  • 离散制造与流程制造的差异分析
  • 熟悉Kafka组成模块、Kafka消息提交的方式及优缺点
  • 在js中观察者模式讲解
  • cross-plateform 跨平台应用程序-02-有哪些主流技术栈?
  • 123.rk3399 uboot(2017.09) 源码分析3(2024-09-12)
  • CSS中的位置定位总结
  • 《2024中国数据要素产业图谱2.0版》重磅发布
  • Java将Word文档转换为PDF文件常用方法总结
  • Android 系统下:普通应用无缝安装,Launcher 应用安装遭遇罕见障碍解析
  • route-forward springboot实现路由转发程序