Python 机器学习 基础 之 【常用机器学习库】 Matplotlib 数据可视化库

Python 机器学习 基础 之 【常用机器学习库】 Matplotlib 数据可视化库

目录

Python 机器学习 基础 之 【常用机器学习库】 Matplotlib 数据可视化库

一、简单介绍

二、Matplotlib 基础

1、安装 Matplotlib

2、导入 Matplotlib

3、基本绘图

3.1 绘制简单折线图

3.2、绘制多条折线

4、常见图表类型

4.1 散点图

4.2 条形图

4.3 直方图

4.4 饼图

5、图表定制

5.1 修改线条和点样式

5.2 添加网格和文本注释

6、子图

7、高级功能

7.1 使用 Pandas 数据绘图

7.2 动态更新图表

三、在机器学习中使用到 Matplotlib 的简单示例

1、数据探索与初步分析

1.1 数据加载与初步分析

1.2 绘制特征分布直方图

2、特征间关系的可视化

2.1 绘制散点图

2.2 绘制相关性热图

3、模型结果的可视化

3.1 绘制预测结果与实际值的对比图

3.2 绘制残差图

4、分类结果的可视化

4.1 绘制混淆矩阵

4.2 绘制ROC曲线


一、简单介绍

Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。Python是一种解释型脚本语言,可以应用于以下领域: Web 和 Internet开发、科学计算和统计、人工智能、教育、桌面界面开发、软件开发、后端开发、网络爬虫。

Python 机器学习是利用 Python 编程语言中的各种工具和库来实现机器学习算法和技术的过程。Python 是一种功能强大且易于学习和使用的编程语言,因此成为了机器学习领域的首选语言之一。Python 提供了丰富的机器学习库,如Scikit-learn、TensorFlow、Keras、PyTorch等,这些库包含了许多常用的机器学习算法和深度学习框架,使得开发者能够快速实现、测试和部署各种机器学习模型。

Python 机器学习涵盖了许多任务和技术,包括但不限于:

  1. 监督学习:包括分类、回归等任务。
  2. 无监督学习:如聚类、降维等。
  3. 半监督学习:结合了有监督和无监督学习的技术。
  4. 强化学习:通过与环境的交互学习来优化决策策略。
  5. 深度学习:利用深度神经网络进行学习和预测。

通过 Python 进行机器学习,开发者可以利用其丰富的工具和库来处理数据、构建模型、评估模型性能,并将模型部署到实际应用中。Python 的易用性和庞大的社区支持使得机器学习在各个领域都得到了广泛的应用和发展。

二、Matplotlib 基础

Matplotlib 是一个强大的 Python 数据可视化库,广泛用于生成各种静态、动态和交互式图表。它是机器学习中进行数据可视化和分析的重要工具之一。本文将介绍 Matplotlib 的基本概念和操作。

1、安装 Matplotlib

在开始之前,请确保已安装 Matplotlib。您可以使用以下命令安装:

pip install matplotlib

2、导入 Matplotlib

在使用 Matplotlib 之前,需要先导入它。通常我们会用 plt 作为 Matplotlib 的别名:

import matplotlib.pyplot as plt

3、基本绘图

3.1 绘制简单折线图
import matplotlib.pyplot as plt# 准备数据
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]# 创建折线图
plt.plot(x, y)# 添加标题和标签
plt.title('Simple Line Plot')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')# 保存图表
plt.savefig('Images/savedImage.png', bbox_inches='tight')
# 打印结果:图表已保存至 'Images/savedImage.png'# 显示图表
plt.show()
# 打印结果:图表已显示在屏幕上

在实际使用中,plt.plot(x, y) 会创建一个折线图,显示x和y数据的关系。plt.title, plt.xlabel, 和 plt.ylabel 分别添加图表的标题和X、Y轴的标签。

plt.savefig 将图表保存到文件中,路径为 'Images/savedImage.png'。请确保 'Images' 文件夹存在于您的工作目录中,否则保存操作可能会失败。bbox_inches='tight' 参数确保所有图表内容都被包含在保存的图像中。

plt.show() 会显示图表。在某些环境(如Jupyter笔记本)中,图表可能会直接显示在代码旁边,而在其他环境(如Python脚本运行)中,可能会打开一个窗口来显示图表。

由于图表是视觉元素,无法以文本形式打印其内容,但您可以使用 plt.savefig 保存图表并使用图像查看器来查看它。

3.2、绘制多条折线
import matplotlib.pyplot as plt# 准备数据
x = [1, 2, 3, 4, 5]
y1 = [2, 3, 5, 7, 11]
y2 = [1, 4, 6, 8, 10]# 创建多条折线图
plt.plot(x, y1, label='Line 1')  # 绘制第一条折线图
plt.plot(x, y2, label='Line 2')  # 绘制第二条折线图# 添加标题和标签
plt.title('Multiple Line Plot')  # 添加图表标题
plt.xlabel('X Axis')              # 添加X轴标签
plt.ylabel('Y Axis')              # 添加Y轴标签# 添加图例
plt.legend()                      # 显示图例# 保存图表
plt.savefig('Images/savedImage.png', bbox_inches='tight')  # 保存图表到文件
# 打印结果:图表已保存至 'Images/savedImage.png'# 显示图表
plt.show()  # 显示图表
# 打印结果:图表已显示在屏幕上

请注意,实际的图表显示效果取决于您的具体数据和执行环境。上述代码中的注释和输出结果仅为示例。

  • plt.plot(x, y1, label='Line 1')plt.plot(x, y2, label='Line 2') 分别绘制了两条折线图,并分别标记为 'Line 1' 和 'Line 2'。
  • plt.legend() 显示了图例,根据标签 'Line 1' 和 'Line 2' 区分不同的折线。
  • plt.savefig 将图表保存到文件中,路径为 'Images/savedImage.png'。请确保 'Images' 文件夹存在于您的工作目录中,否则保存操作可能会失败。
  • plt.show() 会显示图表,您可以在屏幕上看到绘制的折线图和图例。

由于图表是视觉元素,无法以文本形式打印其内容,但您可以使用 plt.savefig 保存图表并使用图像查看器来查看它。如果您希望在控制台中打印某些信息,您可以使用 print() 函数来实现。

4、常见图表类型

