Python机器学习基础
1 机器学习的定义
从广义上来说,机器学习是一种可以赋予机器学习的能力以此让它完成直接进行编程无法完成的功能的方法。机器学习也是人工智能的核心,其涉及知识非常广泛,比如概率论,统计学,近似理论,高等数学等多门学科。机器学习使计算机能够从研究数据和统计信息中学习,机器学习是迈向人工智能方向的其中的一步,也是一种程序,可以分析数据并学习预测结果
机器学习的要素
机器学习有四个要素:数据,转换数据的模型,衡量模型好坏的损失函数和一个调整模型权重来最小化损失模型的算法。
数据:
图片,文本,声音,结构数据(Jupyter notebook,网页,租车单和电费表)
模型:
通常数据和我们相差的很远,我们如果要把一个一千万像素的值变成一个高兴度的概率值,通常我们需要在数据上应用数个非线性函数
损失函数:
我们需要对比输出函数和真实值之间的误差。取决我们到底想短线还是长线,这个函数可以很不一样。
2 机器学习——平均数中位数模式
均值
用Numpy模块来计算平均值,找出所有值的总和,然后用总和来除以值的数量:
使用Numpy mean() 方法来确定平均数:
中值
中值是对所有值进行排序后的中间值,在找到中位数之前,对数字的排序很重要。
使用Numpy median()的方法来找到中间值如果中间有两个数,则将这两个数相加除以2。
例如:
3 机器学习——标准差
标准差是一个数字,描述值得离散程度。低标准偏差表示大多数数字接近均值(平均值)。高标准偏差表示这些值分布在更宽得范围内。
我们可以使用Numpy的模块来计算标准差的方法:
使用Numpy std() 方法来确定标准差:
方差
方差是另一种数字,指示值的分散程度。如果采用方差的平方根,则就会得到标准差。如果将标准偏差乘以自身就会得到方差。
如果普通求方差要先求均值,再找到每个数与平均数的差值,再将差值的平方值除以个数才是方差。
但Numpy中有一个模块可以直接计算方差的方法:
使用Numpy var()的方法来找到方差
4 机器学习——百分位数
百分位数
统计学中使用百分位数提供一个数字,该数字描述了给定百分比值小于的值。
Numpy模块有一个种用于找到百分位数的方法
使用Numpy percentile()的方法来找到中间值
5 机器学习——数据分布
创建一个包含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栏的直方图用来表示它们
6 机器学习——正态分布
正态数据分布(高斯数据分布)
典型的正态数据分布:
钟形曲线:
正态分布图具有钟形的特征形状,因此也称为钟形曲线。
7 机器学习——散点图
散点图是数据集中的每个值都有点来表示:
python的Matplotlib 模块有一种绘制散点图的方法,一个数组用于x轴的值,另一个数组用于y轴的值:
结果:
随机数据分布
数据集可以包含成千上万甚至数百万个值,我们可以随机生成的值。
让我们创建两个数组,它们都填充来自正态数据分布的1000个随机数。
有1000个点的散点图:
结果:
8 机器学习——线性回归
线性回归
线性回归使用数据点之间的关系在所有数据点之间画一条直线
我们可以导入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()
9 机器学习——sklearn简介
python中的(Scikit-learn)模块是机器学习中最常用的第三方的模块,对常用的机器学习方法进行了封装,包括线性回归,降维,分类,聚类等方法。sklearn中包括很多机器学习的方法,sklearn自带部分的数据集。sklearn datasets 中我们将选择机器学习的方法进行技巧调整参数。模型完成之后就可以预测新数据。之后用python中matplotlib模块直观的进行表示出来。
10 Sklearn datasets
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进行散点图绘图
11 机器学习——回归树
回归树的基本概念:
回归树,就是用数据模型做回归问题,每片的叶子都输出一个预测值。预测值一般时叶子的节点所含训练集元素输出的均值(除了使用均值外可以用线性回归或多元线性回归)
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轴上设置噪点)
12 机器学习——决策树
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) #导入测试集,从接口中调用需要的信息
关于机器学习的基础知识就暂时到这里了,希望以上内容可以对大家有一定的参考价值。
Python机器学习基础相关推荐
- Python机器学习基础教程-第2章-监督学习之K近邻
前言 本系列教程基本就是摘抄<Python机器学习基础教程>中的例子内容. 为了便于跟踪和学习,本系列教程在Github上提供了jupyter notebook 版本: Github仓库: ...
- 回归素材(part4)--python机器学习基础教程
学习笔记,仅供参考 文章目录 python机器学习基础教程 线性模型 用于回归的线性模型 过拟合 岭回归 lasso python机器学习基础教程 线性模型 用于回归的线性模型 过拟合
- 泛化,过拟合,欠拟合素材(part1)--python机器学习基础教程
学习笔记,仅供参考,有错必纠 文章目录 python机器学习基础教程 泛化.过拟合.欠拟合 模型复杂度与训练集大小的关系 python机器学习基础教程 泛化.过拟合.欠拟合 判断一个算法在新数据上表现 ...
- python基础教程免费下载-《Python机器学习基础教程》高清版免费PDF下载
Python机器学习基础教程-[德] 安德里亚斯·穆勒(Andreas C.Müller)[美]莎拉·吉多(Sarah Guido) 著,张亮(hysic) 译 下载地址1:网盘下载 下载地址2:网盘 ...
- Python机器学习基础教程(1)Irises(鸢尾花)分类之新手上路
一.感谢博客的内容提供的参考 标题:最新版学习笔记---Python机器学习基础教程(1)Irises(鸢尾花)分类---附完整代码 作者:非鱼子焉 地址:https://zhu-rui.blog.c ...
- Python机器学习基础篇三《无监督学习与预处理》
前言 前期回顾: Python机器学习基础篇二<为什么用Python进行机器学习> 上面这篇里面写了文本和序列相关. 我们要讨论的第二种机器学习算法是无监督学习算法.无监督学习包括没有已知 ...
- Python机器学习基础篇二《监督学习》
前言 前期回顾: Python机器学习基础篇一<为什么用Python进行机器学习> 前面说过,监督学习是最常用也是最成功的机器学习类型之一.本章将会详细介绍监督学 习,并解释几种常用的监督 ...
- python机器学习基础教程-学习笔记(一)
了解 scikit-learn 及其用法是很重要的,但还有其他一些库也可以改善你的编程体验. scikit-learn 是基于 NumPy 和 SciPy 科学计算库的.此外,我们还会用到 panda ...
- Python机器学习基础之Matplotlib库的使用
声明:代码的运行环境为Python3.Python3与Python2在一些细节上会有所不同,希望广大读者注意.本博客以代码为主,代码中会有详细的注释.相关文章将会发布在我的个人博客专栏<Pyth ...
- Python机器学习基础之Python的基本语法(一)
当今世界已经进入了大数据的时代.随着信息化的不断发展,人工智能.机器学习等词语越来越被人们所熟知,而他们也渐渐地成了这个时代的弄潮儿,走在了信息时代的前端.从本篇博客开始,小编将带领大家一起走进人工智 ...
最新文章
- 如何制止OpenSSH漏洞?
- rules不显示 vue_使用stylelint规范vue项目
- 现代3D图形编程学习-关于本书(译)
- python 画树 递归_数据结构 - python如何递归生成树?
- 马士兵java教程笔记_马士兵java教程笔记4
- ssh 使用公钥登录客户端设置
- python基础教程是什么-python基础教程之python是什么?
- JAVA中list,set,数组之间的转换详解
- Python1 关于安装
- 计算机工作日志如何调取,怎样查找电脑日志?
- Ubuntu环境下远程调试Android手机设备
- 如何获得大学教材的PDF版本?
- Win11本地安全策略怎么设置?
- 代理的原理及类型总结
- 使用google搜索自己在csdn写的博客
- Suse linux 命令行
- 数据分析在微博营销中的应用
- 【读书笔记】《心流:最优体验心理学》——序
- python版亲戚关系计算器
- 开放大世界 codelikeme