文章目录
- 1.sklearn介绍
- 2.sklearn的模块
- 3.监督学习和无监督学习
- 1. 监督学习 (Supervised Learning)
- 例子
 
- 2. 无监督学习 (Unsupervised Learning)
- 例子
 
 
 
- 4.估计器
- 估计器的主要特性和方法包括:
- 估计器的类型:
- 示例:使用 scikit-learn 中的估计器
 
 
- 5.模型持久化(sklearn使用joblib,pytorch使用pt/pth)
- 示例代码
 
 
- 6.监督学习和无监督学习的算法
- 监督学习算法:
- 无监督学习算法:
 
 
1.sklearn介绍
sklearn中文网址
 sklearn英文网址
2.sklearn的模块
在sklearn主页放置了主要的六个模块分别是Classification(分类)、Regression(回归)、Clustering(聚类)、Dimensionality Reduction(降维)、Model selection(模型评估)、Preprocessing(数据预处理)
 
 
 除此之外,还有一些模块如
-  1.树模型模块 ( sklearn.tree):
 决策树分类器(DecisionTreeClassifier)
 决策树回归器(DecisionTreeRegressor)
 随机森林分类器(RandomForestClassifier)
 随机森林回归器(RandomForestRegressor)
 梯度提升树分类器(GradientBoostingClassifier)
 梯度提升树回归器(GradientBoostingRegressor)
-  2.集成学习模块 ( sklearn.ensemble):
 AdaBoost 分类器(AdaBoostClassifier)
 AdaBoost 回归器(AdaBoostRegressor)
 堆叠分类器(StackingClassifier)
 堆叠回归器(StackingRegressor)
-  3.支持向量机模块 ( sklearn.svm):
 支持向量分类器(SVC)
 支持向量回归器(SVR)
 单类分类器(OneClassSVM)
-  4.神经网络模块 ( sklearn.neural_network):
 多层感知器分类器(MLPClassifier)
 多层感知器回归器(MLPRegressor)
-  5.模型持久化模块 ( sklearn.base):
 模型保存和加载(joblib、dump、load)
具体可以参考官网的examples网页,左侧的就是支持的模块,可以点进去查看使用方法。
 https://scikit-learn.org/stable/auto_examples/index.html
 
3.监督学习和无监督学习
机器学习中的问题类型通常根据数据的特性、学习任务的目标以及用于训练模型的数据标签的可用性来分类。以下是您提到的四类问题的详细解释:
1. 监督学习 (Supervised Learning)
监督学习是一种机器学习方法,其中模型从标记的训练数据学习,每个训练样本都包括输入和相应的输出标签。监督学习的目标是学习一个映射规则,使得模型能够根据新的输入预测输出。它进一步分为两类主要任务:
- 分类 (Classification):预测离散标签。
- 回归 (Regression):预测连续值。
例子
- 分类:邮件分类(垃圾邮件检测)、疾病诊断、图像识别。
- 回归:房价预测、股票价格预测、天气预测。
2. 无监督学习 (Unsupervised Learning)
无监督学习涉及无标签数据,模型必须自行发现输入数据中的结构。无监督学习通常用于聚类、关联规则学习和降维。这种类型的学习对于探索数据和发现数据中的隐藏模式非常有用。
例子
- 聚类:市场细分、社交网络分析、图像压缩。
- 关联规则学习:购物篮分析、推荐系统。
- 降维:PCA(主成分分析)、t-SNE(t-分布随机邻域嵌入)。
4.估计器
在机器学习中,估计器(Estimator)是一个通用术语,指的是任何可以从数据中学习并做出预测的算法或模型。在 scikit-learn 这样的机器学习库中,估计器通常是一个实现了特定接口的类,这个接口包括至少两个方法:fit() 和 predict()。估计器的目标是捕捉数据中的模式,并能够对新数据做出预测或决策。
估计器的主要特性和方法包括:
-  fit(X, y): - 这是训练模型的主要方法。它接受输入数据 X和目标变量y,并根据这些数据来训练估计器。在训练过程中,估计器会调整其内部参数以最好地拟合数据。
 
- 这是训练模型的主要方法。它接受输入数据 
-  predict(X): - 一旦估计器被训练,predict()方法用于对新数据X进行预测。它使用fit()方法训练得到的模型参数来预测数据的输出。
 
- 一旦估计器被训练,
-  score(X, y) (可选): - 许多估计器还实现了 score()方法,它返回一个分数,表示模型在给定数据X和y上的性能。对于分类任务,这通常是准确率;对于回归任务,可能是均方误差或其他指标。
 
- 许多估计器还实现了 
-  get_params() 和 set_params(): - 这些方法允许用户获取或设置估计器的参数。这在超参数调整和模型配置中非常有用。
 
估计器的类型:
-  分类器(Classifiers): - 用于分类任务的估计器,如逻辑回归、支持向量机、决策树等。
 
-  回归器(Regressors): - 用于预测连续值的估计器,如线性回归、岭回归等。
 
-  聚类器(Clusterers): - 用于将数据分组的估计器,如 K-Means、层次聚类等。
 
-  降维器(Dimensionality Reducers): - 用于减少数据维度的估计器,如主成分分析(PCA)、t-SNE等。
 