4.1 散点图
import matplotlib.pyplot as plt# 准备数据
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]# 创建散点图
plt.scatter(x, y)  # 使用给定的x和y数据点创建散点图# 添加标题和标签
plt.title('Scatter Plot')  # 添加图表标题为 'Scatter Plot'
plt.xlabel('X Axis')        # 添加X轴标签
plt.ylabel('Y Axis')        # 添加Y轴标签# 保存图表
plt.savefig('Images/savedImage.png', bbox_inches='tight')  # 将图表保存到 'Images/savedImage.png'
# 打印结果:图表已保存至 'Images/savedImage.png'# 显示图表
plt.show()  # 显示图表
# 打印结果:图表已显示在屏幕上

请注意,实际的图表显示效果取决于您的具体数据和执行环境。上述代码中的注释和输出结果仅为示例。

  • plt.scatter(x, y) 创建了一个散点图,其中x和y是数据点的坐标。
  • plt.title, plt.xlabel, 和 plt.ylabel 分别添加了图表的标题和X、Y轴的标签。
  • plt.savefig 将图表保存到文件中,路径为 'Images/savedImage.png'。请确保 'Images' 文件夹存在于您的工作目录中,否则保存操作可能会失败。bbox_inches='tight' 参数确保所有图表内容都被包含在保存的图像中。
  • plt.show() 会显示图表,您可以在屏幕上看到绘制的散点图。

由于图表是视觉元素,无法以文本形式打印其内容,但您可以使用 plt.savefig 保存图表并使用图像查看器来查看它。如果您希望在控制台中打印某些信息,您可以使用 print() 函数来实现。

4.2 条形图
import matplotlib.pyplot as plt# 准备数据
categories = ['A', 'B', 'C', 'D', 'E']
values = [3, 7, 2, 5, 6]# 创建条形图
plt.bar(categories, values)  # 创建一个条形图,categories作为x轴的标签,values作为条形的高度# 添加标题和标签
plt.title('Bar Chart')  # 添加图表标题为 'Bar Chart'
plt.xlabel('Categories')  # 添加X轴标签为 'Categories'
plt.ylabel('Values')      # 添加Y轴标签为 'Values'# 保存图表
plt.savefig('Images/savedImage.png', bbox_inches='tight')  # 将图表保存到 'Images/savedImage.png'
# 打印结果:图表已保存至 'Images/savedImage.png'# 显示图表
plt.show()  # 显示图表
# 打印结果:图表已显示在屏幕上

请注意,实际的图表显示效果取决于您的具体数据和执行环境。上述代码中的注释和输出结果仅为示例。

  • plt.bar(categories, values) 创建了一个条形图,其中 categories 作为x轴的标签,values 作为对应的条形高度。
  • plt.title, plt.xlabel, 和 plt.ylabel 分别添加了图表的标题和X、Y轴的标签。
  • plt.savefig 将图表保存到文件中,路径为 'Images/savedImage.png'。请确保 'Images' 文件夹存在于您的工作目录中,否则保存操作可能会失败。bbox_inches='tight' 参数确保所有图表内容都被包含在保存的图像中。
  • plt.show() 会显示图表,您可以在屏幕上看到绘制的条形图。

4.3 直方图
import matplotlib.pyplot as plt
import numpy as np# 生成数据
data = np.random.randn(1000)  # 生成一个包含1000个随机样本的数组,样本来自标准正态分布# 创建直方图
plt.hist(data, bins=30, edgecolor='black')  # 创建直方图,bins=30表示将数据分成30个区间# edgecolor='black'表示直方图边缘颜色为黑色# 添加标题和标签
plt.title('Histogram')  # 添加图表标题为 'Histogram'
plt.xlabel('Value')      # 添加X轴标签为 'Value'
plt.ylabel('Frequency')  # 添加Y轴标签为 'Frequency'# 保存图表
plt.savefig('Images/savedImage.png', bbox_inches='tight')  # 将图表保存到 'Images/savedImage.png'
# 打印结果:图表已保存至 'Images/savedImage.png'# 显示图表
plt.show()  # 显示图表
# 打印结果:图表已显示在屏幕上

请注意,实际的图表显示效果取决于您的具体数据和执行环境。上述代码中的注释和输出结果仅为示例。

  • np.random.randn(1000) 生成了一个包含1000个随机样本的数组,这些样本来自标准正态分布。
  • plt.hist 创建了一个直方图,bins=30 表示将数据分成30个区间,edgecolor='black' 使直方图的边缘颜色为黑色。
  • plt.title, plt.xlabel, 和 plt.ylabel 分别添加了图表的标题和X、Y轴的标签。
  • plt.savefig 将图表保存到文件中,路径为 'Images/savedImage.png'。请确保 'Images' 文件夹存在于您的工作目录中,否则保存操作可能会失败。bbox_inches='tight' 参数确保所有图表内容都被包含在保存的图像中。
  • plt.show() 会显示图表,您可以在屏幕上看到绘制的直方图。

4.4 饼图
import matplotlib.pyplot as plt# 准备数据
labels = ['A', 'B', 'C', 'D']
sizes = [15, 30, 45, 10]# 创建饼图
plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=140)  # 创建饼图,自动百分比格式化,起始角度为140度# 添加标题
plt.title('Pie Chart')  # 添加图表标题为 'Pie Chart'# 保存图表
plt.savefig('Images/savedImage.png', bbox_inches='tight')  # 将图表保存到 'Images/savedImage.png'
# 打印结果:图表已保存至 'Images/savedImage.png'# 显示图表
plt.show()  # 显示图表
# 打印结果:图表已显示在屏幕上

请注意,实际的图表显示效果取决于您的具体数据和执行环境。上述代码中的注释和输出结果仅为示例。

  • plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=140) 创建了一个饼图,sizes 定义了每个扇区的大小,labels 提供了每个扇区的标签,autopct='%1.1f%%' 指定了扇区内百分比的格式,startangle=140 设置了饼图的起始绘制角度。
  • plt.title('Pie Chart') 添加了图表的标题。
  • plt.savefig 将图表保存到文件中,路径为 'Images/savedImage.png'。请确保 'Images' 文件夹存在于您的工作目录中,否则保存操作可能会失败。bbox_inches='tight' 参数确保所有图表内容都被包含在保存的图像中。
  • plt.show() 会显示图表,您可以在屏幕上看到绘制的饼图。

