机器学习①【机器学习的定义以及核心思想、数据集:机器学习的“燃料”(组成和获取)】
文章目录
- 先言
- 一、什么是机器学习
- 1.机器学习的定义以及核心思想
- 2.机器学习的四大类型
- 2.1监督学习(Supervised Learning)
- 2.2半监督学习(Midsupervised Learning)
- 2.3无监督学习(Unsupervised Learning)
- 2.4强化学习(Reinforcement Learning)
- 3.机器学习的基本流程
- 4.机器学习工具库sklearn的安装
- 二、数据集:机器学习的“燃料”
- 1.数据集的组成(特征、标签)
- 2.获取数据集(Sklearn库本地获取、网络下载、文本数据)
- 2.1sklearn加载玩具数据集(红酒、乳腺癌)
- 2.2sklearn加载现实网络数据集
- 2.3pandas实现本地数据的创建和访问
- 3.数据集的划分(train_test_split)
- 结语
先言
人工智能(AI)正在重塑我们的世界,而 机器学习(Machine Learning, ML) 作为其核心驱动力,让计算机能够从数据中自动学习规律,并做出智能决策。无论是人脸识别、推荐系统,还是自动驾驶,机器学习技术都发挥着关键作用。
本文将从 机器学习的定义入手,介绍其基本概念,并深入探讨 数据集 的组成、类型及预处理方法。通过这篇文章,你将理解机器学习的基本框架,并学会如何准备高质量的数据集,为后续的模型训练打下坚实基础。
一、什么是机器学习
1.机器学习的定义以及核心思想
机器学习(Machine Learning)是一种通过算法和模型使计算机从数据中自动学习并进行预测或决策的技术,属于人工智能的一个分支。其核心目标是让计算机在没有明确编程指令的情况下,通过对大量数据的分析,识别模式和规律,从而构建适应新数据的模型。机器学习广泛应用于图像识别、自然语言处理、推荐系统和自动驾驶等领域,具备自适应、自动化和泛化能力,是数据驱动的技术创新。
机器学习的本质
是让计算机自己在数据中学习规律
,并根据所得到的规律对未来数据进行预测
。
机器学习包括如聚类、分类、决策树、贝叶斯、神经网络、深度学习
(Deep Learning)等算法。
机器学习的基本思路是模仿人类学习行为的过程,如我们在现实中的新问题一般是通过经验归纳,总结规律,从而预测未来的过程。
2.机器学习的四大类型
2.1监督学习(Supervised Learning)
监督学习(Supervised Learning)是从有标签的训练数据中学习模型,然后对某个给定的新数据利用模型预测它的标签。如果分类标签精确度越高,则学习模型准确度越高,预测结果越精确。
监督学习主要用于回归和分类。
常见算法包括线性回归、支持向量机、决策树和神经网络
。监督学习广泛应用于分类(如图像、文本分类)与回归(如房价、股价预测)任务,适用于金融、医疗、电子商务等多个领域。其性能高度依赖于标注数据的数量与质量。
2.2半监督学习(Midsupervised Learning)
半监督学习(Semi-Supervised Learning)是利用少量标注数据和大量无标注数据进行学习的模式。
半监督学习侧重于在有监督的分类算法中加入无标记样本来实现半监督分类。
常见的半监督学习算法有Pseudo-Label、Π-Model、Temporal Ensembling、Mean Teacher、VAT、UDA、MixMatch、ReMixMatch、FixMatch
无监督学习适用于客户细分、异常检测、推荐系统、数据压缩和基因分析等场景,尤其在数据标注困难或成本高的领域中具有重要价值。等。
2.3无监督学习(Unsupervised Learning)
无监督学习(Unsupervised Learning)是从未标注数据中寻找隐含结构的过程。
无监督学习主要用于关联分析、聚类和降维。
常见的无监督学习算法有稀疏自编码(Sparse Auto-Encoder)、主成分分析(Principal Component Analysis, PCA)、K-Means算法(K均值算法)、DBSCAN算法(Density-Based Spatial Clustering of Applications with Noise)、最大期望算法(Expectation-Maximization algorithm, EM)
等
2.4强化学习(Reinforcement Learning)
强化学习(Reinforcement Learning)类似于监督学习,但未使用样本数据进行训练,是是通过不断试错进行学习的模式。
在强化学习中,有两个可以进行交互的对象:智能体(Agnet)和环境(Environment),还有四个核心要素:策略(Policy)、回报函数(收益信号,Reward Function)、价值函数(Value Function)和环境模型(Environment Model),其中环境模型是可选的。
强化学习常用于机器人避障、棋牌类游戏、广告和推荐等应用场景中。
3.机器学习的基本流程
有5个基本步骤用于执行机器学习任务:
- 收集数据:无论是来自excel,access,文本文件等的原始数据,这一步(收集过去的数据)构成了未来学习的基础。相关数据的种类,密度和数量越多,机器的学习前景就越好。
- 准备数据:任何分析过程都会依赖于使用的数据质量如何。人们需要花时间确定数据质量,然后采取措施解决诸如缺失的数据和异常值的处理等问题。探索性分析可能是一种详细研究数据细微差别的方法,从而使数据的质量迅速提高。
- 练模型:此步骤涉及以模型的形式选择适当的算法和数据表示。清理后的数据分为两部分 - 训练和测试(比例视前提确定); 第一部分(训练数据)用于开发模型。第二部分(测试数据)用作参考依据。
- 评估模型:为了测试准确性,使用数据的第二部分(保持/测试数据)。此步骤根据结果确定算法选择的精度。检查模型准确性的更好测试是查看其在模型构建期间根本未使用的数据的性能。
- 提高性能:此步骤可能涉及选择完全不同的模型或引入更多变量来提高效率。这就是为什么需要花费大量时间进行数据收集和准备的原因。
无论是任何模型,这5个步骤都可用于构建技术,当我们讨论算法时,您将找到这五个步骤如何出现在每个模型中
!
4.机器学习工具库sklearn的安装
根据之前我们所有环境都是利用conda创建的,这里我们可以创建一个新环境
(在conda终端):
conda create -n sklearn python=3.12
activate sklearn
在此环境下下载scikit-learn包执行下面代码:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scikit-learn
之后通过conda list指令查看环境就可以看到scikit-learn库就安装成功了
二、数据集:机器学习的“燃料”
数据集是 Sklearn 最基本的概念之一。
机器学习的核心任务是从数据中学习模式,数据的表示方式至关重要。
数据集(Dataset)
在 scikit-learn 中,数据通常通过两个主要的对象来表示: 特征矩阵 和 目标向量。
特征矩阵(Feature Matrix):每一行代表一个数据样本,每一列代表一个特征(即输入变量)。它是一个二维的数组或矩阵,通常使用 NumPy 数组或 pandas DataFrame 来存储。
1.数据集的组成(特征、标签)
-
特征(Features):是数据集中用于训练模型的输入变量。在上面的例子中,X 是特征矩阵,包含了所有的输入变量。
-
标签(Labels):是机器学习模型的目标输出。在监督学习中,标签是我们希望模型预测的结果。在上面的例子中,y 是标签或目标向量,包含了每个样本的类别。
2.获取数据集(Sklearn库本地获取、网络下载、文本数据)
2.1sklearn加载玩具数据集(红酒、乳腺癌)
通过导入sklearn库包获取本地数据
from sklearn.datasets import load_wine
from sklearn.datasets import load_breast_cancer
#加载数据集
#红酒数据集
wine =load_wine()
#红酒的全部数据
print(wine.data)
#返回的是红酒的品种
print(wine.target)
#获取红酒特征的描述
print(wine.feature_names)
#获取红酒标签(品种)的描述
print(wine.target_names)
#加载乳腺癌病数据集
breast_data = load_breast_cancer()
print(breast_data.feature_names)
红酒特征向量含义以及标签含义:
#红酒和特征向量含义
wine_feature_descriptions = {'alcohol': '酒精含量','malic_acid': '苹果酸含量','ash': '灰分含量','alcalinity_of_ash': '灰分碱度','magnesium': '镁含量','total_phenols': '总酚含量','flavanoids': '黄酮类化合物含量','nonflavanoid_phenols': '非黄酮类酚类化合物含量','proanthocyanins': '原花青素含量','color_intensity': '颜色强度','hue': '色调','od280/od315_of_diluted_wines': '稀释葡萄酒的OD280/OD315吸光度比值','proline': '脯氨酸含量'
}
#标签含义
wine_target_dict = {'class_0': 'Cv品种','class_1': 'Ec品种','class_2': 'Sc品种'
}
乳腺癌中的特征向量以及标签含义:
#特征含义
breast_feature_descriptions='''
均值特征 (Mean features)
mean radius: 半径均值(从中心到边缘的平均距离)
mean texture: 纹理均值(灰度值的标准差)
mean perimeter: 周长均值
mean area: 面积均值
mean smoothness: 平滑度均值(半径变化的局部变化)
mean compactness: 紧凑度均值(周长²/面积 - 1.0)
mean concavity: 凹度均值(轮廓凹陷的严重程度)
mean concave points: 凹点均值(轮廓上的凹点数量)
mean symmetry: 对称度均值
mean fractal dimension: 分形维度均值(海岸线近似值 - 1)
标准误差特征 (Standard error features)
radius error: 半径标准误差
texture error: 纹理标准误差
perimeter error: 周长标准误差
area error: 面积标准误差
smoothness error: 平滑度标准误差
compactness error: 紧凑度标准误差
concavity error: 凹度标准误差
concave points error: 凹点标准误差
symmetry error: 对称度标准误差
fractal dimension error: 分形维度标准误差
最差值特征 (Worst features)
worst radius: 最大半径(最差区域的半径)
worst texture: 最差纹理
worst perimeter: 最大周长
worst area: 最大面积
worst smoothness: 最差平滑度
worst compactness: 最差紧凑度
worst concavity: 最大凹度
worst concave points: 最大凹点数
worst symmetry: 最差对称度
worst fractal dimension: 最差分形维度
'''
#标签含义
breast_target_dict='''
malignant:恶性肿瘤,表示该肿瘤具有侵袭性,可能会扩散到身体其他部位
benign:良性肿瘤,表示该肿瘤不具有侵袭性,通常不会扩散到身体其他部位
'''
这里给出特征和标签含义是为了方便对数据集的理解,可以让你快速熟悉数据集的特征和标签的含义
2.2sklearn加载现实网络数据集
对现实网络20条新闻数据进行下载保存
from sklearn.datasets import fetch_20newsgroups
from sklearn import datasets
import pandas as pd
#获取现实数据存放路径
download_file_path = datasets.get_data_home()
print(download_file_path)
#获取现实数据斌保存到指定的路劲
news = fetch_20newsgroups(subset='all',data_home="./src/20news-bydate_py3.pkz")
#保存后news可以对数据进行访问
print(len(news.data)) #18846
print(news.target.shape) #(18846,)
print(len(news.target_names)) #20
print(len(news.filenames)) #18846
2.3pandas实现本地数据的创建和访问
数据创建
创建csv文件:打开计事本,写出如下数据,数据之间使用英文下的逗号, 保存文件后把后缀名改为csv
数据访问
使用pandas的read_csv(“文件路径”)函数可以加载csv文件,得到的结果为数据的DataFrame形式
#导入pandas模块
import pandas as pd
#调用pandas方法访问文件
pd.read_csv("./src/ss.csv")
注:csv文件可以使用excel打开
3.数据集的划分(train_test_split)
在实际应用中,通常需要将数据集分割成训练集和测试集
。
scikit-learn
提供了一个方便的函数 train_test_split()
来实现这一点。
划分函数:
sklearn.model_selection.train_test_split(*arrays,**options)
参数
(1) *array
这里用于接收1到多个"列表、numpy数组、稀疏矩阵或padas中的DataFrame"。
(2) **options,
重要的关键字参数有:
test_size 值为0.0到1.0的小数,表示划分后测试集占的比例
random_state 值为任意整数,表示随机种子,使用相同的随机种子对相同的数据集多次划分结果是相同的。否则多半不同
strxxxx 分层划分,填y
2 返回值说明
返回值为列表list, 列表长度与形参array接收到的参数数量相关联, 形参array接收到的是什么类型,list中对应被划分出来的两部分就是什么类型
示例代码如下:
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
- 以上代码调用 train_test_split 函数,并将结果赋值给四个变量:
X_train、X_test、y_train 和 y_test。
- X 和 y 是传入 train_test_split 函数的参数,它们分别代表特征数据集和目标变量(标签)。通常 X 是一个二维数组,y 是一个一维数组。
test_size=0.3
参数指定了测试集的大小应该是原始数据集的 30%。这意味着 70% 的数据将被用作训练集,剩下的 30% 将被用作测试集。random_state=42
参数是一个随机数种子,用于确保每次分割数据集时都能得到相同的结果。这在实验和模型验证中非常有用,因为它确保了结果的可重复性。
结语
机器学习的世界浩瀚而精彩,而 数据 是这一切的起点。本文介绍了机器学习的基本概念,并详细讲解了数据集的组成与预处理方法,帮助你迈出 AI 开发的第一步。
🔍 动手实践建议:尝试加载一个公开数据集(如 sklearn.datasets.load_iris),并用 pandas 进行初步分析,观察特征分布情况!
🚀 下期预告:我们将深入探讨 特征工程,学习如何从原始数据中提取更有价值的特征,让模型表现更上一层楼!