机器学习入门-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/
本文仅为个人学习使用所写。