5、图表定制

5.1 修改线条和点样式
import matplotlib.pyplot as plt# 准备数据
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]# 创建折线图,设置线条和点样式
plt.plot(x, y, color='red', linestyle='--', marker='o', markersize=8)  # 绘制折线图,颜色为红色,虚线样式,圆圈标记点,标记大小为8# 添加标题和标签
plt.title('Customized Line Plot')  # 添加图表标题为 'Customized Line Plot'
plt.xlabel('X Axis')                # 添加X轴标签
plt.ylabel('Y Axis')                # 添加Y轴标签# 保存图表
plt.savefig('Images/savedImage.png', bbox_inches='tight')  # 将图表保存到 'Images/savedImage.png'
# 打印结果:图表已保存至 'Images/savedImage.png'# 显示图表
plt.show()  # 显示图表
# 打印结果:图表已显示在屏幕上

请注意,实际的图表显示效果取决于您的具体数据和执行环境。上述代码中的注释和输出结果仅为示例。

  • plt.plot(x, y, color='red', linestyle='--', marker='o', markersize=8) 创建了一个折线图,其中设置了线条颜色为红色,线型为虚线,数据点标记为圆圈,标记大小为8。
  • plt.title, plt.xlabel, 和 plt.ylabel 分别添加了图表的标题和X、Y轴的标签。
  • plt.savefig 将图表保存到文件中,路径为 'Images/savedImage.png'。请确保 'Images' 文件夹存在于您的工作目录中,否则保存操作可能会失败。bbox_inches='tight' 参数确保所有图表内容都被包含在保存的图像中。
  • plt.show() 会显示图表,您可以在屏幕上看到绘制的折线图。

5.2 添加网格和文本注释
import matplotlib.pyplot as plt# 准备数据
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]# 创建折线图
plt.plot(x, y)# 添加网格
plt.grid(True)  # 为图表添加网格# 添加文本注释
for i in range(len(x)):plt.text(x[i], y[i], f'({x[i]},{y[i]})')  # 在每个数据点上添加文本注释,显示点的坐标# 添加标题和标签
plt.title('Line Plot with Grid and Annotations')  # 添加图表标题
plt.xlabel('X Axis')                             # 添加X轴标签
plt.ylabel('Y Axis')                             # 添加Y轴标签# 保存图表
plt.savefig('Images/savedImage.png', bbox_inches='tight')  # 将图表保存到 'Images/savedImage.png'
# 打印结果:图表已保存至 'Images/savedImage.png'# 显示图表
plt.show()  # 显示图表
# 打印结果:图表已显示在屏幕上

请注意,实际的图表显示效果取决于您的具体数据和执行环境。上述代码中的注释和输出结果仅为示例。

  • plt.plot(x, y) 创建了一个折线图。
  • plt.grid(True) 为图表添加了网格。
  • plt.text(x[i], y[i], f'({x[i]},{y[i]})') 在每个数据点上添加了文本注释,显示了点的坐标。
  • plt.title, plt.xlabel, 和 plt.ylabel 分别添加了图表的标题和X、Y轴的标签。
  • plt.savefig 将图表保存到文件中,路径为 'Images/savedImage.png'。请确保 'Images' 文件夹存在于您的工作目录中,否则保存操作可能会失败。bbox_inches='tight' 参数确保所有图表内容都被包含在保存的图像中。
  • plt.show() 会显示图表,您可以在屏幕上看到绘制的折线图、网格和文本注释。

6、子图

使用子图可以在同一个图表中展示多个图形。

import matplotlib.pyplot as plt# 准备数据
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]# 创建2x1子图
fig, axs = plt.subplots(2, 1)  # 创建一个2行1列的子图布局# 第一子图
axs[0].plot(x, y, 'r')  # 在第一个子图上绘制红色折线图
axs[0].set_title('Subplot 1')  # 设置第一个子图的标题# 第二子图
axs[1].scatter(x, y)  # 在第二个子图上绘制散点图
axs[1].set_title('Subplot 2')  # 设置第二个子图的标题# 调整子图布局
plt.tight_layout()  # 调整子图参数,使之填充整个图像区域# 保存图表
plt.savefig('Images/savedImage.png', bbox_inches='tight')  # 将图表保存到 'Images/savedImage.png'
# 打印结果:图表已保存至 'Images/savedImage.png'# 显示图表
plt.show()  # 显示图表
# 打印结果:图表已显示在屏幕上

请注意,实际的图表显示效果取决于您的具体数据和执行环境。上述代码中的注释和输出结果仅为示例。

  • plt.subplots(2, 1) 创建了一个2行1列的子图布局。
  • axs[0].plot(x, y, 'r') 在第一个子图上绘制了一个红色折线图。
  • axs[0].set_title('Subplot 1') 设置了第一个子图的标题。
  • axs[1].scatter(x, y) 在第二个子图上绘制了一个散点图。
  • axs[1].set_title('Subplot 2') 设置了第二个子图的标题。
  • plt.tight_layout() 调整了子图参数,使之填充整个图像区域。
  • plt.savefig 将图表保存到文件中,路径为 'Images/savedImage.png'。请确保 'Images' 文件夹存在于您的工作目录中,否则保存操作可能会失败。bbox_inches='tight' 参数确保所有图表内容都被包含在保存的图像中。
  • plt.show() 会显示图表,您可以在屏幕上看到两个子图。

7、高级功能

7.1 使用 Pandas 数据绘图

Pandas 集成了 Matplotlib,可以方便地对 DataFrame 和 Series 进行绘图。

import matplotlib.pyplot as plt
import pandas as pd# 创建 DataFrame
data = {'A': [1, 2, 3, 4, 5],'B': [2, 3, 5, 7, 11]
}
df = pd.DataFrame(data)# 使用 Pandas 绘图
df.plot(kind='line', x='A', y='B', title='Pandas Line Plot')  # 使用Pandas绘图功能创建折线图
# 这里没有打印语句,但图表已经创建并显示了# 保存图表
plt.savefig('Images/savedImage.png', bbox_inches='tight')  # 将图表保存到 'Images/savedImage.png'
# 打印结果:图表已保存至 'Images/savedImage.png'# 显示图表
plt.show()  # 显示图表
# 打印结果:图表已显示在屏幕上

