机器学习day1-数据集

news2024/11/17 23:43:34

机器学习

一、机器学习

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.安装

windows+r输入cmd,进入命令提示符

激活conda:conda activate

创建sklearn虚拟环境:conda create -n sklearn python=3.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_y,as_frame])加载并返回鸢尾花数据集(分类)
load_diabetes(*[,return_X_y,as_frame])加载并返回糖尿病数据集(回归)
load_digits(*[,n_class,return_X_y,as_frame])加载并返回数字数据集(分类)
load_linnerud(*[,return_X_y,as_frame])加载并返回linnerud物理锻炼数据集
load_wine(*[,return_X_y,as_frame])加载并返回葡萄酒数据集(分类)
load_breast_cancer(*[,return_X_y,as_frame])加载并返回威斯康星州乳腺癌数据集(分类)

2.sklearn现实世界数据集

通过网络获取,数据量大

函数说明
fetch_olivetti_faces(*[,data_home,...])从AT&T(分类)中加载Olivetti人脸数据集
fetch_20newsgroups(*[,data_home,subset,...])从20个新闻组数据集中加载文件名和数据(分类)
fetch_20newsgroups_vectorized(*[,subset,...])加载20个新闻组数据集并将其矢量化为令牌计数(分类)
fetch_lfw_people(*[,data_home,funneled...])将标签的面孔加载到Wild(LFW)人数据集中(分类)
fetch_lfw_pairs(*[,subset,data_home,...])在“Wild(LFW)”对数据集中加载标签的面部(分类)
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一样
    data=np.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")
    dataf=pd.DataFrame(data=data,columns=iris.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
​
data=fetch_20newsgroups(data_home="./src",subset="test")
​
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
# 作业("" "./" "../"  "/" 是什么意思 而且举例说明)
#. (点) 表示当前目录,从当前工作目录开始的相对路径
#.. (两个点) 表示上一级目录,引用位于当前目录父目录中的文件
#/路径分隔符,用于分隔目录名和文件名
data=pd.read_csv('src/ss.csv')
print(data)
import pandas as pd
data=pd.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,y=arr2
print(x,y)
def m(*a, **b):
    print(a)       #('hello', 123)
    print(b)       #{'name': '小王', 'age': 30, 'sex': '男'}   
     
m("hello", 123,  name="小王", age=30, 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(a=dic["a"],b=dic["b"],c=dic["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_size=0.4, random_state=22)
print(a, b) #[4, 1, 5]  [2, 3]
​
a, b = train_test_split(data2, test_size=0.4, random_state=22)
print(a, b) #['4a', '1a', '5a'] ['2a', '3a']
​
a, b, c, d  = train_test_split(data1, data2,  test_size=0.4, random_state=22)
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_size=0.4, random_state=22)
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
x=np.arange(100).reshape(50,2)
# print(x)#这个x数据集中有几个数据(50个) 每一个数据有2个特征
x_train,x_test=train_test_split(x,test_size=11,random_state=42)
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_size=0.4, random_state=22)
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_test=train_test_split(arr1,train_size=0.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_test=train_test_split(arr1,arr2,train_size=0.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_test=train_test_split(x,y,test_size=0.3,stratify=y,random_state=40)#stratify=y,按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
# 数据集的划分
data=np.arange(1,100).reshape(33,3)
data=pd.DataFrame(data,columns=['a','b','c'])
# print(data)
train,test=train_test_split(data,train_size=0.7,shuffle=True,random_state=4)
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}]
model=DictVectorizer(sparse=False)#sparse=False表示返回一个完整的矩阵,sparse=True表示返回一个稀疏矩阵
data=model.fit_transform(arr)#提取特征
print(data)
x_train,y_train=train_test_split(data,train_size=0.8,random_state=666)
print(x_train)
print(y_train)
⑥.鸢尾花数据集划分
# 鸢尾花数据集划分
from sklearn import datasets
from sklearn.model_selection import train_test_split
iris=datasets.load_iris()
X=iris.data
y=iris.target
X_train,X_test,y_train,y_test=train_test_split(X,y,train_size=0.8,random_state=4,stratify=y)
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
news=fetch_20newsgroups(data_home="./src",subset="train")
# print(news.data[0])
x_train,x_test,y_train,y_test=train_test_split(news.data,news.target,train_size=0.8,random_state=666)
print(np.array(x_train).shape)
print(np.array(x_test).shape)
print(x_train[0:5])
print(y_train)
print(news.target_names)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2242468.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue基础(1)_模板语法、数据绑定

模板语法 Vue模板语法有2大类&#xff1a; 1、插值语法&#xff1b; 功能&#xff1a;用于解析标签体内内容。 写法&#xff1a;{{xxx}}&#xff0c;xxx是js表达式&#xff0c;且可以直接读取到data中的所有属性。 2、指令语法&#xff1a; 功能&#xff1a;用于解析标签(包括…

《生成式 AI》课程 第3講 CODE TASK 任务2:角色扮演的机器人

课程 《生成式 AI》课程 第3講&#xff1a;訓練不了人工智慧嗎&#xff1f;你可以訓練你自己-CSDN博客 我们希望你设计一个机器人服务&#xff0c;你可以用LM玩角色扮演游戏。 与LM进行多轮对话 提示:告诉聊天机器人扮演任意角色。 后续输入:与聊天机器人交互。 Part 2: Role…

【软件工程】一篇入门UML建模图(类图)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;软件开发必练内功_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前…

展会邀约|加速科技与您相约IC China 2024!

第二十一届中国国际半导体博览会&#xff08; IC China 2024&#xff09;将于 2024 年11月18日—11月20日在北京国家会议中心举行。加速科技将携高性能测试机ST2500EX、ST2500E、eATE及全系测试解决方案亮相E2馆B150展位。博览会期间&#xff0c;将同期举办"半导体产业前沿…

用python中的tkinter包实现进度条

python中的tkinter包是一种常见的设计程序的GUI界面用的包。本文主要介绍这里面的一个组件&#xff1a;进度条&#xff08;Progressbar&#xff09;。Tkinter Progressbar里面对进度条组件已经做了一定的介绍&#xff0c;但比较抽象。本文以另一种方式介绍这个组件及其常用用法…

蓝桥杯每日真题 - 第15天

题目&#xff1a;&#xff08;钟表&#xff09; 题目描述&#xff08;13届 C&C B组B题&#xff09; 解题思路&#xff1a; 理解钟表指针的运动&#xff1a; 秒针每分钟转一圈&#xff0c;即每秒转6度。 分针每小时转一圈&#xff0c;即每分钟转6度。 时针每12小时转一圈…

rust高级特征

文章目录 不安全的rust解引用裸指针裸指针与引用和智能指针的区别裸指针使用解引用运算符 *&#xff0c;这需要一个 unsafe 块调用不安全函数或方法在不安全的代码之上构建一个安全的抽象层 使用 extern 函数调用外部代码rust调用C语言函数rust接口被C语言程序调用 访问或修改可…

ArcGIS Pro属性表乱码与字段名3个汉字解决方案大总结

01 背景 我们之前在使用ArcGIS出现导出Excel中文乱码及shp添加字段3个字被截断的情况&#xff0c;我们有以下应对策略&#xff1a; 推荐阅读&#xff1a;ArcGIS导出Excel中文乱码及shp添加字段3个字被截断&#xff1f; 那如果我们使用ArGIS Pro出现上述问题&#xff0c;该如何…

GOLANG+VUE后台管理系统

1.截图 2.后端工程截图 3.前端工程截图

STM32设计防丢防摔智能行李箱

目录 目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 1.电路图采用Altium Designer进行设计&#xff1a; 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 随着科技的不断发展&#xff0c;嵌入式系统、物联网技术、智能设备…

论文阅读 - Causally Regularized Learning with Agnostic Data Selection

代码链接&#xff1a; GitHub - HMTTT/CRLR: CRLR尝试实现 https://arxiv.org/pdf/1708.06656v2 目录 摘要 INTRODUCTION 2 RELATED WORK 3 CAUSALLY REGULARIZED LOGISTIC REGRESSION 3.1 Problem Formulation 3.2 Confounder Balancing 3.3 Causally Regularized Lo…

探索Python文档自动化的奥秘:`python-docx`库全解析

文章目录 探索Python文档自动化的奥秘&#xff1a;python-docx库全解析1. 背景&#xff1a;为何选择python-docx&#xff1f;2. python-docx是什么&#xff1f;3. 如何安装python-docx&#xff1f;4. 简单库函数使用方法创建文档添加段落添加标题添加表格插入图片 5. 应用场景自…

Vue3 -- element-plus【项目集成1】

本次项目采用的UI组件库为element-plus&#xff0c;请各位看官根据实际情况进行观看。 集成element-plus&#xff1a; 官网直达车&#xff1a;element-plus 官网明确指出如何引入使用。 安装element-plus&#xff1a; 选择一个你喜欢的包管理器&#xff1a; npm install el…

MySQL 中的集群部署方案

文章目录 MySQL 中的集群部署方案MySQL ReplicationMySQL Group ReplicationInnoDB ClusterInnoDB ClusterSetInnoDB ReplicaSetMMMMHAGalera ClusterMySQL ClusterMySQL Fabric 总结参考 MySQL 中的集群部署方案 MySQL Replication MySQL Replication 是官方提供的主从同步方…

【功耗现象】com.gorgeous.lite后台Camera 使用2小时平均电流200mA耗电量400mAh现象

现象 轻颜相机(com.gorgeous.lite)后台Camera 使用2小时平均电流200mA(BugReport提供的电流参考数据),耗电量400mAh 即耗电占比(200mA*2h)/(12.83h*52.68mA )400mAh/623mAh62% CameraOct 10 202321:03:08 - 23:03:372h16m15s859ms to 4h16m44s984msactive duration: 2h 0m 29…

Unix信号

文章目录 信号概念及产生键盘事件eg软件中断eg硬件中断eg 信号处理方式PCB中关于信号的数据结构信号捕捉 信号集sigset_tsigprocmasksigpending 信号处理程序signal、sigaction可重入函数可靠信号 kill、raise 信号概念及产生 信号是一种异步通知机制&#xff0c;内核通过信号…

如何解决由于找不到d3dx9_43.dll导致游戏启动失败?这里是如何解决的完整指南

遇到“由于找不到d3dx9_43.dll”错误时&#xff0c;很多用户可能会感到困惑和无助。这个问题通常发生在尝试启动游戏或使用基于DirectX的应用程序时。d3dx9_43.dll是Microsoft DirectX软件的一部分&#xff0c;专门用于处理复杂的图形计算&#xff0c;缺少它意味着某些图形功能…

任务函数分析

一、页面存储栈 PageStack 1、头文件 #include "ui.h"#define MAX_DEPTH 6typedef long long int StackData_t;typedef struct {StackData_t Data[MAX_DEPTH];uint8_t Top_Point;}user_Stack_T;uint8_t user_Stack_Push(user_Stack_T* stack, StackData_t datain)…

Springboot 微信小程序定位后将坐标转换为百度地图坐标,在百度地图做逆地址解析

问题解析以及解决思路 业务:微信小程序定位后,将坐标转换为百度地图坐标,在百度地图做逆地址解析 问题:微信小程序的定位是拿的腾讯地图的经纬度,但是我们app端这边使用的百度地图,如果直接使用腾讯地图的经纬度再使用腾讯地图的逆地址解析需要腾讯和百度商业授权,为了减少授权…

vue注册全局组件,其他地方可以直接方便的调用

文章目录 问题注册全局组件完结 问题 本来我们想使用某个组件&#xff0c;需要在各个地方引入对应的参数&#xff0c;并配置好components内容&#xff0c;才可以使用 但是随着用的越来越多&#xff0c;这种方法变得重复且易出错 注册全局组件 修改main.js文件&#xff0c;放…