赞
踩
从广义上来说,机器学习是一种可以赋予机器学习的能力以此让它完成直接进行编程无法完成的功能的方法。机器学习也是人工智能的核心,其涉及知识非常广泛,比如概率论,统计学,近似理论,高等数学等多门学科。机器学习使计算机能够从研究数据和统计信息中学习,机器学习是迈向人工智能方向的其中的一步,也是一种程序,可以分析数据并学习预测结果
机器学习的要素
机器学习有四个要素:数据,转换数据的模型,衡量模型好坏的损失函数和一个调整模型权重来最小化损失模型的算法。
数据:
图片,文本,声音,结构数据(Jupyter notebook,网页,租车单和电费表)
模型:
通常数据和我们相差的很远,我们如果要把一个一千万像素的值变成一个高兴度的概率值,通常我们需要在数据上应用数个非线性函数
损失函数:
我们需要对比输出函数和真实值之间的误差。取决我们到底想短线还是长线,这个函数可以很不一样。
均值
用Numpy模块来计算平均值,找出所有值的总和,然后用总和来除以值的数量:
使用Numpy mean() 方法来确定平均数:
中值
中值是对所有值进行排序后的中间值,在找到中位数之前,对数字的排序很重要。
使用Numpy median()的方法来找到中间值如果中间有两个数,则将这两个数相加除以2。
例如:
标准差是一个数字,描述值得离散程度。低标准偏差表示大多数数字接近均值(平均值)。高标准偏差表示这些值分布在更宽得范围内。
我们可以使用Numpy的模块来计算标准差的方法:
使用Numpy std() 方法来确定标准差:
方差
方差是另一种数字,指示值的分散程度。如果采用方差的平方根,则就会得到标准差。如果将标准偏差乘以自身就会得到方差。
如果普通求方差要先求均值,再找到每个数与平均数的差值,再将差值的平方值除以个数才是方差。
但Numpy中有一个模块可以直接计算方差的方法:
使用Numpy var()的方法来找到方差
百分位数
统计学中使用百分位数提供一个数字,该数字描述了给定百分比值小于的值。
Numpy模块有一个种用于找到百分位数的方法
使用Numpy percentile()的方法来找到中间值
创建一个包含200个介于0 到 5之间的随机浮点数的数组:
直方图
我们可以使用python模块的Matplotlib绘制直方图:
python的Matplotlib教学可以通过Matplotlib绘图基础详细教程_飞行模式、的博客-CSDN博客_matplotlib画图来学习
直方图如下:
直方图解释:
x = numpy.random.uniform(0,5,200)以上的意思是有200个0到5的随机浮点数额数组
意思是绘制5条柱状图。
第一栏是代表数组中有多少0到1之间的值
第二栏是代表数组中有多少1到2之间的值
plt.hist(x,5)意思是具有5栏的直方图用来表示它们
正态数据分布(高斯数据分布)
典型的正态数据分布:
钟形曲线:
正态分布图具有钟形的特征形状,因此也称为钟形曲线。
散点图是数据集中的每个值都有点来表示:
python的Matplotlib 模块有一种绘制散点图的方法,一个数组用于x轴的值,另一个数组用于y轴的值:结果:
随机数据分布
数据集可以包含成千上万甚至数百万个值,我们可以随机生成的值。
让我们创建两个数组,它们都填充来自正态数据分布的1000个随机数。
有1000个点的散点图:
结果:
线性回归
线性回归使用数据点之间的关系在所有数据点之间画一条直线
我们可以导入scipy 并绘制线性回归线
运行结果如下:
解释:
导入所需要的matplotlib和scipy的模块:import matplotlib.pyplot as plt
from scipy import stats创建表示 x 和 y 轴的数组:
x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]执行一些方式,该方式返回线性回归的一些重要键值:
slope, intercept, r, p, std_err = stats.linregress(x, y)
创建一个使用slope和intercept值的返回新值。这个新值表示相应的x值将在y轴上放置的位置
def myfunc(x):
return slope * x + intercept通过函数运行 x 数组的每个值,这将产生一个新的数组,其中的 y 轴具有新值:
mymodel = list(map(myfunc, x))
绘制散点图,绘制线性回归,显示图:
plt.scatter(x, y)
plt.plot(x, mymodel)
plt.show()
python中的(Scikit-learn)模块是机器学习中最常用的第三方的模块,对常用的机器学习方法进行了封装,包括线性回归,降维,分类,聚类等方法。sklearn中包括很多机器学习的方法,sklearn自带部分的数据集。sklearn datasets 中我们将选择机器学习的方法进行技巧调整参数。模型完成之后就可以预测新数据。之后用python中matplotlib模块直观的进行表示出来。
sklearn提供了一些标准的数据,我们可以从load_iris数据,可以跟方便的返回特征变量和目标值。除了引入数据之外,我们还可以通过load_sample_images()来引入图片。
load boston ([return_X_y]) Load and return the boston house-prices dataset (regression). load iris ([return_X_y]) Load and return the iris dataset (classification). load diabetes (return X_y]) Load and return the diabetes dataset (regression). load_digits ([n_class, return_X_y]) Load and return the digits dataset (classification) load linnerud ([return X_yl) Load and return the linnerud dataset (multivariate regression). load wine ([return_X_y]) Load and return the wine dataset (classification). load breast cancer ([return _X_y] Load and return the breast cancer wisconsin dataset (classification) 除sklearn的数据之外,我们还可以自己构建一些数据:
from sklearn import datasets X,y=datasets.make_regression(n_samples=100,n_features=1,n_targets=1,noise=1)import matplotlib.pyplot as
plt plt.figure()
plt.scatter(X,y)
plt.show()
解释:
调用python中sklearn的库from sklearn import datasets
n_samples=样本量
n_features=特征数(自变量的个数)
n_targets=因变量的个数
noise=噪音
plt plt.figure()
plt.scatter(X,y)
plt.show()
使用matplotlib进行散点图绘图
回归树的基本概念:
回归树,就是用数据模型做回归问题,每片的叶子都输出一个预测值。预测值一般时叶子的节点所含训练集元素输出的均值(除了使用均值外可以用线性回归或多元线性回归)
criterion
输入MSE,使用均方误差MSE,父节点和叶子节点之间的均方误差的差额将被用来作为特征选择的标准,这种方法通过使用叶子节点的均值来最小化L2的损失
输入费尔德曼均方误差,这种指标使用费里德曼针对潜在分枝中的问题改进后的均方误差
输入绝对平均误差MAE,这种指标是使用叶节点的中指来最小化L1损失。
一维回归图像的绘制:
导入需要的python的库:import numpy as np
from sklearn.tree import DecisionTreeClassifier
import matplotlib.pyplot as plt
创建一组随机的,分布在0-5上的横坐标轴上的取值x,然后将其放在sinx去充当y轴的坐标,接着我们在讲y轴上添加噪音。
rng = np.random.RandomState(1)#随机生成在0-1之间的随机数
x = np.sort(5*rng.rand(80,1),axis = 0)
#用numpy的sort对一维数组进行排序,并用axis=0,是将一维数组进行相加运算。
y = np.sin(x).ravel
#将x的值放在sin函数里充当y轴,并进行降维
plt.figure()
plt.scatter(x, y, s=20, esgecolor='black', c="blue", label='data')
#进行散点图颜色和标题的设置并绘制
y[ : :5 ] +=3 *(0.5-rng.rand(16))
#进行噪声的设置(这里是每隔5个在y轴上设置噪点)
1.sklearn中的决策树
决策树是一种非参数的有监督学习的方法,它能够从一系列中有特征和标签的数据中总结出决策规划,并用树状图的结构来呈现这些规划,以解决分类和回归问题。
决策树算法的本质是一种图结构,比如说,下面的数组集,这是一系列已知的物种以及所属类别的数据
名字 | 体温 | 表皮覆盖 | 胎生 | 飞行动物 | 水生动物 | 有腿 | 冬眠 | 类标号 |
人类 | 恒温 | 毛发 | 是 | 否 | 否 | 是 | 否 | 哺乳类 |
鲑鱼 | 冷血 | 鳞片 | 否 | 否 | 是 | 否 | 否 | 鱼类 |
鲸 | 恒温 | 毛发 | 是 | 否 | 是 | 否 | 否 | 哺乳类 |
青蛙 | 冷血 | 无 | 否 | 否 | 否 | 是 | 是 | 两栖类 |
巨蜥 | 冷血 | 鳞片 | 否 | 否 | 否 | 是 | 否 | 爬行类 |
蝙蝠 | 恒温 | 毛发 | 是 | 是 | 否 | 是 | 是 | 哺乳类 |
鸽子 | 恒温 | 羽毛 | 否 | 是 | 否 | 是 | 否 | 鸟类 |
猫 | 恒温 | 软毛 | 是 | 否 | 否 | 有 | 否 | 哺乳类 |
豹纹鲨 | 冷血 | 鳞片 | 是 | 否 | 是 | 否 | 否 | 鱼类 |
海龟 | 冷血 | 鳞片 | 否 | 否 | 半 | 有 | 否 | 爬行类 |
企鹅 | 恒温 | 羽毛 | 否 | 否 | 半 | 是 | 否 | 鸟类 |
豪猪 | 恒温 | 刚毛 | 是 | 否 | 否 | 是 | 是 | 哺乳类 |
鳗 | 冷血 | 鳞片 | 否 | 否 | 是 | 否 | 否 | 鱼类 |
蝾螈 | 冷血 | 无 | 否 | 否 | 半 | 是 | 是 | 两栖类 |
接下来我们将动物们分为哺乳类和非哺乳类,根据数据进行绘画决策树。
在这决策过程中我们需要一直对记录的特征进行提问,最初的问题就叫做根节点,在得到结论前的每个问题都是中间节点,而得到的每一个结论(动物的类别)都叫做叶子的节点。
1 开始:构建根节点,将所有训练数据都放在根节点,选择一个最优特征,按着这一特征将训练数据集分割成子集,使得各个子集有一个在当前条件下最好的分类。
2 如果这些子集已经能够被正确的分类,那么构建叶节点,并将这些子集分到所对应的叶节点。
3 如果还有子集不能够被正确的分类,那么就对这些子集选择新的最优的特征,继续对其进行分割,构建相应的节点,如果递归进行,直至所有训练数据的子集被基本正确的分类,或者没有合适的特征为止。
4 每个子集都被分到叶节点上,即都有了明确的类,进而生成了一颗决策树。
sklearn的绘图:
其中决策树对应的代码:
from sklearn import _tree clf = tree. #导入需要的模块
DecisionTreeclassifier() #实例化
clf = clf.fit(x_train,y_train) #使用训练集数据训练模型
result = clf.score(x_test,y_test) #导入测试集,从接口中调用需要的信息
关于机器学习的基础知识就暂时到这里了,希望以上内容可以对大家有一定的参考价值。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。