请注意,实际的图表显示效果取决于您的具体数据和执行环境。上述代码中的注释和输出结果仅为示例。

  • pd.DataFrame(data) 创建了一个包含两列 'A' 和 'B' 的 DataFrame。
  • df.plot(kind='line', x='A', y='B', title='Pandas Line Plot') 使用Pandas的绘图功能创建了一个折线图,指定了图表类型为折线图(kind='line'),x轴为 'A' 列,y轴为 'B' 列,并设置了图表标题。
  • plt.savefig 将图表保存到文件中,路径为 'Images/savedImage.png'。请确保 'Images' 文件夹存在于您的工作目录中,否则保存操作可能会失败。bbox_inches='tight' 参数确保所有图表内容都被包含在保存的图像中。
  • plt.show() 会显示图表,您可以在屏幕上看到绘制的折线图。

7.2 动态更新图表

可以使用 FuncAnimation 创建动态更新的图表。

代码示例中,创建了一个动态变化的正弦波动画,并尝试将其保存为图片。然而,FuncAnimation 创建的是一个动画对象,而不是一个静态图像,所以直接使用 plt.savefig() 只会保存动画的最后一帧,而不是整个动画序列。

为了保存整个动画,您需要使用额外的库,比如 ffmpegimagemagick,来将动画帧保存为视频或GIF。

import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np# 初始化数据
x = np.arange(0, 2*np.pi, 0.01)
fig, ax = plt.subplots()
line, = ax.plot(x, np.sin(x))# 更新函数
def update(frame):line.set_ydata(np.sin(x + frame/10.0))return line,# 创建动画
ani = animation.FuncAnimation(fig, update, frames=100, blit=True)# 保存图表
plt.savefig('Images/savedImage.png', bbox_inches='tight')
# 打印结果:由于FuncAnimation创建的是动画,直接保存只会保存最后一帧图像
# 打印结果:图表最后一帧已保存至 'Images/savedImage.png'# 显示动画
plt.show()
# 打印结果:动画已显示在屏幕上


 

请注意,实际的图表显示效果取决于您的具体数据和执行环境。上述代码中的注释和输出结果仅为示例。

  • animation.FuncAnimation(fig, update, frames=100, blit=True) 创建了一个动画,其中 update 函数定义了每一帧的更新逻辑,frames=100 指定了动画帧的数量。
  • plt.savefig() 将图表的最后一帧保存到文件中,路径为 'Images/savedImage.png'。请确保 'Images' 文件夹存在于您的工作目录中,否则保存操作可能会失败。
  • plt.show() 会显示动画,您可以在屏幕上看到动态变化的正弦波。

以上是 Matplotlib 的一些基础知识和操作。掌握这些内容可以帮助您更好地进行数据可视化和机器学习任务。通过不断实践,您会发现 Matplotlib 是一个非常强大且灵活的工具。

三、在机器学习中使用到 Matplotlib 的简单示例

下面是一些在机器学习中使用Matplotlib进行数据可视化的简单示例。这些示例展示了Matplotlib在数据探索、特征分析和结果可视化中的功能和作用。

1、数据探索与初步分析

1.1 数据加载与初步分析

我们先加载一个数据集,并进行初步的数据探索。

import pandas as pd# 创建数据字典
data = {'feature1': [1.1, 2.3, 3.5, 4.7, 5.9, 6.1, 7.3, 8.5, 9.7, 10.9],'feature2': [2.2, 3.4, 4.6, 5.8, 6.0, 7.2, 8.4, 9.6, 10.8, 11.0],'target': [1, 0, 1, 0, 1, 0, 1, 0, 1, 0]
}# 创建 DataFrame
df = pd.DataFrame(data)savedDatasetCsvFilePath = "data/dataset.csv"# 保存为 CSV 文件
df.to_csv(savedDatasetCsvFilePath, index=False)
# 打印结果:DataFrame 已保存至 CSV 文件,路径为 "data/dataset.csv"# 从CSV文件加载数据
df = pd.read_csv(savedDatasetCsvFilePath)# 查看前几行数据
print(df.head())
# 输出结果:
#   feature1  feature2  target
# 0      1.1       2.2       1
# 1      2.3       3.4       0
# 2      3.5       4.6       1
# 3      4.7       5.8       0
# 4      5.9       6.0       1# 查看数据基本信息
print(df.info())
# 输出结果:将显示 DataFrame 的基本信息,包括每列的名称、数据类型、非空值数量等。
# <class 'pandas.core.frame.DataFrame'>
# RangeIndex: 10 entries, 0 to 9
# Data columns (total 3 columns):
#  #   Column    Non-Null Count  Dtype
# ---  ------    --------------  -----
#  0   feature1  10 non-null     float64
#  1   feature2  10 non-null     float64
#  2   target    10 non-null     int64
# dtypes: float64(2), int64(1)
# memory usage: 368.0 bytes
# None# 查看描述性统计
print(df.describe())
# 输出结果:
#         feature1   feature2     target
# count  10.000000  10.000000  10.000000
# mean    6.000000   6.900000   0.500000
# std     3.185034   3.042294   0.527046
# min     1.100000   2.200000   0.000000
# 25%     3.800000   4.900000   0.000000
# 50%     6.000000   6.600000   0.500000
# 75%     8.200000   9.300000   1.000000
# max    10.900000  11.000000   1.000000

请注意,实际输出结果会根据 df 中的数据而有所不同。df.to_csv() 将 DataFrame 保存到 CSV 文件中,df.read_csv() 从 CSV 文件中加载数据。df.head() 打印 DataFrame 的前五行数据,df.info() 提供了 DataFrame 的详细概览,包括每列的数据类型和非空值数量等信息。df.describe() 给出了数值型列的描述性统计信息,包括计数、均值、标准差、最小值、第25百分位数、中位数、第75百分位数和最大值。

1.2 绘制特征分布直方图

我们使用Matplotlib绘制特征的直方图,以查看数据分布情况。

