python的科学计算库(用Python做科学计算工具篇)
python的科学计算库(用Python做科学计算工具篇)在 scikit-learn 中实现的机器学习算法期望数据存储在二维数组或矩阵中。数组可以是numpy数组,或者在某些情况下是scipy.sparse矩阵。数组的大小预计为[n_samples n_features]同样,这是一个将模型拟合到数据的示例,但我们这里的重点是模型可以对新数据进行概括。该模型是从训练数据中学习的,可以用来预测测试数据的结果:在这里,我们可能会得到一个 x 值,而模型可以让我们预测 y 值。我们将在这里看两个非常简单的机器学习任务。第一个是分类任务:图中显示了二维数据的集合,根据两个不同的类标签着色。分类算法可用于在两个点簇之间绘制划分边界:通过绘制这条分隔线,我们学习了一个可以 泛化到新数据的模型:如果您将另一个点放到未标记的平面上,该算法现在可以预测它是蓝色点还是红色点。我们将看到的下一个简单任务是回归任务:一组数据的简单最佳拟合线。
所需基本库
- NumPy
- scipy
- matplotlib
- 简介:问题设置
- 使用 scikit-learn 进行机器学习的基本原理
- 监督学习:手写数字的分类
- 监督学习:住房数据的回归
- 测量预测性能
- 无监督学习:降维和可视化
- 特征脸示例:链接 PCA 和 SVM
- 特征脸示例:链接 PCA 和 SVM
- 参数选择、验证和测试
6.1.简介:问题设置6.1.1. 什么是机器学习?
机器学习是关于构建具有自动调整参数的可调参数的程序,以便通过适应先前看到的数据来改善它们的行为。
机器学习可以被认为是人工智能的一个子领域,因为这些算法可以被看作是构建块,通过某种方式使计算机学会更智能地表现, 而不是像数据库系统那样仅仅存储和检索数据项。
分类问题
我们将在这里看两个非常简单的机器学习任务。第一个是分类任务:图中显示了二维数据的集合,根据两个不同的类标签着色。分类算法可用于在两个点簇之间绘制划分边界:
通过绘制这条分隔线,我们学习了一个可以 泛化到新数据的模型:如果您将另一个点放到未标记的平面上,该算法现在可以预测它是蓝色点还是红色点。
数据矩阵我们将看到的下一个简单任务是回归任务:一组数据的简单最佳拟合线。
同样,这是一个将模型拟合到数据的示例,但我们这里的重点是模型可以对新数据进行概括。该模型是从训练数据中学习的,可以用来预测测试数据的结果:在这里,我们可能会得到一个 x 值,而模型可以让我们预测 y 值。
6.1.2. scikit-learn 中的数据数据矩阵在 scikit-learn 中实现的机器学习算法期望数据存储在二维数组或矩阵中。数组可以是numpy数组,或者在某些情况下是scipy.sparse矩阵。数组的大小预计为[n_samples n_features]
- n_samples:样本数:每个样本是一个待处理的项目(例如分类)。样本可以是文档、图片、声音、视频、天文物体、数据库或 CSV 文件中的一行,或者您可以用一组固定的数量特征描述的任何内容。
- n_features:可用于以定量方式描述每个项目的特征或不同特征的数量。特征通常是实值的,但在某些情况下可能是布尔值或离散值。
特征的数量必须预先确定。然而,它可能是非常高维的(例如数百万个特征),其中大多数对于给定样本都是零。这是scipy.sparse 矩阵有用的情况,因为它们比 numpy 数组更节省内存。
一个简单的例子:鸢尾花数据集应用问题作为一个简单数据集的例子,让我们看一下 scikit-learn 存储的 iris 数据。假设我们要识别鸢尾花的种类。数据包括对三种不同种类的虹膜的测量:
濑户鸢尾 |
杂色鸢尾 |
弗吉尼亚鸢尾 |
请记住,每个样本必须有固定数量的特征,并且每个样本的特征数量i必须是相似的数量。
使用 Scikit-learn 加载虹膜数据Scikit-learn 有一组关于这些虹膜物种的非常简单的数据。数据包括以下内容:
- 鸢尾花数据集中的特征:萼片长度(厘米) 萼片宽度(厘米) 花瓣长度(厘米) 花瓣宽度(厘米)
- 要预测的目标类:濑户 杂色 弗吉尼亚
scikit-learn嵌入 iris CSV 文件的副本以及将其加载到 numpy 数组中的函数:
>>>
>>> from sklearn.datasets import load_iris
>>> iris = load_iris()
每个样本花的特征存储在data数据集的属性中:
>>>
>>> print(iris.data.shape)
(150 4)
>>> n_samples n_features = iris.data.shape
>>> print(n_samples)
150
>>> print(n_features)
4
>>> print(iris.data[0])
[5.1 3.5 1.4 0.2]
每个样本的类别信息存储在 target数据集的属性中:
>>>
>>> print(iris.target.shape)
(150 )
>>> print(iris.target)
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
2 2]
类的名称存储在最后一个属性中,即 target_names:
>>>
>>> print(iris.target_names)
['setosa' 'versicolor' 'virginica']
该数据是四维的,但我们可以使用散点图一次可视化两个维度:
相关文章:- 用Python做科学计算(工具篇)——scipy 使用指南
- 用Python做科学计算(工具篇)——1.1. NumPy 数组对象
- 用Python做科学计算(工具篇)——numpy1.2.数组的数值运算
- 用Python做科学计算(工具篇)——numpy1.3 更精细的数组
- 用Python做科学计算(工具篇)——numpy1.4 高级操作
- 用Python做科学计算——matplotlib绘图实例