机器学习的概念

直观上理解,机器学习(Machine Learning,ML)是研究计算机模拟人类的学习活动,获取知识和技能的理论和方法,改善系统性能的学科。

        机器学习的过程

因为计算机系统中“经验‘通常以数据的形式存在,所以机器要利用经验,就必须对数据
进行分析。因此其过程可以简述如下:

  1. 建立模型:设计计算机可以自动“学习”的算法

  2. 训练:用数据训练算法模型(算法从数据中分析规律)

  3. 预测:利用训练后的算法完成任务(根据学习的规律为未知数据进行分类和预测)

机器学习的分类

(1) 按学习任务分类

回归、分类、聚类是机器学习最常见的三大任务。

回归是一种数学模型,利用数据统计原理,对大量统计数据进行数学处理,确定因变量与某些自变量的相关关系,建立一个相关性较好的回归方程(函数表达式)。

分类就是对数据分进行分类,把它们分到已知的每一个类别。

聚类就是对未知类别的样本进行划分,将它们按照一定的规则划分成若干个类族,把相似(距高相近)的样本聚在同一个类簇中。

降维就是指采用某种映射方法,将原高维空间中的数据点映射到低维度的空间中,用一个相对低维的向量来表示原始高维度的特征。

密度估计是是概率统计学的基本问题之一,就是由给定样本集合求解随机变量的分布密度函数问题。大多数人已经熟悉了其中一种常用的密度估计技术:直方图。

排序学习是信息检索和搜索引擎研究的核心问题之一,通过机器学习方法学习一个分值函数对待排序的候选进行打分,再根据分值的高低确定序关系。

主要算法有:

回归(Regression)-有监督学习(连续的)      线性(最小二乘)回归(Linear Regression)

多项式回归(Polynomial Regression) 逐步回归(Stepwise Regression)

岭回归(Ridge Regression)套索回归(Lasso Regression)

弹性网回归(ElasticNet Regression)Lasso和Ridge回归技术的混合体

XGBoost回归

泊松回归(Poisson Regression)

分类(Classification)-有监督学习(离散的)

朴素贝叶斯(Naive Bayes)

逻辑回归(Logistic Regression)感知机(Perceptron)

距离判别法

回归+分类(可用于分类,也可以用于回归的算法)-有监督学习

人工神经网络(ANN,Artificial Neural Network)

深度学习,遗传算法

支持向量机(SVM,Support Vector Machine)主要用于分类

K近邻算法(KNN,K-Nearest Neighbors)主要用于分类

决策树(Decision Trees)主要用于分类

集成学习(Ensembale Learning)其他算法进行组合的一种形式,主要用于分类

投票算法(Bagging,Boostrap AGGregatING)

随机森林(Random Forest)多个决策树投票决定结果

再学习(Boosting)从一些弱分类器中创建一个强分类器的集成技术

GBDT(Gradient Boost Decision Tree)决策树的boosting算法

自适应增强算法(AdaBoost)

聚类(Clustering)-无监督学习

K-均值(K-Means)基于原型的目标函数聚类方法

层次聚类(HCA,Hierarchical Cluster Analysis)

密度聚类(DBSCAN)

Affinity Propagation 聚类,均值飘移算法(Mean Shift),单链聚类(Single-linkage clustering)

概念聚类(Conceptual clustering),模糊聚类(Fuzzy clustering),密度峰值聚类(Clustering by desity peaks)

最大期望算法(EM,Expectation Maximization)

降维(Dimensionality reduction)-无监督学习

网页排序(PageRank)

AdaRank  BayesRank  RankBoost  RankSVM  RankNet  LambdaRank  GBRank  优化(Optimization) Q-学习(Q-learning)

Matplotlib Pyplot库

Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API。

Pyplot 是常用的绘图模块,能很方便让用户绘制 2D 图表。

Pyplot 包含一系列绘图函数的相关函数,每个函数会对当前的图像进行一些修改,例如:给图像加上标记,生新的图像,在图像中产生新的绘图区域等等。

使用的时候,我们可以使用 import 导入 pyplot 库,并设置一个别名 plt

import matplotlib.pyplot as plt

        以下是常用的 pyplot 函数:

  • plot():用于绘制线图和散点图

  • scatter():用于绘制散点图

  • bar():用于绘制垂直条形图和水平条形图

  • hist():用于绘制直方图

  • pie():用于绘制饼图

  • imshow():用于绘制图像

  • subplots():用于创建子图

import matplotlib.pyplot as plt

import numpy as np
xpoints = np.array([0, 6])
ypoints = np.array([0, 100])
plt.plot(xpoints, ypoints)
plt.show()

A8A7DE3A-DFF7-41DC-95BC-FD987E3E8CE2.jpg