import pandas as pd
import matplotlib.pyplot as plt# 创建数据字典
data = {'feature1': [1.1, 2.3, 3.5, 4.7, 5.9, 6.1, 7.3, 8.5, 9.7, 10.9],'feature2': [2.2, 3.4, 4.6, 5.8, 6.0, 7.2, 8.4, 9.6, 10.8, 11.0],'target': [1, 0, 1, 0, 1, 0, 1, 0, 1, 0]
}# 创建 DataFrame
df = pd.DataFrame(data)savedDatasetCsvFilePath = "data/dataset.csv"# 保存为 CSV 文件
df.to_csv(savedDatasetCsvFilePath, index=False)
print(f"DataFrame 已保存至 CSV 文件,路径为 {savedDatasetCsvFilePath}")  # 打印保存结果# 从CSV文件加载数据
df = pd.read_csv(savedDatasetCsvFilePath)# 绘制特征的直方图 (例如 feature1)
df['feature1'].hist(bins=30, edgecolor='black')
plt.title('Feature Distribution')
plt.xlabel('Feature Value')
plt.ylabel('Frequency')# 保存图表
plt.savefig('Images/savedImage.png', bbox_inches='tight')
# 打印结果:图表已保存至 'Images/savedImage.png'plt.show()  # 显示图表
# 打印结果:图表已显示在屏幕上

请注意,实际的图表显示效果和文件保存结果取决于您的具体数据和执行环境。上述代码中的注释和输出结果仅为示例。

  • df.to_csv() 将 DataFrame 保存到 CSV 文件中,并打印出保存的路径。
  • df.read_csv() 从 CSV 文件中加载数据。
  • df['feature1'].hist() 绘制了 'feature1' 列的直方图。
  • plt.savefig() 将图表保存到文件中,路径为 'Images/savedImage.png'。请确保 'Images' 文件夹存在于您的工作目录中,否则保存操作可能会失败。
  • plt.show() 显示图表。

2、特征间关系的可视化

2.1 绘制散点图

绘制两个特征之间的散点图,以查看它们之间的关系。

import pandas as pd
import matplotlib.pyplot as plt# 创建数据字典
data = {'feature1': [1.1, 2.3, 3.5, 4.7, 5.9, 6.1, 7.3, 8.5, 9.7, 10.9],'feature2': [2.2, 3.4, 4.6, 5.8, 6.0, 7.2, 8.4, 9.6, 10.8, 11.0],'target': [1, 0, 1, 0, 1, 0, 1, 0, 1, 0]
}# 创建 DataFrame
df = pd.DataFrame(data)savedDatasetCsvFilePath = "data/dataset.csv"# 保存为 CSV 文件
df.to_csv(savedDatasetCsvFilePath, index=False)
print(f"DataFrame 已保存至 CSV 文件,路径为 {savedDatasetCsvFilePath}")  # 打印保存结果# 从CSV文件加载数据
df = pd.read_csv(savedDatasetCsvFilePath)# 绘制散点图
plt.scatter(df['feature1'], df['feature2'])
plt.title('Feature1 vs Feature2')
plt.xlabel('Feature1')
plt.ylabel('Feature2')# 保存图表
plt.savefig('Images/savedImage.png', bbox_inches='tight')
# 打印结果:图表已保存至 'Images/savedImage.png'plt.show()  # 显示图表
# 打印结果:图表已显示在屏幕上

请注意,实际的图表显示效果和文件保存结果取决于您的具体数据和执行环境。上述代码中的注释和输出结果仅为示例。

  • df.to_csv() 将 DataFrame 保存到 CSV 文件中,并打印出保存的路径。
  • df.read_csv() 从 CSV 文件中加载数据。
  • plt.scatter() 绘制了 'feature1' 和 'feature2' 之间的散点图。
  • plt.savefig() 将图表保存到文件中,路径为 'Images/savedImage.png'。请确保 'Images' 文件夹存在于您的工作目录中,否则保存操作可能会失败。
  • plt.show() 显示图表。

2.2 绘制相关性热图

使用Seaborn绘制相关性矩阵的热图,以查看特征之间的相关性。

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns# 创建数据字典
data = {'feature1': [1.1, 2.3, 3.5, 4.7, 5.9, 6.1, 7.3, 8.5, 9.7, 10.9],'feature2': [2.2, 3.4, 4.6, 5.8, 6.0, 7.2, 8.4, 9.6, 10.8, 11.0],'target': [1, 0, 1, 0, 1, 0, 1, 0, 1, 0]
}# 创建 DataFrame
df = pd.DataFrame(data)savedDatasetCsvFilePath = "data/dataset.csv"# 保存为 CSV 文件
df.to_csv(savedDatasetCsvFilePath, index=False)
print(f"DataFrame 已保存至 CSV 文件,路径为 {savedDatasetCsvFilePath}")  # 打印保存结果# 从CSV文件加载数据
df = pd.read_csv(savedDatasetCsvFilePath)# 计算相关性矩阵
corr_matrix = df.corr()# 绘制热图
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm')
plt.title('Correlation Matrix Heatmap')# 保存图表
plt.savefig('Images/savedImage.png', bbox_inches='tight')
# 打印结果:热图已保存至 'Images/savedImage.png'plt.show()  # 显示热图
# 打印结果:热图已显示在屏幕上

请注意,实际的图表显示效果和文件保存结果取决于您的具体数据和执行环境。上述代码中的注释和输出结果仅为示例。

  • df.to_csv() 将 DataFrame 保存到 CSV 文件中,并打印出保存的路径。
  • df.read_csv() 从 CSV 文件中加载数据。
  • df.corr() 计算了 DataFrame 列之间的相关性矩阵。
  • sns.heatmap() 绘制了相关性矩阵的热图,annot=True 表示在每个格子内显示相关性数值,cmap='coolwarm' 指定了颜色映射。
  • plt.savefig() 将热图保存到文件中,路径为 'Images/savedImage.png'。请确保 'Images' 文件夹存在于您的工作目录中,否则保存操作可能会失败。
  • plt.show() 显示热图。

3、模型结果的可视化

3.1 绘制预测结果与实际值的对比图

