哪个网站找做软件下载,多元国际二维码入口,四川招标采购网,买域名做网站一、 机器学习介绍与定义
1. 机器学习定义
机器学习#xff08;Machine Learning#xff09;本质上就是让计算机自己在数据中学习规律#xff0c;并根据所得到的规律对未来数据进行预测。
机器学习包括如聚类、分类、决策树、贝叶斯、神经网络、深度学习#xff08;Deep…一、 机器学习介绍与定义
1. 机器学习定义
机器学习Machine Learning本质上就是让计算机自己在数据中学习规律并根据所得到的规律对未来数据进行预测。
机器学习包括如聚类、分类、决策树、贝叶斯、神经网络、深度学习Deep Learning等算法。
机器学习的基本思路是模仿人类学习行为的过程如我们在现实中的新问题一般是通过经验归纳总结规律从而预测未来的过程。机器学习的基本过程如下 2. 机器学习的发展历史
从机器学习发展的过程上来说其发展的时间轴如下所示 从上世纪50年代的图灵测试提出、塞缪尔开发的西洋跳棋程序标志着机器学习正式进入发展期。
60年代中到70年代末的发展几乎停滞。
80年代使用神经网络反向传播BP算法训练的多参数线性规划MLP理念的提出将机器学习带入复兴时期。
90年代提出的“决策树”ID3算法再到后来的支持向量机SVM算法将机器学习从知识驱动转变为数据驱动的思路。
21世纪初Hinton提出深度学习Deep Learning使得机器学习研究又从低迷进入蓬勃发展期。
从2012年开始随着算力提升和海量训练样本的支持深度学习Deep Learning成为机器学习研究热点并带动了产业界的广泛应用。
3. 机器学习分类
机器学习经过几十年的发展衍生出了很多种分类方法这里按学习模式的不同可分为监督学习、半监督学习、无监督学习和强化学习。
3.1 监督学习
监督学习Supervised Learning是从有标签的训练数据中学习模型然后对某个给定的新数据利用模型预测它的标签。如果分类标签精确度越高则学习模型准确度越高预测结果越精确。
监督学习主要用于回归和分类。 常见的监督学习的回归算法有线性回归、回归树、K邻近、Adaboost、神经网络等。
常见的监督学习的分类算法有朴素贝叶斯、决策树、SVM、逻辑回归、K邻近、Adaboost、神经网络等。
3.2 半监督学习
半监督学习Semi-Supervised Learning是利用少量标注数据和大量无标注数据进行学习的模式。
半监督学习侧重于在有监督的分类算法中加入无标记样本来实现半监督分类。
常见的半监督学习算法有Pseudo-Label、Π-Model、Temporal Ensembling、Mean Teacher、VAT、UDA、MixMatch、ReMixMatch、FixMatch等。
3.3 无监督学习
无监督学习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等。
3.4 强化学习
强化学习Reinforcement Learning类似于监督学习但未使用样本数据进行训练是是通过不断试错进行学习的模式。
在强化学习中有两个可以进行交互的对象智能体Agnet和环境Environment还有四个核心要素策略Policy、回报函数收益信号Reward Function、价值函数Value Function和环境模型Environment Model其中环境模型是可选的。
强化学习常用于机器人避障、棋牌类游戏、广告和推荐等应用场景中。
为了便于读者理解用灰色圆点代表没有标签的数据其他颜色的圆点代表不同的类别有标签数据。监督学习、半监督学习、无监督学习、强化学习的示意图如下所示
4. 机器学习需要具备的基础的知识如何学习机器学习
机器学习涉及到线性代数、微积分、概率和统计。
学习机器学习需要掌握一定的数学和编程基础。以下是一些建议帮助您开始学习机器学习
学习数学基础了解线性代数、概率论和统计学等数学概念。这些概念在机器学习中非常重要可以帮助您理解算法和模型背后的原理。
学习编程语言掌握至少一种常用的编程语言如Python或R。这些语言在机器学习中广泛使用具有丰富的机器学习库和工具。
学习机器学习算法了解常见的机器学习算法如线性回归、决策树、支持向量机、神经网络等。学习它们的原理、应用和优缺点。
学习机器学习工具和框架熟悉常用的机器学习工具和框架如scikit-learn、TensorFlow、PyTorch等。掌握它们的使用方法和基本操作。
实践项目通过实践项目来应用所学的知识。选择一些小型的机器学习项目从数据收集和预处理到模型训练和评估逐步提升自己的实践能力。
学习资源利用在线教程、课程、书籍和开放资源来学习机器学习。有很多免费和付费的学习资源可供选择如Coursera、Kaggle、GitHub上的机器学习项目等。
参与机器学习社区加入机器学习社区与其他学习者和专业人士交流经验和学习资源。参与讨论、阅读博客、参加线下活动等扩展自己的学习网络。
持续学习和实践机器学习是一个不断发展的领域保持学习的态度并持续实践非常重要。跟随最新的研究成果、参与竞赛和项目不断提升自己的技能。
记住机器学习是一个广阔的领域需要不断的学习和实践才能掌握。持续投入时间和精力逐步积累经验和知识便会逐渐掌握机器学习的技能。
5 机器学习的应用场合
机器学习的应用场景非常广泛几乎涵盖了各个行业和领域。以下是一些常见的机器学习应用场景的示例 自然语言处理NLP 自然语言处理是人工智能中的重要领域之一涉及计算机与人类自然语言的交互。NLP技术可以实现语音识别、文本分析、情感分析等任务为智能客服、聊天机器人、语音助手等提供支持。 医疗诊断与影像分析 机器学习在医疗领域有着广泛的应用包括医疗图像分析、疾病预测、药物发现等。深度学习模型在医疗影像诊断中的表现引人注目。 金融风险管理 机器学习在金融领域的应用越来越重要尤其是在风险管理方面。模型可以分析大量的金融数据预测市场波动性、信用风险等。 预测与推荐系统 机器学习在预测和推荐系统中也有广泛的应用如销售预测、个性化推荐等。协同过滤和基于内容的推荐是常用的技术。 制造业和物联网 物联网IoT在制造业中的应用越来越广泛机器学习可用于处理和分析传感器数据实现设备预测性维护和质量控制。 能源管理与环境保护 机器学习可以帮助优化能源管理减少能源浪费提高能源利用效率。通过分析大量的能源数据识别优化的机会。 决策支持与智能分析 机器学习在决策支持系统中的应用也十分重要可以帮助分析大量数据辅助决策制定。基于数据的决策可以更加准确和有据可依。 图像识别与计算机视觉 图像识别和计算机视觉是另一个重要的机器学习应用领域它使计算机能够理解和解释图像。深度学习模型如卷积神经网络CNN在图像分类、目标检测等任务中取得了突破性进展。
6. 机器学习趋势分析
机器学习正真开始研究和发展应该从80年代开始,深度神经网络Deep Neural Network、强化学习Reinforcement Learning、卷积神经网络Convolutional Neural Network、循环神经网络Recurrent Neural Network、生成模型Generative Model、图像分类Image Classification、支持向量机Support Vector Machine、迁移学习Transfer Learning、主动学习Active Learning、特征提取Feature Extraction是机器学习的热点研究。
以深度神经网络、强化学习为代表的深度学习相关的技术研究热度上升很快近几年仍然是研究热点。
7. 机器学习项目开发步骤
有5个基本步骤用于执行机器学习任务
收集数据无论是来自excelaccess文本文件等的原始数据这一步收集过去的数据构成了未来学习的基础。相关数据的种类密度和数量越多机器的学习前景就越好。准备数据任何分析过程都会依赖于使用的数据质量如何。人们需要花时间确定数据质量然后采取措施解决诸如缺失的数据和异常值的处理等问题。探索性分析可能是一种详细研究数据细微差别的方法从而使数据的质量迅速提高。练模型此步骤涉及以模型的形式选择适当的算法和数据表示。清理后的数据分为两部分 - 训练和测试比例视前提确定; 第一部分训练数据用于开发模型。第二部分测试数据用作参考依据。评估模型为了测试准确性使用数据的第二部分保持/测试数据。此步骤根据结果确定算法选择的精度。检查模型准确性的更好测试是查看其在模型构建期间根本未使用的数据的性能。提高性能此步骤可能涉及选择完全不同的模型或引入更多变量来提高效率。这就是为什么需要花费大量时间进行数据收集和准备的原因。
无论是任何模型这5个步骤都可用于构建技术当我们讨论算法时您将找到这五个步骤如何出现在每个模型中
二、scikit-learn工具介绍 Python语言机器学习工具Scikit-learn包括许多智能的机器学习算法的实现Scikit-learn文档完善容易上手丰富的API接口函数Scikit-learn官网https://scikit-learn.org/stable/#Scikit-learn中文文档https://scikitlearn.com.cn/scikit-learn中文社区
1 scikit-learn安装
参考以下安装教程https://www.sklearncn.cn/62/
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scikit-learn2 Scikit-learn包含的内容
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
三 数据集
1 sklearn玩具数据集介绍
数据量小数据在sklearn库的本地只要安装了sklearn不用上网就可以获取
2 sklearn现实世界数据集介绍
数据量大数据只能通过网络获取
3 sklearn加载玩具数据集
示例1鸢尾花数据
from sklearn.datasets import load_iris
iris load_iris()#鸢尾花数据鸢尾花数据集介绍
特征有:
花萼长 sepal length
花萼宽sepal width
花瓣长 petal length
花瓣宽 petal width
三分类
0-Setosa山鸢尾
1-Versicolour变色鸢尾
2-Virginica维吉尼亚鸢尾 from sklearn.datasets import load_iris
iris load_iris() #返回一个Bunch对象iris字典中有几个重要属性:
# data 特征
# feature_names 特征描述
# target 目标
# target_names 目标描述
# DESCR 数据集的描述
# filename 下后到本地保存后的文件名print(iris.data)#得到特征
print(iris.feature_names) #特征描述
print(iris.target) #目标形状
print(iris.target_names)#目标描述
print(iris.filename) #iris.csv 保存后的文件名
print(iris.DESCR)#数据集的描述下面使用pandas把特征和目标一起显示出来
import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
iris load_iris()
feature iris.data
target iris.target
target.shape(len(target), 1)
data np.hstack([feature, target])
cols iris.feature_names
cols.append(target)
pd.DataFrame(data,columnscols)示例2分析糖尿病数据集
这是回归数据集有442个样本有可能就有442个目标值。
import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
iris load_iris()
feature iris.data
target iris.targettarget.shape(len(target), 1)
data np.hstack([feature, target])
cols iris.feature_names
cols.append(target)
pd.DataFrame(data,columnscols)4 sklearn获取现实世界数据集
(1)所有现实世界数据通过网络才能下载后默认保存的目录可以使用下面api获取。实际上就是保存到home目录
from sklearn import datasets
datasets.get_data_home() #查看数据集默认存放的位置(2)下载时有可能回为网络问题而出题要“小心”的解决网络问题不可言……
(3)第一次下载会保存的硬盘中如果第二次下载因为硬盘中已经保存有了所以不会再次下载就直接加载成功了。
示例获取20分类新闻数据
(1)使用函数: sklearn.datasets.fetch_20newsgroups(data_home,subset)
(2)函数参数说明:
(2.1) data_home
None这是默认值下载的文件路径为 “C:/Users/ADMIN/scikit_learn_data/20news-bydate_py3.pkz”
自定义路径例如 “./src”, 下载的文件路径为“./20news-bydate_py3.pkz”(2.2) subset
“train”只下载训练集
“test”只下载测试集
“all” 下载的数据包含了训练集和测试集(2.3) return_X_y决定着返回值的情况
False这是默认值
True,(3) 函数返值说明:
当参数return_X_y值为False时 函数返回Bunch对象,Bunch对象中有以下属性*data:特征数据集, 长度为18846的列表list, 每一个元素就是一篇新闻内容 共有18846篇*target:目标数据集长度为18846的数组ndarray, 第一个元素是一个整数整数值为[0,20)*target_names:目标描述长度为20的list*filenames长度为18846的ndarray, 元素为字符串,代表新闻的数据位置的路径当参数return_X_y值为True时函数返回值为元组元组长度为2 第一个元素值为特征数据集第二个元素值为目标数据集代码
from sklearn.datasets import fetch_20newsgroups #这是一个20分类的数据
news fetch_20newsgroups(data_homeNone,subsetall)
print(len(news.data)) #18846
print(news.target.shape) #(18846,)
print(len(news.target_names)) #20
print(len(news.filenames)) #188465 本地csv数据
(1) 创建csv文件
方式1打开计事本写出如下数据数据之间使用英文下的逗号, 保存文件后把后缀名改为csv
csv文件可以使用excel打开
, milage,Liters,Consumtime,target
40920,8.326976,0.953952,3
14488,7.153469,1.673904,2
26052,1.441871,0.805124,1
75136,13.147394,0.428964,1方式2创建excel 文件, 填写数据以csv为后缀保存文件 (2) pandas加载csv
使用pandas的read_csv(“文件路径”)函数可以加载csv文件得到的结果为数据的DataFrame形式
pd.read_csv(./src/ss.csv)6 数据集的划分 1. 复习不定长参数
一个* 把多个参数转为元组
两个* 把多个关键字参数转为字典 def m(*a, **b):print(a) #(hello, 123)print(b) #{name: 小王, age: 30, sex: 男}
m(hello, 123, name小王, age30, sex男)2. 复习列表值的解析
list [11,22,33]
a, b, c list # a11 b22 c33
a, b [小王, 30] #a小王 b30(1) 函数
sklearn.model_selection.train_test_split(*arrays**options)
参数
(1) *array 这里用于接收1到多个列表、numpy数组、稀疏矩阵或padas中的DataFrame。
(2) **options 重要的关键字参数有test_size 值为0.0到1.0的小数表示划分后测试集占的比例random_state 值为任意整数表示随机种子使用相同的随机种子对相同的数据集多次划分结果是相同的。否则多半不同
2 返回值说明返回值为列表list, 列表长度与形参array接收到的参数数量相关联, 形参array接收到的是什么类型list中对应被划分出来的两部分就是什么类型(2)示例
列表数据集划分
因为随机种子都使用了相同的整数(22)所以划分的划分的情况是相同的。
from sklearn.model_selection import train_test_split
data1 [1, 2, 3, 4, 5]
data2 [1a, 2a,3a, 4a, 5a]
a, b train_test_split(data1, test_size0.4, random_state22)
print(a, b) #[4, 1, 5] [2, 3]a, b train_test_split(data2, test_size0.4, random_state22)
print(a, b) #[4a, 1a, 5a] [2a, 3a]a, b, c, d train_test_split(data1, data2, test_size0.4, random_state22)
print(a,b,c,d) #[4a, 1a, 5a] [2a, 3a]ndarray数据集划分
划分前和划分后的数据类型是相同的 data1为list,划分后的a、b也是list data2为ndarray,划分后的c、d也是ndarray
from sklearn.model_selection import train_test_split
import numpy as np
data1 [1, 2, 3, 4, 5]
data2 np.array([1a, 2a,3a, 4a, 5a])
a, b, c, d train_test_split(data1, data2, test_size0.4, random_state22)
print(a, b, c, d) #[4, 1, 5] [2, 3] [4a 1a 5a] [2a 3a]
print(type(a), type(b), type(c), type(d)) #class list class list class numpy.ndarray class numpy.ndarray二维数组数据集划分
train_test_split只划分第一维度,第二维度保持不变
from sklearn.model_selection import train_test_split
import numpy as np
data1 np.arange(1, 16, 1)
data1.shape(5,3)
print(data1)
a, b train_test_split(data1, test_size0.4, random_state22)
print(a\n, a)
print(b\n, b)[[ 1 2 3][ 4 5 6][ 7 8 9][10 11 12][13 14 15]]
a[[10 11 12][ 1 2 3][13 14 15]]
b[[4 5 6][7 8 9]]DataFrame数据集划分
可以划分DataFrame, 划分后的两部分还是DataFrame
from sklearn.model_selection import train_test_split
import numpy as np
import pandas as pd
data1 np.arange(1, 16, 1)
data1.shape(5,3)
data1 pd.DataFrame(data1, index[1,2,3,4,5], columns[one,two,three])
print(data1)a, b train_test_split(data1, test_size0.4, random_state22)
print(\n, a)
print(\n, b)one two three
1 1 2 3
2 4 5 6
3 7 8 9
4 10 11 12
5 13 14 15one two three
4 10 11 12
1 1 2 3
5 13 14 15one two three
2 4 5 6
3 7 8 9字典数据集划分
可以划分非稀疏矩阵
用于将字典列表转换为特征向量。这个转换器主要用于处理类别数据和数值数据的混合型数据集
1.对于类别特征DictVectorizer 会为每个不同的类别创建一个新的二进制特征如果原始数据中的某个样本具有该类别则对应的二进制特征值为1否则为0。
2.对于数值特征保持不变直接作为特征的一部分
这样整个数据集就被转换成了一个适合机器学习算法使用的特征向量形式
from sklearn.feature_extraction import DictVectorizer
data [{city:成都, age:30, temperature:20}, {city:重庆,age:33, temperature:60}, {city:北京, age:42, temperature:80},{city:上海, age:22, temperature:70},{city:成都, age:72, temperature:40},]
transfer DictVectorizer(sparseTrue)
data_new transfer.fit_transform(data)
print(data_new:\n, data_new)
x data_new.toarray()
print(type(x))
print(x)#(0,0)是矩阵的行列下标 30是值
data_new:(0, 0) 30.0(0, 3) 1.0(0, 5) 20.0(1, 0) 33.0(1, 4) 1.0(1, 5) 60.0(2, 0) 42.0(2, 2) 1.0(2, 5) 80.0(3, 0) 22.0(3, 1) 1.0(3, 5) 70.0(4, 0) 72.0(4, 3) 1.0(4, 5) 40.0
class numpy.ndarray
# 第一行中:30表示age的值 0表示上海 0表示北京 1表示成都 0表示重庆 20表示temperature
[[30. 0. 0. 1. 0. 20.][33. 0. 0. 0. 1. 60.][42. 0. 1. 0. 0. 80.][22. 1. 0. 0. 0. 70.][72. 0. 0. 1. 0. 40.]]a, b train_test_split(data_new, test_size0.4, random_state22)
print(a)
print(\n, b)(0, 0) 22.0(0, 1) 1.0(0, 5) 70.0(1, 0) 30.0(1, 3) 1.0(1, 5) 20.0(2, 0) 72.0(2, 3) 1.0(2, 5) 40.0(0, 0) 33.0(0, 4) 1.0(0, 5) 60.0(1, 0) 42.0(1, 2) 1.0(1, 5) 80.0#data_new.toarray()是ndarray
a, b train_test_split(data_new.toarray(), test_size0.4, random_state22)
print(a)
print(\n, b)[[22. 1. 0. 0. 0. 70.][30. 0. 0. 1. 0. 20.][72. 0. 0. 1. 0. 40.]][[33. 0. 0. 0. 1. 60.][42. 0. 1. 0. 0. 80.]]鸢尾花数据集划分
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
iris load_iris()
list train_test_split(iris.data, iris.target, test_size0.2, random_state22)
#x_train训练特征数据集,x_test测试特征数据集, y_train训练目标数据集,y_test测试目标数据集,
x_train, x_test, y_train, y_test list
#打印结果为: (120, 4) (30, 4) (120,) (30,)
print(x_train.shape, x_test.shape, y_train.shape, y_test.shape)现实世界数据集划分
from sklearn.datasets import fetch_20newsgroups
from sklearn.model_selection import train_test_split
import numpy as np
news fetch_20newsgroups(data_homeNone, subsetall)
list train_test_split(news.data, news.target,test_size0.2, random_state22)
#
# 返回值是一个list:其中有4个值分别为训练集特征、测试集特征、训练集目标、测试集目标
# 与iris相同点在于x_train和x_test是列表而iris是
#
x_train, x_test, y_train, y_test list
#打印结果为: 15076 3770 (15076,) (3770,)
print(len(x_train), len(x_test), y_train.shape, y_test.shape)