首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >无比强大的机器学习扩展包MLxtend

无比强大的机器学习扩展包MLxtend

原创
作者头像
皮大大
发布于 2024-06-06 03:25:33
发布于 2024-06-06 03:25:33
31403
代码可运行
举报
运行总次数:3
代码可运行

公众号:尤而小屋 编辑:Peter 作者:Peter

大家好,我是Peter~

今天给大家介绍一个强大的机器学习建模扩展包:mlxtend。

mlxtend(machine learning extensions,机器学习扩展)是一个用于日常数据分析、机器学习建模的有用Python库。

mlxtend可以用作模型的可解释性,包括统计评估、数据模式、图像提取等。mlxtend是一个Python第三方库,用于支持机器学习和数据分析任务。

本文关键词:机器学习、mlxtend、聚类、分类、回归、模型可视化

1 MLxtend主要功能

MLxtend主要功能包含:

  1. 数据处理
    • 数据:提供了数据集加载和预处理的功能,方便用户处理各种格式的数据集。
    • 预处理:包括数据清洗、标准化、归一化等,确保数据质量,提高模型性能等
  2. 特征选择
    • 基于特征重要性的方法:这种方法通过评估各个特征对模型预测能力的贡献度来选择特征。
    • 递归特征消除:这是一种通过递归地考虑越来越小的特征子集来选择特征的方法。
    • 基于特征子集搜索的方法:这种方法通过搜索最优特征子集来选择特征,通常使用启发式或优化技术来实现。
  3. 模型评估
    • 分类器:提供了多种分类算法的实现,帮助用户进行分类任务的建模和评估。
    • 聚类器:提供了多种聚类算法,用于无监督学习中的样本分组。
    • 回归器:提供了回归分析的工具,用于预测连续值输出。
    • 评估方法:提供了模型性能评估的方法,如交叉验证、得分指标等。
  4. 数据可视化
    • 绘图:提供了丰富的绘图功能,帮助用户在数据探索和分析过程中可视化数据分布和模型结果。
    • 图像:支持图像数据的处理和分析,扩展了机器学习在视觉领域的应用。

官方学习地址:https://rasbt.github.io/mlxtend/

2 导入库

In 1:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
import itertools

from sklearn.linear_model import LogisticRegression # 逻辑回归分类
from sklearn.svm import SVC  # SVC
from sklearn.ensemble import RandomForestClassifier  # 随机森林分类
from mlxtend.classifier import EnsembleVoteClassifier  # 从mlxtend导入集成投票表决分类算法
from mlxtend.data import iris_data # 内置数据集
from mlxtend.plotting import plot_decision_regions  # 绘制决策边界

import warnings
warnings.filterwarnings('ignore')

3 MLxtend分类案例

提供一个分类模型相关的入门案例:

3.1 导入数据

In 2:

代码语言:python
代码运行次数:3
运行
AI代码解释
复制
X, y = iris_data()
X = X[:, [0,2]]  # 所有行,选择2个列

X[:3]

Out2:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
array([[5.1, 1.4],
       [4.9, 1.4],
       [4.7, 1.3]])

In 3:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
y[:3]

Out3:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
array([0, 0, 0])

3.2 初始化多个分类器

In 4:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 建立3个基线分类器
clf1 = LogisticRegression(random_state=0)
clf2 = RandomForestClassifier(random_state=0)
clf3 = SVC(random_state=0, probability=True)  # 输出概率值

3.3 使用集成投票表决分类器EnsembleVoteClassifier

In 5:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
eclf = EnsembleVoteClassifier(
    clfs=[clf1,clf2,clf3], # 使用3个基分类器
    weights=[2,1,1],  # 赋予权重
    voting="soft"  # 使用软投票方式
)

3.4 绘制决策边界

绘制分类器的决策边界:

In 6:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
list(itertools.product([0, 1],repeat=2))  # 计算笛卡尔积

Out6:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
[(0, 0), (0, 1), (1, 0), (1, 1)]