我们训练一个简单的线性回归模型,并绘制预测结果与实际值的对比图。

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression# 创建数据字典
data = {'feature1': [1.1, 2.3, 3.5, 4.7, 5.9, 6.1, 7.3, 8.5, 9.7, 10.9],'feature2': [2.2, 3.4, 4.6, 5.8, 6.0, 7.2, 8.4, 9.6, 10.8, 11.0],'target': [1, 0, 1, 0, 1, 0, 1, 0, 1, 0]
}# 创建 DataFrame
df = pd.DataFrame(data)savedDatasetCsvFilePath = "data/dataset.csv"# 保存为 CSV 文件
df.to_csv(savedDatasetCsvFilePath, index=False)
print(f"DataFrame 已保存至 CSV 文件,路径为 {savedDatasetCsvFilePath}")  # 打印保存结果# 从CSV文件加载数据
df = pd.read_csv(savedDatasetCsvFilePath)# 准备数据
X = df[['feature1', 'feature2']]
y = df['target']# 分割数据
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 训练模型
model = LinearRegression()
model.fit(X_train, y_train)# 进行预测
y_pred = model.predict(X_test)# 绘制预测结果与实际值的对比图
plt.scatter(y_test, y_pred)
plt.title('Predicted vs Actual')
plt.xlabel('Actual Values')
plt.ylabel('Predicted Values')
plt.plot([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], color='red')# 保存图表
plt.savefig('Images/savedImage.png', bbox_inches='tight')
# 打印结果:对比图已保存至 'Images/savedImage.png'plt.show()  # 显示对比图
# 打印结果:对比图已显示在屏幕上

请注意,实际的图表显示效果和文件保存结果取决于您的具体数据和执行环境。上述代码中的注释和输出结果仅为示例。

  • df.to_csv() 将 DataFrame 保存到 CSV 文件中,并打印出保存的路径。
  • df.read_csv() 从 CSV 文件中加载数据。
  • train_test_split() 将数据集分割为训练集和测试集。
  • LinearRegression() 创建了一个线性回归模型,fit() 方法用于训练模型。
  • predict() 方法用于对测试集进行预测。
  • plt.scatter() 绘制了测试集的实际值和预测值的散点图。
  • plt.plot() 绘制了一条红色直线,表示理想情况下的预测值与实际值完全相同的情况(即完美的预测)。
  • plt.savefig() 将对比图保存到文件中,路径为 'Images/savedImage.png'。请确保 'Images' 文件夹存在于您的工作目录中,否则保存操作可能会失败。
  • plt.show() 显示对比图。

3.2 绘制残差图

残差图可以帮助我们理解模型的误差分布。

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression# 创建数据字典
data = {'feature1': [1.1, 2.3, 3.5, 4.7, 5.9, 6.1, 7.3, 8.5, 9.7, 10.9],'feature2': [2.2, 3.4, 4.6, 5.8, 6.0, 7.2, 8.4, 9.6, 10.8, 11.0],'target': [1, 0, 1, 0, 1, 0, 1, 0, 1, 0]
}# 创建 DataFrame
df = pd.DataFrame(data)savedDatasetCsvFilePath = "data/dataset.csv"# 保存为 CSV 文件
df.to_csv(savedDatasetCsvFilePath, index=False)
print(f"DataFrame 已保存至 CSV 文件,路径为 {savedDatasetCsvFilePath}")  # 打印保存结果# 从CSV文件加载数据
df = pd.read_csv(savedDatasetCsvFilePath)# 准备数据
X = df[['feature1', 'feature2']]
y = df['target']# 分割数据
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 训练模型
model = LinearRegression()
model.fit(X_train, y_train)# 进行预测
y_pred = model.predict(X_test)# 计算残差
residuals = y_test - y_pred# 绘制残差图
plt.scatter(y_pred, residuals)
plt.title('Residual Plot')
plt.xlabel('Predicted Values')
plt.ylabel('Residuals')
plt.axhline(y=0, color='red', linestyle='--')# 保存图表
plt.savefig('Images/savedImage.png', bbox_inches='tight')
# 打印结果:残差图已保存至 'Images/savedImage.png'plt.show()  # 显示残差图
# 打印结果:残差图已显示在屏幕上

请注意,实际的图表显示效果和文件保存结果取决于您的具体数据和执行环境。上述代码中的注释和输出结果仅为示例。

  • df.to_csv() 将 DataFrame 保存到 CSV 文件中,并打印出保存的路径。
  • df.read_csv() 从 CSV 文件中加载数据。
  • train_test_split() 将数据集分割为训练集和测试集。
  • LinearRegression() 创建了一个线性回归模型,fit() 方法用于训练模型。
  • predict() 方法用于对测试集进行预测。
  • 计算残差 residuals,这是实际值与预测值之间的差异。
  • plt.scatter() 绘制了预测值和残差的散点图。
  • plt.axhline() 在图中添加了一条水平线,表示残差为0的情况(即完美预测)。
  • plt.savefig() 将残差图保存到文件中,路径为 'Images/savedImage.png'。请确保 'Images' 文件夹存在于您的工作目录中,否则保存操作可能会失败。
  • plt.show() 显示残差图。

4、分类结果的可视化

4.1 绘制混淆矩阵

我们训练一个简单的分类模型,并绘制混淆矩阵,以可视化分类结果。

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay
from sklearn.tree import DecisionTreeClassifier# 创建数据字典
data = {'feature1': [1.1, 2.3, 3.5, 4.7, 5.9, 6.1, 7.3, 8.5, 9.7, 10.9],'feature2': [2.2, 3.4, 4.6, 5.8, 6.0, 7.2, 8.4, 9.6, 10.8, 11.0],'target': [1, 0, 1, 0, 1, 0, 1, 0, 1, 0]
}# 创建 DataFrame
df = pd.DataFrame(data)savedDatasetCsvFilePath = "data/dataset.csv"# 保存为 CSV 文件
df.to_csv(savedDatasetCsvFilePath, index=False)
print(f"DataFrame 已保存至 CSV 文件,路径为 {savedDatasetCsvFilePath}")  # 打印保存结果# 从CSV文件加载数据
df = pd.read_csv(savedDatasetCsvFilePath)# 准备数据
X = df[['feature1', 'feature2']]
y = df['target']# 分割数据
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 训练模型
model = DecisionTreeClassifier()
model.fit(X_train, y_train)# 进行预测
y_pred = model.predict(X_test)# 计算混淆矩阵
cm = confusion_matrix(y_test, y_pred)# 绘制混淆矩阵
disp = ConfusionMatrixDisplay(confusion_matrix=cm)
disp.plot(cmap='Blues')
plt.title('Confusion Matrix')# 保存图表
plt.savefig('Images/savedImage.png', bbox_inches='tight')
# 打印结果:混淆矩阵图已保存至 'Images/savedImage.png'plt.show()  # 显示混淆矩阵图
# 打印结果:混淆矩阵图已显示在屏幕上

