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

机器学习入门-Scikit-learn

目录

一.Sklearn基本介绍

二.以鸢尾花数据集为例,理解基础运用

1.导入包

2.加载数据集

3.数据预处理

4.数据集拆分

5.模型训练

6.模型评估

7.模型保存和加载

三.碎碎念

一.Sklearn基本介绍

       scikit-learn是一个开源的Python机器学习库,提供了大量易于使用的工具和算法,用于数据挖掘和数据分析。它支持多种学习算法,包括分类、回归、聚类、降维等,并且易于集成到Python项目中。

       我们在前文使用到Sklearn库,由于存在很多理论疑惑,于是开始补这块知识。这里有官方的用户指南和API,都可以在里面找到详细的解释。参考文档如下:

https://scikit-learn.org/stable/user_guide.html

二.以鸢尾花数据集为例,理解基础运用

1.导入包

from sklearn import datasets    
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, classification_report
import joblib  # 用于保存和加载模型

2.加载数据集


# 加载鸢尾花数据集
iris=datasets.load_iris()
X,y=iris.data,iris.target

print(iris.DESCR) # 查看数据集的基本信息

dataset:以下是自带的一些数据集,可以直接使用,比如load_iris就是鸢尾花数据集。

API使用介绍:

sklearn.datasets.load_iris(*, return_X_y = False, as_frame = False)

3.数据预处理


# 标准化特征
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

        StandardScaler:是一个预处理工具,用于标准化(或归一化)特征数据。标准化是指将特征数据按照比例缩放,使之落入一个小的特定区间,将数据调整为均值为0,标准差为1,使得每个特征的数据都服从标准正态分布。

       fit_transform:这个方法结合了fit和transform两个步骤,fit方法会计算每个特征的均值和标准差。transform方法使用fit 方法学习到的统计属性来转换(或标准化)数据,注意对于测试数据或新数据,应该只使用transform方法,而不是fit_transform。

4.数据集拆分


# 将数据集分割为训练集和测试集
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42)

train_test_split:按照用户的需要指定划分为训练集和测试集。

5.模型训练


# 初始化逻辑回归模型
logreg = LogisticRegression(max_iter=200)  # 设置最大迭代次数以避免警告
# 训练模型
logreg.fit(X_train, y_train)

LogisticRegression:逻辑回归,主要用于二分类问题。

6.模型评估


# 预测测试集
y_pred = logreg.predict(X_test)
# 评估模型性能
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")
# 打印分类报告
print(classification_report(y_test, y_pred, target_names=iris.target_names))

accuracy_score(y_true,y_pred,normalize=True, sample_weight=None)  准确率获取。

classification_report:分类报告。

7.模型保存和加载


# 保存模型
joblib.dump(logreg, 'iris_logreg_model.joblib')
# 加载模型
loaded_logreg = joblib.load('iris_logreg_model.joblib')
# 使用加载的模型进行预测(可选)
y_pred_loaded = loaded_logreg.predict(X_test)print(f"Loaded Model Accuracy: {accuracy_score(y_test, y_pred_loaded)}")

三.碎碎念

      当你开始接受新事物的时候,你会发现完蛋入坑了,学不完,根本学不完。很多知识都是新的,充满着好奇心地去学,但另一方面会开始自卑,为什么不知道这些东西呢?所以"知道的越多你会发现自己知道的越少"也是有道理的。这个库里面的每个函数都涉及到相当多的知识,比如数据归一化工具:MinMaxScaler,逻辑回归LogisticRegression等都涉及到大量的数学推导。只能做到在使用到的知识里尽可能多的去深入理解原理再加以运用,当出现效果后再来反反复复做调参优化,再次深入研究。想一次性完完全全吸收所有知识,哈哈,那我暂时办不到。

        频繁记录的目的也可能是为了防止忘记,时而拿出来回忆。

        

        本文参考官方文档:https://scikit-learn.org/stable/

        本文仅为个人学习使用所写。


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

相关文章:

  • [SUCTF2019]SignIn
  • Python Selenium:Web自动化测试与爬虫开发
  • Java编程,配置mongoUri连接mongodb时,需对特殊字符进行转义
  • 大数运算(加减乘除和输入、输出模块)
  • Linux: network: tcp: TCP: request_sock_TCP: Possible SYN flooding on port 3868.
  • 使用最小花费爬楼梯(DP)
  • 46.坑王驾到第十期:vscode 无法使用 tsc 命令
  • 04 - 尚硅谷 - MQTT 客户端编程
  • 一加ACE 3 Pro手机无法连接电脑传输文件问题
  • Window11+annie 视频下载器安装
  • Sketch在线版不存在?即时设计来填补空白
  • Flink【基于时间的双流联结 Demo】
  • 时序预测 | Matlab实现PSO-Elman粒子群优化递归神经网络时间序列预测
  • raw文件如何打开
  • shell编程之sed
  • 探索 Python 任务自动化的新境界:Invoke 库揭秘
  • 如何用Python统计Excel文件中的特定字段数量
  • 【Java系列】随机生成大小写混合的卡密
  • 大数取模 详解
  • Redis除了做缓存,还能做什么???
  • 密码系统设计实验3-2
  • SQLite 管理工具 SQLiteStudio 3.4.5 发布
  • C语言中的指针和字符串的赋值
  • 3.13MayBeSomeJava that are BUTTON and listener
  • 基于网页的大语言模型聊天机器人
  • java中的最小堆