In 7:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
labels = ['Logistic Regression','Random Forest','RBF kernel SVM','Ensemble']

fig = plt.figure(figsize=(14, 10))
gs = gridspec.GridSpec(2, 2)

for clf, lab, grd in zip([clf1, clf2, clf3, eclf], # 分类器
                         labels,  # 分类器名称
                         # 设置图片的位置:[0,0],[0,1],[1,0],[1,1]
                         itertools.product([0, 1],repeat=2)):  
    clf.fit(X,y)
    ax = plt.subplot(gs[grd[0], grd[1]])  # 子图
    fig = plot_decision_regions(X=X,
                                y=y,
                               clf=clf,
                               legend=2)
    plt.title(lab)  # 标题
    
plt.show()

4 MLxtend回归案例

MLxtend内置了线性回归的算法LinearRegression

https://rasbt.github.io/mlxtend/user_guide/regressor/LinearRegression/

4.1 direct(默认)

LinearRegression类中有个参数method,取值不同:direct(默认)、qr(QR decomopisition)、svd(Singular Value Decomposition)、sgd(Stochastic Gradient Descent)

In 8:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
import matplotlib.pyplot as plt
from mlxtend.regressor import LinearRegression

# 模拟数据:从一维变成二维,使用np.newaxis函数
X = np.array([ 1.0, 2.1, 3.6, 4.2, 6])[:, np.newaxis]
y = np.array([ 1.0, 2.0, 3.0, 4.0, 5.0])

ne_lr = LinearRegression()  # 默认方法
ne_lr.fit(X, y)

#print('Intercept: %.2f' % ne_lr.b_)   # 截距
#print('Slope: %.2f' % ne_lr.w_[0])   # 斜率

def lin_regplot(X, y, model):
    plt.scatter(X, y, c='blue')
    plt.plot(X, model.predict(X), color='red')    
    return None

lin_regplot(X, y, ne_lr)
plt.show()

4.2 QR decomposition(QR分解)

In 9:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
import matplotlib.pyplot as plt
from mlxtend.regressor import LinearRegression

X = np.array([ 1.0, 2.1, 3.6, 4.2, 6])[:, np.newaxis]
y = np.array([ 1.0, 2.0, 3.0, 4.0, 5.0])

ne_lr = LinearRegression(method="qr")  # 
ne_lr.fit(X, y)

def lin_regplot(X, y, model):
    plt.scatter(X, y, c='blue')
    plt.plot(X, model.predict(X), color='red')    
    return None

lin_regplot(X, y, ne_lr)
plt.show()

4.3 Gradient Descent-梯度下降

In 10:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
import matplotlib.pyplot as plt
from mlxtend.regressor import LinearRegression

X = np.array([ 1.0, 2.1, 3.6, 4.2, 6])[:, np.newaxis]
y = np.array([ 1.0, 2.0, 3.0, 4.0, 5.0])

gd_lr = LinearRegression(method='sgd',
                         eta=0.005, 
                         epochs=100,
                         minibatches=1,  # 必须和method="sgd"联用
                         random_seed=123,
                         print_progress=3)
gd_lr.fit(X, y)

def lin_regplot(X, y, model):
    plt.scatter(X, y, c='blue')
    plt.plot(X, model.predict(X), color='red')    
    return

lin_regplot(X, y, gd_lr)
plt.show()

绘制损失函数值cost随迭代次数epochs的变化情况:

In 11:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
plt.plot(range(1, gd_lr.epochs+1), gd_lr.cost_)
plt.xlabel('Epochs')
plt.ylabel('Cost')

plt.ylim([0, 0.2])
plt.tight_layout()
plt.show()    

5 MLxtend聚类案例

mlxtend内置的是K-means算法

5.1 导入数据

In 12:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import matplotlib.pyplot as plt
from mlxtend.data import three_blobs_data

X, y = three_blobs_data()
X[:3]

Out12:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
array([[2.60509732, 1.22529553],
       [0.5323772 , 3.31338909],
       [0.802314  , 4.38196181]])