请注意,实际的图表显示效果和文件保存结果取决于您的具体数据和执行环境。上述代码中的注释和输出结果仅为示例。

  • df.to_csv() 将 DataFrame 保存到 CSV 文件中,并打印出保存的路径。
  • df.read_csv() 从 CSV 文件中加载数据。
  • train_test_split() 将数据集分割为训练集和测试集。
  • DecisionTreeClassifier() 创建了一个决策树分类器模型,fit() 方法用于训练模型。
  • predict() 方法用于对测试集进行预测。
  • confusion_matrix() 计算了实际值与预测值之间的混淆矩阵。
  • ConfusionMatrixDisplay()plot() 绘制了混淆矩阵的图表。
  • plt.savefig() 将混淆矩阵图保存到文件中,路径为 'Images/savedImage.png'。请确保 'Images' 文件夹存在于您的工作目录中,否则保存操作可能会失败。
  • plt.show() 显示混淆矩阵图。

4.2 绘制ROC曲线

对于二分类问题,我们可以绘制ROC曲线来评估模型的性能。

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import roc_curve, auc# 创建数据字典
data = {'feature1': [1.1, 2.3, 3.5, 4.7, 5.9, 6.1, 7.3, 8.5, 9.7, 10.9],'feature2': [2.2, 3.4, 4.6, 5.8, 6.0, 7.2, 8.4, 9.6, 10.8, 11.0],'target': [1, 0, 1, 0, 1, 0, 1, 0, 1, 0]
}# 创建 DataFrame
df = pd.DataFrame(data)savedDatasetCsvFilePath = "data/dataset.csv"# 保存为 CSV 文件
df.to_csv(savedDatasetCsvFilePath, index=False)
print(f"DataFrame 已保存至 CSV 文件,路径为 {savedDatasetCsvFilePath}")  # 打印保存结果# 从CSV文件加载数据
df = pd.read_csv(savedDatasetCsvFilePath)# 准备数据
X = df[['feature1', 'feature2']]
y = df['target']# 分割数据
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 训练模型
model = DecisionTreeClassifier()
model.fit(X_train, y_train)# 计算ROC曲线
y_scores = model.predict_proba(X_test)  # 获取预测概率
fpr, tpr, _ = roc_curve(y_test, y_scores[:, 1])  # 计算ROC曲线的FPR和TPR
roc_auc = auc(fpr, tpr)  # 计算AUC# 绘制ROC曲线
plt.plot(fpr, tpr, color='blue', label=f'ROC curve (area = {roc_auc:.2f})')
plt.plot([0, 1], [0, 1], color='red', linestyle='--')  # 绘制随机猜测线
plt.title('Receiver Operating Characteristic (ROC) Curve')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.legend(loc='lower right')# 保存图表
plt.savefig('Images/savedImage.png', bbox_inches='tight')
# 打印结果:ROC曲线图已保存至 'Images/savedImage.png'plt.show()  # 显示ROC曲线图
# 打印结果:ROC曲线图已显示在屏幕上

请注意,实际的图表显示效果和文件保存结果取决于您的具体数据和执行环境。上述代码中的注释和输出结果仅为示例。

  • df.to_csv() 将 DataFrame 保存到 CSV 文件中,并打印出保存的路径。
  • df.read_csv() 从 CSV 文件中加载数据。
  • train_test_split() 将数据集分割为训练集和测试集。
  • DecisionTreeClassifier() 创建了一个决策树分类器模型,fit() 方法用于训练模型。
  • predict_proba() 方法用于获取测试集的预测概率。
  • roc_curve() 计算了基于预测概率的 ROC 曲线的 FPR 和 TPR 值。
  • auc() 计算了 ROC 曲线下的面积(AUC)。
  • plt.plot() 用于绘制 ROC 曲线和随机猜测线。
  • plt.savefig() 将 ROC 曲线图保存到文件中,路径为 'Images/savedImage.png'。请确保 'Images' 文件夹存在于您的工作目录中,否则保存操作可能会失败。
  • plt.show() 显示 ROC 曲线图。

通过这些示例,我们可以看到Matplotlib在机器学习中的广泛应用。从数据探索、特征分析到模型结果的可视化,Matplotlib都发挥了重要作用。掌握Matplotlib可以帮助您更好地进行数据分析和机器学习任务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/849226.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Framework | Android Rescue Party: 提升设备恢复力的机制

Framework | Android Rescue Party: 提升设备恢复力的机制 什么是 Rescue Party? Rescue Party 是 Android 操作系统中的一种机制,旨在当设备遇到系统崩溃或启动失败时提供自动恢复的方案。这一机制特别针对系统关键组件的反复崩溃,防止设备陷入无法使用的状态。 主要功能…

学习笔记——网络参考模型——TCP/IP模型(网络层)

三、TCP/IP模型-网络层 1、IPV4报头 (1)IPV4报文格式 IP Packet(IP数据包)&#xff0c;其包头主要内容如下∶ Version版本∶4 bit&#xff0c;4∶表示为IPv4; 6∶表示为IPv6。 Header Length首部长度∶4 bit&#xff0c;代表IP报头的长度(首部长度)&#xff0c;如果不带Opt…

Java 还能不能继续搞了?

金三银四招聘季已落幕&#xff0c;虽说行情不是很乐观&#xff0c;但真正的强者从不抱怨。 在此期间&#xff0c;我收到众多小伙伴的宝贵反馈&#xff0c;整理出132道面试题&#xff0c;从基础到高级&#xff0c;有八股文&#xff0c;也有对某个知识点的深度解析。包括以下几部…

HackTheBox-Machines--Aragog