# 画单条线
plot([x], y, [fmt], , data=None, *kwargs)

 画多条线

plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)

颜色字符:'b' 蓝色,'m' 洋红色,'g' 绿色,'y' 黄色,'r' 红色,'k' 黑色,'w' 白色,'c' 青绿色,'#008000' RGB 颜色符串。多条曲线不指定颜色时,会自动选择不同颜色。

线型参数:'‐' 实线,'‐‐' 破折线,'‐.' 点划线,':' 虚线。

标记字符:'.' 点标记,',' 像素标记(极小点),'o' 实心圈标记,'v' 倒三角标记,'^' 上三角标记,'>' 右三角标记,'<' 左三角标记...等等。

如果我们要绘制坐标 (1, 3) 到 (8, 10) 的线,我们就需要传递两个数组 [1, 8] 和 [3, 10] 给 plot 函数

 numpy 计算库

NumPy的一些主要特点:

多维数组对象:NumPy的核心数据结构是ndarray,它是一个多维数组,用于存储同质数据类型的元素。这些数组可以是一维、二维、三维等,非常适用于向量化操作和矩阵运算。

广播功能:NumPy允许在不同形状的数组之间执行操作,通过广播功能,它可以自动调整数组的形状,以使操作变得有效。

丰富的数学函数:NumPy提供了大量的数学、统计和线性代数函数,包括基本的加减乘除、三角函数、指数和对数函数、随机数生成、矩阵操作等。

索引和切片:NumPy允许使用索引和切片操作来访问和修改数组中的元素,这使得数据的选择和处理非常灵活。

高性能计算:NumPy的底层实现是用C语言编写的,因此它在处理大规模数据时非常高效。此外,NumPy还与其他高性能计算库(如BLAS和LAPACK)集成,提供了快速的线性代数运算。

互操作性:NumPy可以与许多其他Python库和数据格式(例如Pandas、SciPy、Matplotlib)无缝集成,这使得数据科学工作流更加流畅。

numpy.dtype(object, align, copy)

数据类型对象 (dtype)

  1. object - 要转换为的数据类型对象

  2. align - 如果为 true,填充字段使其类似 C 的结构体。

  3. copy - 复制 dtype 对象 ,如果为 false,则是对内置数据类型对象的引用

import numpy as np

 使用标量类型

dt = np.dtype(np.int32)
print(dt)

numpy.empty

numpy.empty 方法用来创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组:

numpy.empty(shape, dtype = float, order = 'C')
参数描述
shape数组形状
dtype数据类型,可选
order有"C"和"F"两个选项,分别代表,行优先和列优先,在计算机内存中的存储元素的顺序。

实例

importnumpyasnpx = np.empty([3,2], dtype = int)print(x)

输出结果为:

[[ 6917529027641081856  5764616291768666155]
 [ 6917529027641081859 -5764598754299804209]
 [          4497473538      844429428932120]]

numpy.zeros

创建指定大小的数组,数组元素以 0 来填充:

numpy.zeros(shape, dtype = float, order = 'C')

参数说明:

参数描述
shape数组形状
dtype数据类型,可选
order'C' 用于 C 的行数组,或者 'F' 用于 FORTRAN 的列数组

实例

importnumpyasnp# 默认为浮点数x = np.zeros(5)print(x)# 设置类型为整数y = np.zeros((5,), dtype = int)print(y)# 自定义类型z = np.zeros((2,2), dtype = [('x', 'i4'), ('y', 'i4')])print(z)

输出结果为:

0. 0. 0. 0. 0.[[(0, 0) (0, 0)]
 [(0, 0) (0, 0)]]

numpy.ones

创建指定形状的数组,数组元素以 1 来填充:

numpy.ones(shape, dtype = None, order = 'C')

NumPy 切片和索引

import numpy as np
a = np.arange(10)
s = slice(2,7,2)   # 从索引 2 开始到索引 7 停止,间隔为2
print (a[s])

输出结果为:

[2  4  6]

也可以通过冒号分隔切片参数 start:stop:step 来进行切片操作:

import numpy as np
a = np.arange(10)  
b = a[2:7:2]   # 从索引 2 开始到索引 7 停止,间隔为 2
print(b)

输出结果为:

[2  4  6]
import numpy as np
a = np.array([[1,2,3],[3,4,5],[4,5,6]])
print(a)

 从某个索引处开始切割

print('从数组索引 a[1:] 处开始切割')
print(a[1:])

  [[1 2 3]
 [3 4 5]
 [4 5 6]]
从数组索引 a[1:] 处开始切割
  [[3 4 5]
 [4 5 6]]

好的,那么接下来的你,可以去试试下面的例子是怎么样的结果!

image.png

<br/>