In 13:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
y

Out13:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
array([1, 2, 2, 2, 1, 2, 2, 1, 0, 2, 1, 0, 0, 2, 2, 0, 0, 1, 0, 1, 2, 1,
       2, 2, 0, 1, 1, 2, 0, 1, 0, 0, 0, 0, 2, 1, 1, 1, 2, 2, 0, 0, 2, 1,
       1, 1, 0, 2, 0, 2, 1, 2, 2, 1, 1, 0, 2, 1, 0, 2, 0, 0, 0, 0, 2, 0,
       2, 1, 2, 2, 2, 1, 1, 2, 1, 2, 2, 0, 0, 2, 1, 1, 2, 2, 1, 1, 1, 0,
       0, 1, 1, 2, 1, 2, 1, 2, 0, 0, 1, 1, 1, 1, 0, 1, 1, 2, 0, 2, 2, 2,
       0, 2, 1, 0, 2, 0, 2, 2, 0, 0, 2, 1, 2, 2, 1, 1, 0, 1, 0, 0, 0, 0,
       1, 0, 0, 0, 2, 0, 1, 0, 2, 2, 1, 1, 0, 0, 0, 0, 1, 1])

5.2 数据可视化

In 14:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
plt.scatter(X[:, 0], X[:, 1], c='black')
plt.show()

5.3 计算聚类质心

In 15:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
from mlxtend.cluster import Kmeans

km = Kmeans(k=3, # 聚类数
            max_iter=50,  # 最大迭代次数
            random_seed=1,  # 随机种子
            print_progress=3  # 每隔3次打印进度
           )

km.fit(X)
Iteration: 2/50 | Elapsed: 00:00:00 | ETA: 00:00:00

Out15:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
<mlxtend.cluster.kmeans.Kmeans at 0x281b745ff10>

In 16:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
km.iterations_  # 打印聚类的迭代次数

Out16:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
2

In 17:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
km.centroids_  # 打印聚类的中心

Out17:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
array([[-1.5947298 ,  2.92236966],
       [ 2.06521743,  0.96137409],
       [ 0.9329651 ,  4.35420713]])

5.4 聚类可视化

In 18:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 聚类结果
y_clust = km.predict(X)  

# 簇群1
plt.scatter(X[y_clust == 0, 0],
            X[y_clust == 0, 1],
            s=50,
            c="lightgreen",
            marker="s",
            label="cluster1"
           )
# 簇群2
plt.scatter(X[y_clust == 1, 0],
            X[y_clust == 1, 1],
            s=50,
            c="orange",
            marker="o",
            label="cluster2"
           )
# 簇群3
plt.scatter(X[y_clust == 2, 0],
            X[y_clust == 2, 1],
            s=50,
            c="lightblue",
            marker="v",
            label="cluster3"
           )

# 绘制聚类质心
plt.scatter(km.centroids_[:,0],
            km.centroids_[:,1],
            s=250,
            marker='*',
            c='red',
            label='centroids')

plt.legend(loc='lower left', 
           scatterpoints=1
          )