Aragog 测试过程 1 信息收集 NMAP 服务器开启了 21、22、80端口 21 端口测试 首先测试 21 端口&#xff0c;21端口开启了匿名登录 ftp服务器上存在 test.txt 文件&#xff0c;test.txt 文件是 xml 格式。 80 端口测试 echo "10.129.97.250 aragog.htb" | sudo tee…

鸿蒙全栈开发-基于ARKTS开发之初识框架-app.json5

前言 随着鸿蒙的不断发展,华为自行研制的“鸿蒙系统”横空出世&#xff0c;华为用实力为自己开辟了一个全新的时代&#xff0c;让中国品牌走向世界,并为程序员们带来了新的职业机遇。 这里来跟大家简单的聊一下鸿蒙基于ARKTS开发之初识框架-app.json5 当我们新建一个工程或者…

沃可趣产品增PC版,员工社区登上大屏幕

作为企业内部沟通与协作的枢纽&#xff0c;员工互动社区在促进信息流通、增强团队凝聚力方面扮演着关键角色。 沃可趣&#xff0c;这一匠心打造的员工互动社区&#xff0c;融汇了工作、学习与社交的精髓&#xff0c;为职场人构筑了一站式互动天地。 为了满足更广泛的工作场景…

交流回馈老化测试负载:行业竞争态势

在当今的科技行业中&#xff0c;交流回馈老化测试负载设备已经成为了一个重要的组成部分。这种设备主要用于模拟电力系统中的各种负载情况&#xff0c;以便对电力系统进行全面的测试和评估。随着科技的不断发展&#xff0c;这个行业的竞争态势也在不断变化。 从市场竞争的角度来…

Foxmail邮箱的简单实用

Foxmail邮箱是我们办公邮箱中比较有代表性和使用性的一款邮箱软件&#xff0c;今天笔者为大家介绍一下Foxmail邮箱的功能和使用方法。 1、首先我们从安装Foxmail邮箱开始 2、点击安装等待安装成功 3、双击打开 &#xff0c;出现邮箱设置界面输入我们的账号密码&#xff0c;点击…

电商数据采集决策智慧:深度解析数据采集与应用||电商API数据采集接口的接入与应用

引言 在数字化时代&#xff0c;数据已成为电商企业最宝贵的资产之一。通过有效的数据采集&#xff0c;企业能够洞察市场动态、理解消费者需求、优化运营策略&#xff0c;从而在激烈的市场竞争中脱颖而出。本文将深入探讨电商数据采集的重要性、常用方法以及应用实践。 一、电…

Python接口自动化测试:Json 数据处理实战

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 上一篇说了关于json数据处理&#xff0c;是为了断言方便&#xff0c;这篇就带各位小伙伴实战一下…

【工作流】 工作流相关概念及Activiti基本介绍

目录 工作流作用工作流的几个要素应用具体应用场景 工作流系统工作流系统的组成部分&#xff1a;都有哪些工作流系统 工作流引擎工作流引擎的特点&#xff1a;都有哪些工作流引擎 工作流、工作流引擎、工作流系统三者区别ActivitiActiviti的主要特点发展历史优缺点优点&#xf…

医疗保健的未来——Kompas.ai如何助力精准医疗

引言 在现代医学中&#xff0c;精准医疗逐渐成为提高诊疗效果的重要手段。随着科技的进步&#xff0c;人工智能&#xff08;AI&#xff09;在医疗领域的应用越来越广泛。本文将探讨精准医疗的发展趋势&#xff0c;并介绍Kompas.ai如何通过AI技术助力精准医疗的发展。 精准医疗…

哈尔滨三级等保测评需要测哪些设备?

哈尔滨三级等保测评需要测的设备&#xff0c;主要包括物理安全设备、网络安全设备和应用安全设备三大类别。这些设备在保障哈尔滨地区信息系统安全方面发挥着至关重要的作用。 首先&#xff0c;物理安全设备是确保信息系统实体安全的基础。在哈尔滨三级等保测评中&#xff0c;物…

纷享销客安全体系:安全合规认证

安全合规认证是指组织通过独立的第三方机构对其信息系统和数据进行评估和审查&#xff0c;以确认其符合相关的安全标准、法律法规和行业要求的过程。 安全合规认证可以帮助组织提高信息系统和数据的安全性&#xff0c;并向客户、合作伙伴和监管机构证明其符合相关的安全标准和…

Parallels Desktop for Mac 19.4.0更新了哪些内容?有什么改进?

带来了重新设计的共享 Mac 文件夹版本&#xff0c;这些文件夹现在是符号链接&#xff0c;像指针一样指向您的 Mac 文件夹中的文件&#xff0c;同时仍然显示在 Windows 的本地磁盘上。 修复了由于共享文件夹问题导致 NinjaTrader 无法正常启动的问题。 修复了由于共享文件夹问…

指标体系建设10大坑

在企业经营和运营管理中&#xff0c;指标体系的建设至关重要&#xff0c;它在一定程度上是反映业务的问题状况&#xff0c;影响决策者的决策。但是&#xff0c;在指标体系的建设过程中&#xff0c;常常会存在一些不容忽视的“坑”&#xff0c;今天做个总结&#xff0c;以下为个…

基于SpringBoot+Vue电影院选票系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;还…

基于Python+FFMPEG环境下载B站歌曲

题主环境 WSL on Windows10 命令如下 # python3.9 pip install --pre yutto yutto --batch https://www.bilibili.com/video/BV168411o7Bh --audio-only ls | grep aac | xargs -I {} ffmpeg -i {} -acodec libmp3lame {}.mp3WinAmp

大白话讲清楚:什么是 Langchain 及其核心概念

在AI和机器学习领域&#xff0c;每天都有新技术和框架涌现。今天&#xff0c;我们来聊聊最近引起广泛关注的一个框架 —— Langchain。 https://python.langchain.com/docs/get_started/introduction 那么&#xff0c;Langchain到底是什么&#xff0c;它为什么这么受欢迎&…

.NET集成DeveloperSharp操作Redis缓存

&#x1f3c6;作者&#xff1a;科技、互联网行业优质创作者 &#x1f3c6;专注领域&#xff1a;.Net技术、软件架构、人工智能、数字化转型、DeveloperSharp、微服务、工业互联网、智能制造 &#x1f3c6;欢迎关注我&#xff08;Net数字智慧化基地&#xff09;&#xff0c;里面…