示例:使用 scikit-learn 中的估计器
from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression
# 创建数据
X, y = make_regression(n_samples=100, n_features=1, noise=20)
# 创建估计器实例
model = LinearRegression()
# 训练模型
model.fit(X, y)
# 进行预测
predictions = model.predict(X)
# 评估模型
score = model.score(X, y)
print("模型得分:", score)
在这个例子中,LinearRegression 是一个估计器,用于解决回归问题。它通过 fit() 方法学习数据,并通过 predict() 方法进行预测。
估计器是机器学习中的核心概念,为算法的实现和使用提供了一个统一和灵活的框架。
5.模型持久化(sklearn使用joblib,pytorch使用pt/pth)
模型持久化是指将训练好的机器学习模型保存到磁盘上,以便将来可以重新加载和使用,而无需重新训练。在Python中,有几个常用的库可以用来进行模型持久化:
-  pickle: - pickle是Python的标准库,可以序列化和反序列化Python对象结构。
- 产生 .pkl文件。
 
-  joblib: - joblib是一个专为Python中大型数组和模型持久化设计的库,常用于机器学习任务。
- 特别适合用于包含大量数值数据的对象,如NumPy数组和scikit-learn模型。
- 产生 .joblib文件。
 
-  PyTorch torch.save:- PyTorch提供了 torch.save函数来保存模型或模型的状态字典。
- 产生 .pt或.pth文件。
 
- PyTorch提供了 
-  TensorFlow tf.keras.models.save:- TensorFlow和Keras提供了 save方法来保存模型。
- 可以保存为HDF5文件(.h5)或SavedModel格式(包含.pb和变量的目录)。
 
- TensorFlow和Keras提供了 
-  h5py: - h5py是用于与HDF5文件交互的Python库,Keras等深度学习框架使用它来保存模型。
- 产生 .h5文件。
 
-  joblib 和 pickle 比较: - joblib在处理大数组时通常比- pickle更高效,因为它采用了更高效的压缩和存储机制。
- joblib也更适合持久化包含大量数值数据的模型,如机器学习模型。
 
示例代码
使用 joblib 保存和加载模型:
from sklearn.linear_model import LinearRegression
from joblib import dump, load
# 训练模型
model = LinearRegression()
model.fit(X_train, y_train)
# 保存模型
dump(model, 'model.joblib')
# 加载模型
model = load('model.joblib')
使用 pickle 保存和加载模型:
import pickle
# 训练模型
model = LinearRegression()
model.fit(X_train, y_train)
# 保存模型
with open('model.pkl', 'wb') as file:
    pickle.dump(model, file)
# 加载模型
with open('model.pkl', 'rb') as file:
    model = pickle.load(file)
模型持久化是机器学习工作流中的一个重要步骤,它使得模型可以在不同的环境中重用,也便于模型的版本控制和部署。
6.监督学习和无监督学习的算法
监督学习算法:
-  线性模型: - 包括线性回归、逻辑回归等,它们假定数据可以通过线性方程进行建模。
 
-  线性判别分析(LDA): - 一种经典的分类技术,旨在找到将不同类别最好地区分开的线性组合。
 
-  二次判别分析(QDA): - 类似于 LDA,但它不假设各类具有相同的协方差矩阵。
 
-  内核岭回归: - 岭回归的扩展,使用内核方法允许在高维空间中拟合数据。
 
-  支持向量机(SVM): - 强大的分类器,通过寻找最大间隔分割不同类别的数据。
 
-  随机梯度下降(SGD): - 用于优化大规模数据集的算法,通过随机梯度下降来快速逼近最优解。
 
-  最近邻方法(KNN): - 一种基于实例的学习,通过查找最近的邻居来进行预测。
 
-  高斯过程: - 一种基于概率的监督学习算法,用于回归和分类。
 
-  交叉分解: - 一种模型评估方法,如交叉验证,用于提高模型泛化能力的估计。
 
-  朴素贝叶斯: - 基于贝叶斯定理的简单但有效的概率分类器。
 
-  决策树: - 通过树状图模型进行决策的简单直观的算法。
 
-  集成学习方法: - 包括随机森林、梯度提升树等,通过组合多个模型来提高预测性能。
 
-  多类和多标签算法: - 用于处理多于两个类别的分类问题,以及每个实例可以同时属于多个类别的情况。
 
-  特征选择: - 选择最有信息量的特征以提高模型性能。
 
-  半监督学习: - 结合少量标记数据和大量未标记数据进行学习。
 
-  等式回归: - 一种回归方法,旨在找到最佳拟合数据的模型。
 
-  概率校准: - 调整分类器的概率输出,使其更接近真实概率。
 
-  神经网络模型(有监督): - 包括多层感知器等,通过学习数据的复杂模式来进行预测。
 
无监督学习算法:
-  高斯混合模型(GMM): - 用于聚类的概率模型,假设数据由多个高斯分布混合而成。
 
-  流形学习: - 旨在在低维流形上学习数据的高维结构。
 
-  聚类: - 将数据分组的无监督学习方法,如 K-Means、层次聚类等。
 
-  双聚类: - 同时对数据的行和列进行聚类。
 
-  信号分量分解(矩阵因子分解问题): - 包括奇异值分解(SVD)等,用于发现数据的潜在结构。
 
-  协方差估计: - 估计变量之间关系的统计方法。
 
-  新奇点与离群点检测: - 识别数据集中的异常值或新奇点。
 
-  密度估计: - 估计输入数据的概率密度函数。
 
-  神经网络模型(无监督): - 自动编码器等,通过学习数据的有效表示来进行特征学习。
 


