plt.grid()
plt.show()

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
基于MLxtend绘制分类模型的决策边界
继续更新机器学习扩展包MLxtend的文章。本文介绍如何使用MLxtend来绘制与分类模型相关的决策边界decision_regions。
皮大大
2024/06/06
3850
机器学习扩展包MLXtend绘制多种图形
mlxtend(machine learning extensions,机器学习扩展)是一个用于日常数据分析、机器学习建模的有用Python库。mlxtend可以用作模型的可解释性,包括统计评估、数据模式、图像提取等。
皮大大
2024/06/13
3810
机器学习分类模型决策边界,MLxtend轻松绘制!
https://rasbt.github.io/mlxtend/user_guide/classifier/LogisticRegression/
皮大大
2024/07/12
4960
机器学习集成学习与模型融合!
对比过kaggle比赛上面的top10的模型,除了深度学习以外的模型基本上都是集成学习的产物。集成学习可谓是上分大杀器,今天就跟大家分享在Kaggle或者阿里天池上面大杀四方的数据科学比赛利器---集成学习。
Datawhale
2020/08/20
1.1K0
机器学习集成学习与模型融合!
「超级干货大放送」机器学习十二种经典模型实例
目录 实例一:线性回归波士顿房价 实例二:KNN实现电影分类 实例三:基于线性回归预测波士顿房价 ​ 实例四:sklearn完成逻辑回归鸢尾花分类 实例五:支持向量机完成逻辑回归鸢尾花分类 实例六:使用决策树实现鸢尾花分类 实例七:使用随机森林实现鸢尾花分类 实例八:使用朴素贝叶斯进行鸢尾花分类 实例九:使用Kmeans来进行鸢尾花分类 实例十:K最近邻的使用方式 实例十一:kmeans的其他展示方式 实例十二:Kmeans实现鸢尾花聚类 ---- 实例一:线性回归波士顿房价 ''' 实例一:线性回归
荣仔_最靓的仔
2021/02/02
9830
「超级干货大放送」机器学习十二种经典模型实例
小姐姐带你一起学:如何用Python实现7种机器学习算法(附代码)
2018 区块链技术及应用峰会(BTA)·中国 倒计时 1 天 2018,想要follow最火的区块链技术?你还差一场严谨纯粹的技术交流会——2018区块链技术及应用峰会(BTA)·中国将于2018年3月30-31日登陆北京喜来登长城饭店。追求专业性?你要的这里全都有:当超强嘉宾阵容遇上业界同好的脑洞大联欢,1+1=无限可能,目前门票预购火热进行中。 活动详情: http://dwz.cn/7FI1Ch 编译 | 林椿眄 出品 | 人工智能头条(公众号ID:AI_Thinker) 【AI科技大本营导读】P
用户1737318
2018/06/05
1.8K0
[Python从零到壹] 十二.机器学习之回归分析万字总结全网首发(线性回归、多项式回归、逻辑回归)
监督学习(Supervised Learning)包括分类算法(Classification)和回归算法(Regression)两种,它们是根据类别标签分布的类型来定义的。回归算法用于连续型的数据预测,分类算法用于离散型的分布预测。回归算法作为统计学中最重要的工具之一,它通过建立一个回归方程用来预测目标值,并求解这个回归方程的回归系数。
Eastmount
2021/12/02
1.3K0
[Python从零到壹] 十二.机器学习之回归分析万字总结全网首发(线性回归、多项式回归、逻辑回归)
Python机器学习:数据拟合与广义线性回归
机器学习中的预测问题通常分为2类:回归与分类。 简单的说回归就是预测数值,而分类是给数据打上标签归类。 本文讲述如何用Python进行基本的数据拟合,以及如何对拟合结果的误差进行分析。 本例中使用一个2次函数加上随机的扰动来生成500个点,然后尝试用1、2、100次方的多项式对该数据进行拟合。 拟合的目的是使得根据训练数据能够拟合出一个多项式函数,这个函数能够很好的拟合现有数据,并且能对未知的数据进行预测。 代码如下: [python] view plaincopy import matplotlib.py
机器学习AI算法工程
2018/03/13
1.3K0
Python机器学习:数据拟合与广义线性回归
机器学习 pipeline 可视化
作为任何数据科学项目的一部分,数据可视化在理解更多可用数据和识别任何主要模式方面发挥着重要作用。
McGL
2020/10/30
1.2K0
机器学习 pipeline 可视化
python机器学习《基于逻辑回归的预测分类》
        本文所有代码均在阿里天池实验室运行,本机的jupyter notebook也可运行。除此之外,还需要导入numpy,matplotlib,sklearn,seaborn包。每期文章前面都会有环境搭建说明。文中的讲解知识点均是按照从上往下讲解,将一些平常未接触到的知识点先将清楚,再融合自己的想法去学习探索。
用户10271432
2023/01/02
8440
python机器学习《基于逻辑回归的预测分类》
8个常见的无监督聚类方法介绍和比较
本文约4500字,建议阅读9分钟本文将全面概述Scikit-Learn库中用于的聚类技术以及各种评估方法。 无监督聚类方法的评价指标必须依赖于数据和聚类结果的内在属性,例如聚类的紧凑性和分离性,与外部知识的一致性,以及同一算法不同运行结果的稳定性。 本文将分为2个部分,1、常见算法比较 2、聚类技术的各种评估方法 本文作为第一部分将介绍和比较各种聚类算法: K-Means Affinity Propagation Agglomerative Clustering Mean Shift Clusterin
数据派THU
2023/04/03
5350
8个常见的无监督聚类方法介绍和比较
机器学习:基于逻辑回归的分类预测
尽管名为“回归”,逻辑回归实际上是一种分类模型,广泛应用于各个领域。当今社会,深度学习在许多方面已取得了显著成果,使得传统方法相形见绌。然而,正是由于这些传统方法所具有的独特优势,它们依然在各个领域发挥着重要作用。
用户3578099
2023/09/01
5150
机器学习:基于逻辑回归的分类预测
sklearn库的学习
网上有很多关于sklearn的学习教程,大部分都是简单的讲清楚某一个方面。其实最好的教程就是官方文档(http://scikit-learn.org/stable/),但是官方文档讲述的太过于详细,同时很多人对官方文档的理解和结构认识上都不能很好的把握。我写这篇文章的目的是想用一篇文章讲清楚整个sklearn库,我会讲清楚怎么样用这个库,而不是讲清楚每一个知识点。(授人以鱼不如授人以渔)(本文很多都是从实践的角度出发,也仅仅只代表我个人的认识) 本篇文章主要从两个方面出发:1,介绍sklearn官方文档的类容和结构;2,从机器学习重要步骤出发讲清楚sklearn的使用方法。
全栈程序员站长
2022/11/02
4530
sklearn库的学习
机器学习决策树:sklearn分类和回归
1 逻辑回归和决策树分类比较 昨天的推送机器学习:对决策树剪枝,分析了决策树需要剪枝,今天再就这个话题,借助 sklearn 进一步分析决策树分类和回归时过拟合发生后,该如何解决的问题。 上周推送的机
double
2018/04/02
1.7K0
机器学习决策树:sklearn分类和回归
机器学习-LR模型
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/04
7130
stacking的实现-mxtend库「建议收藏」
环境情况: ################################################################## python 3.6 mlxtend 0.13.0 scikit-learn 0.19.0 ##################################################################
全栈程序员站长
2022/07/25
1.3K0
stacking的实现-mxtend库「建议收藏」
blender模型(sklearn模型融合)
机器学习中很多训练模型通过融合方式都有可能使得准确率等评估指标有所提高,这一块有很多问题想学习,于是写篇博客来介绍,主要想解决:
全栈程序员站长
2022/08/01
7600
blender模型(sklearn模型融合)
Numpy实现K-means算法
不同的k对应不同的结果,运行的时间也不相同。并且随着数据的增加,K-means计算的消耗成倍增长。
小小程序员
2023/12/21
2070
Numpy实现K-means算法
贷款违约预测-Task5 模型融合
Tip:此部分为零基础入门金融风控的 Task5 模型融合部分,欢迎大家后续多多交流。 赛题:零基础入门数据挖掘 - 零基础入门金融风控之贷款违约预测 项目地址:https://github.com/datawhalechina/team-learning-data-mining/tree/master/FinancialRiskControl
致Great
2020/10/10
1K0
贷款违约预测-Task5 模型融合
【机器学习-无监督学习】聚类
  本文开始我们讲解无监督学习算法。在之前的文章中,我们给模型的任务通常是找到样本
Francek Chen
2025/01/22
3930
【机器学习-无监督学习】聚类
推荐阅读
相关推荐
基于MLxtend绘制分类模型的决策边界
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档