学做网站论坛,大连网络建站公司分析,海尔网站建设的目标,律师事务所东莞网站建设机器学习
一、机器学习
1.定义
让计算机在数据中学习规律并根据得到的规律对未来进行预测。
2.发展史
19世纪50年代#xff1a;图灵测试提出、塞缪尔开发的西洋跳棋程序#xff0c;标志着机器学习正式进入发展期
19世纪80年代#xff1a;神经网络反向传播#xff08;…机器学习
一、机器学习
1.定义
让计算机在数据中学习规律并根据得到的规律对未来进行预测。
2.发展史
19世纪50年代图灵测试提出、塞缪尔开发的西洋跳棋程序标志着机器学习正式进入发展期
19世纪80年代神经网络反向传播BP算法训练的多参数线性规划MLP复兴时代
19世纪90年代决策树ID3算法支持向量机SVM由知识驱动转变为数据驱动
21世纪初Hinton提出深度学习Deep Learning蓬勃发展时期
2012年算力提升和海量训练样本的支持深度学习成为机器学习研究热点
3.分类
按学习模式不同
监督学习给结果去学习模型然后对给定的新数据利用模型去进行预测。主要用于回归和分类。
半监督学习利用少量标注数据和大量无标注数据进行学习侧重于在有监督的分类算法中加入无标记样本来实现半监督分类。
无监督学习没有结果给数据找出规律。主要用于关联分析、聚类和降维。对抗神经网络。
强化学习类似于监督学习但未使用样本数据进行训练通过不断试错进行学习的模式。两个可交互对象智能体和环境四个核心要素策略、回报函数收益信号、价值函数、环境模型可选。常用于机器人避障、棋牌类游戏、广告和推荐等应用场景。
4.机器学习项目开发步骤
1.收集数据
2.准备数据
3.训练模型
4.评估模型
5.提高性能
二、scikit-learn工具
1.安装
windowsr输入cmd进入命令提示符
激活condaconda activate
创建sklearn虚拟环境conda create -n sklearn python3.9
激活sklearn环境activate sklearn
pip install --index https://pypi.mirrors.ustc.edu.cn/simple/ numpy
pip install --index https://pypi.mirrors.ustc.edu.cn/simple/ scipy
pip install --index Verifying - USTC Mirrors matplotlib
pip install --index Verifying - USTC Mirrors pandas
pip install --index Verifying - USTC Mirrors scikit-learn
参考以下安装教程https://www.sklearncn.cn/62/
安装报错参考pip 安装 scikit-learn失败解决教程_failed to build scikit-learn-CSDN博客
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scikit-learn
VScode安装
环境选择-测试是否可以正常使用
2.scikit-learn包含内容
分类
回归
聚类
降低维度
模型选择
特征预处理
三、数据集 1.sklearn玩具数据集
数据在sklearn库的本地数据量小
函数返回load_boston(*[,return_X_y])加载并返回波士顿房价数据集回归load_iris(*[,return_X_yas_frame])加载并返回鸢尾花数据集分类load_diabetes(*[,return_X_y,as_frame])加载并返回糖尿病数据集回归load_digits(*[,n_class,return_X_yas_frame])加载并返回数字数据集分类load_linnerud(*[,return_X_y,as_frame])加载并返回linnerud物理锻炼数据集load_wine(*[,return_X_yas_frame])加载并返回葡萄酒数据集分类load_breast_cancer(*[,return_X_yas_frame])加载并返回威斯康星州乳腺癌数据集分类
2.sklearn现实世界数据集
通过网络获取数据量大
函数说明fetch_olivetti_faces(*[,data_home,...])从ATT分类中加载Olivetti人脸数据集fetch_20newsgroups(*[,data_home,subset,...])从20个新闻组数据集中加载文件名和数据分类fetch_20newsgroups_vectorized(*[,subset,...])加载20个新闻组数据集并将其矢量化为令牌计数分类fetch_lfw_people(*[,data_home,funneled...])将标签的面孔加载到WildLFW人数据集中分类fetch_lfw_pairs(*[,subset,data_home,...])在“WildLFW”对数据集中加载标签的面部分类fetch_covtype(*[,data_home,...])加载covertype植被型数据集数据集分类fetch_rcv1(*[,data_home,subset,...])加载RCV1多标签数据集分类fetch_kddcup99(*[,subset,data_home,...])加载kddcup99网络入侵检测数据集分类fetch_california_housing(*[,data_home,...])加载加利福尼亚住房数据集回归
3.sklearn加载玩具数据集
eg1加载鸢尾花数据
from sklearn.datasets import load_iris#加载玩具数据(鸢尾花数据集)
iris load_iris()
print(iris.data)#数据(特征数据)
print(iris.data.shape)
print(iris.feature_names)#特征名称
print(iris.target)#标签(目标)
print(iris.target.shape)
print(iris.target_names)#目标描述
print(iris.filename) #iris.csv 保存后的文件名
print(iris.DESCR)#数据集的描述
特征有:
花萼长 sepal length
花萼宽sepal width
花瓣长 petal length
花瓣宽 petal width
三分类
0-Setosa山鸢尾
1-Versicolour变色鸢尾
2-Virginica维吉尼亚鸢尾
用pandas把特征和目标一起显示出来
from sklearn.datasets import load_iris
import pandas as pd
import numpy as np
def loadiris1():iris load_iris()#加载鸢尾花数据(去本地加载了一个csv文件)# print(iris.data)#特征数据# print(iris.feature_names)# print(iris.target)# print(iris.target_names)# print(iris.DESCR)# print(iris.filename)# print(data什么类型的数据,type(iris.data),iris.data.dtype)# print(target什么类型的数据,type(iris.target),iris.target.dtype)x iris.data# print(x.shape,x.dtype)y iris.target.reshape(x.shape[0],1).astype(np.float64)#把一维数组转化为2维数组(待会可以和x堆叠) 再把保存的数据的类型转化为跟x一样datanp.hstack([x,y])# print(data,data.shape)# print(data[80][4])# print(iris.target_names[int(data[80][4])])# print(iris.feature_names.append(target))iris.feature_names.append(target)datafpd.DataFrame(datadata,columnsiris.feature_names)print(dataf)
loadiris1()
4.sklearn获取现实世界数据集
1.联网下载后保存到home目录
from sklearn import datasets
datasets.get_data_home() #查看数据集默认存放的位置
eg2.获取20分类新闻数据
sklearn.datasets.fetch_20newsgroups(data_home,subset)
data_home
subset:train只下载训练集test只下载测试集all训练集和测试集
return_X_y决定返回值的情况False默认
当参数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
datafetch_20newsgroups(data_home./src,subsettest)
print(data.data[1])
print(data.target_names)
5.加载本地自己的数据集
1.csv文件
①txt数据之间用英文逗号隔开保存后缀名改为csv
②excel填写数据以csv后缀保存文件
2.pandas加载csv
pd.read_csv(./src/ss.csv)
数据为DataFrame形式
import pandas as pd
# 作业( ./ ../ / 是什么意思 而且举例说明)
#. (点) 表示当前目录从当前工作目录开始的相对路径
#.. (两个点) 表示上一级目录引用位于当前目录父目录中的文件
#/路径分隔符用于分隔目录名和文件名
datapd.read_csv(src/ss.csv)
print(data)
import pandas as pd
datapd.read_excel(src/ss.xlsx)
print(data)
6.数据集的划分
1.函数
sklearn.model_selection.train_test_split(*arrays**options)
*array 用于接收1到多个列表、numpy数组、稀疏矩阵或padas中的DataFrame。
**options 重要的关键字参数有 test_size 值为0.0到1.0的小数表示划分后测试集占的比例 random_state 值为任意整数表示随机种子使用相同的随机种子对相同的数据集多次划分结果是相同的。否则多半不同 shuffle布尔值。默认为True在分割之前是否对数据进行洗牌 stratify分层划分默认是y按照 y 中类别的比例进行分层抽样确保训练集和测试集中各类别样本的比例相同。 返回值说明返回值为列表list, 列表长度与形参array接收到的参数数量相关联, 形参array接收到的是什么类型list中对应被划分出来的两部分就是什么类型
2.示例
复习
arr2[100,200]
x,yarr2
print(x,y)
def m(*a, **b):print(a) #(hello, 123)print(b) #{name: 小王, age: 30, sex: 男} m(hello, 123, name小王, age30, sex男)
def m2(a,b,c):pass
dic{a:123,b:12,c:123}
print(dic) #{a: 123, b: 12, c: 123}
#m2(**dic)相当于m2(adic[a],bdic[b],cdic[c])
①.列表数据集划分
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数据集划分
划分前和划分后的数据类型是相同的
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
# ndarray的数据集划分
from sklearn.model_selection import train_test_split
import numpy as np
xnp.arange(100).reshape(50,2)
# print(x)#这个x数据集中有几个数据(50个) 每一个数据有2个特征
x_train,x_testtrain_test_split(x,test_size11,random_state42)
print(x_train.shape)
print(x_test.shape)
print(type(x_train))
print(type(x_test)) ③.二维数组数据集划分
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]] eg3
from sklearn.model_selection import train_test_split
arr1[1,23,2,231,25,36,23,32,22,34,123,12,3,2,3]
x_train,x_testtrain_test_split(arr1,train_size0.8)
print(arr1)
print(x_train,x_test)
#[1, 23, 2, 231, 25, 36, 23, 32, 22, 34, 123, 12, 3, 2, 3]
[34, 2, 123, 12, 3, 1, 2, 231, 32, 36, 22, 23] [23, 25, 3]
from sklearn.model_selection import train_test_split
arr1[1111,23,2,231,25,36,23,32,22,34,123,12,3,33333,3]
arr2[9999,1,1,1,1,1,2,2,2,2,3,3,3,66666,3]
x_train,x_test,y_train,y_testtrain_test_split(arr1,arr2,train_size0.8)#arrays
print(arr1)
print(x_train,x_test)
print(y_train,y_test)
#[1111, 23, 2, 231, 25, 36, 23, 32, 22, 34, 123, 12, 3, 33333, 3]
#[9999, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 66666, 3]
#[34, 3, 1111, 22, 33333, 25, 123, 32, 23, 12, 2, 3] [36, 23, 231]
#[2, 3, 9999, 2, 66666, 1, 3, 2, 2, 3, 1, 3] [1, 1, 1]
#将arr1和对应的arr2打乱再划分成训练集和测试集
from sklearn.model_selection import train_test_split
x[[11,2,3,31,111],[12,2,3,32,112],[1,23,3,33,113],[14,2,3,34,114],[15,2,3,35,115],[16,2,3,36,116],[1,23,3,36,117],[1,23,3,316,118],[1,23,3,326,119],[1,23,3,336,120]]
y[1,1,1,1,1,2,2,2,2,2]
x_train,x_test,y_train,y_testtrain_test_split(x,y,test_size0.3,stratifyy,random_state40)#stratifyy按y进行分层
print(x_train:\n,x_train)
print(x_test:\n,x_test)
print(y_train:\n,y_train)
print(y_test:\n,y_test)
print(type(x_test))
④.DataFrame数据集划分
# dataFrame的数据集划分
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
# 数据集的划分
datanp.arange(1,100).reshape(33,3)
datapd.DataFrame(data,columns[a,b,c])
# print(data)
train,testtrain_test_split(data,train_size0.7,shuffleTrue,random_state4)
print(train.shape)
print(test.shape)
⑤.字典数据集划分
可以划分非稀疏矩阵
用于将字典列表转换为特征向量。这个转换器主要用于处理类别数据和数值数据的混合型数据集
# 字典的特征提取和数据划分
from sklearn.feature_extraction import DictVectorizer
from sklearn.model_selection import train_test_split
arr[{name:重庆,count:2000,tempreture:41},{name:成都,count:2300,tempreture:28},{name:北京,count:4900,tempreture:20},{name:昆明,count:190,tempreture:22},{name:昆明,count:290,tempreture:22}]
modelDictVectorizer(sparseFalse)#sparseFalse表示返回一个完整的矩阵sparseTrue表示返回一个稀疏矩阵
datamodel.fit_transform(arr)#提取特征
print(data)
x_train,y_traintrain_test_split(data,train_size0.8,random_state666)
print(x_train)
print(y_train)
⑥.鸢尾花数据集划分
# 鸢尾花数据集划分
from sklearn import datasets
from sklearn.model_selection import train_test_split
irisdatasets.load_iris()
Xiris.data
yiris.target
X_train,X_test,y_train,y_testtrain_test_split(X,y,train_size0.8,random_state4,stratifyy)
print(X)
print(y)
print(X_train.shape)
print(X_test.shape)
print(y_train.shape)
print(y_test.shape)
print(y_train)
print(iris.feature_names)
print(iris.target_names) ⑦.现实世界数据集划分
from sklearn.datasets import fetch_20newsgroups
from sklearn.model_selection import train_test_split
import numpy as np
newsfetch_20newsgroups(data_home./src,subsettrain)
# print(news.data[0])
x_train,x_test,y_train,y_testtrain_test_split(news.data,news.target,train_size0.8,random_state666)
print(np.array(x_train).shape)
print(np.array(x_test).shape)
print(x_train[0:5])
print(y_train)
print(news.target_names)