机器学习day01

什么是机器学习

机器学习定义

机器学习的本质就是让计算机在数据中寻找规律,并且根据寻找到的规律对未来数据进行预测。机器学习的基本思路是模仿人类学习行为的过程,如我们在现实中的新问题一般都是通过经验归纳,总结规律,从而预测未来的过程。

机器学习包括聚类、分类、决策树、贝叶斯、神经网络、深度学习等算法。

机器学习的分类

1、监督学习

监督学习,它的基本思想就像是老师指导学生学习一样。在监督学习的过程中,我们给计算机提供一些已知答案的数据,让计算机通过这些数据学习如何做出正确的预测。
具体来说,监督学习包括以下几个步骤:
**准备数据:**我们需要准备一些带有正确答案的数据,这些数据通常被称为“训练数据”。比如,如果我们想让计算机学会识别手写的数字,我们会准备很多手写数字的图片,并且告诉计算机每张图片上写的是哪个数字。
**选择模型:**接下来,我们需要选择一个合适的模型来学习这些数据。模型就像是一个数学公式,能够根据输入的数据给出预测的结果。比如,我们可以选择一个简单的线性模型,或者复杂的神经网络模型。
**训练模型:**有了数据和模型之后,我们就可以开始训练了。在这个过程中,模型会不断地尝试调整自己的参数,以便能够更加准确地预测数据的正确答案。就像是学生通过做练习题来提高成绩一样。
**评估模型:**训练完成后,我们需要检查模型的表现如何。我们会用一些额外的数据(称为“测试数据”)来测试模型的准确性。如果模型在测试数据上的表现足够好,我们就认为模型训练成功了。
应用模型:最后,我们可以把训练好的模型应用到实际问题中去。比如,当我们有了一个能够识别手写数字的模型后,就可以用它来自动读取手写邮政编码,从而提高工作效率。
举个简单的例子,假设我们要教会计算机区分苹果和橙子。我们可以准备一些苹果和橙子的照片,并且告诉计算机每张照片上是苹果还是橙子。然后,我们选择一个模型,比如决策树模型,让它学习这些照片的特点。通过不断的学习和调整,模型最终能够学会如何区分苹果和橙子。当我们给模型一张新的水果照片时,它就能够预测出这张照片上是苹果还是橙子了。

监督学习主要用于回归和分类。

常见的监督学习的回归算法有线性回归、回归树、K邻近、Adaboost、神经网络等。

常见的监督学习的分类算法有朴素贝叶斯、决策树、SVM、逻辑回归、K邻近、Adaboost、神经网络等。

监督学习广泛应用于各种领域,比如垃圾邮件过滤、疾病诊断、图像识别等等。

2、半监督学习

半监督学习,它结合了监督学习和无监督学习的优点。简单来说,半监督学习是在数据量很大但标注成本很高的情况下使用的一种技术。在这种学习方式中,我们既有少量带标签的数据(即我们知道正确答案的数据),也有大量未带标签的数据(即我们不知道正确答案的数据)。
这里通过一个例子来说明半监督学习的过程:
假设我们有一堆手写数字的图片,我们的目标是让计算机学会识别这些数字。但是,标注每一张图片的成本很高,所以我们只有很少一部分图片是有标签的(比如只标注了100张),而剩下的几千张图片是没有标签的。
**准备数据:**我们准备好一小部分带标签的数据(比如100张已标注的手写数字图片)和大部分未带标签的数据(比如几千张未标注的手写数字图片)。
**利用带标签数据训练模型:**首先,我们使用那100张带标签的数据来训练一个初步的模型。这个模型虽然只用了一小部分数据,但它已经学到了一些基本的规律。
利用未带标签数据改进模型:接着,我们用这个初步的模型去预测那些未带标签的数据。由于模型已经学到了一些规律,所以它可以对这些未带标签的数据做出一定的预测。
**选择高置信度的预测结果:**从这些预测结果中,我们挑选出那些模型非常有信心的预测结果(即模型认为这些预测结果非常可能是正确的)。这些预测结果就变成了新的带标签数据。
**重新训练模型:**我们将这些新得到的带标签数据加入到原来的带标签数据中,然后重新训练模型。这样一来,模型就有更多的带标签数据可以学习了。
**重复上述过程:**我们可以多次重复第3步到第5步的过程,直到模型的表现达到满意的水平为止。
**评估模型:**最后,我们用一些额外的带标签数据来测试模型的性能,看看它是否能够准确地识别手写数字。
通过这种方式,半监督学习能够在有限的带标签数据下,充分利用大量的未带标签数据来提升模型的性能。这种方法非常适合于数据丰富但标注成本高的场景,比如社交媒体分析、文本分类等领域。
总结起来,半监督学习就是一种在数据量大但标注成本高的情况下,利用少量带标签数据和大量未带标签数据来训练模型的方法。

常见的半监督学习算法有Pseudo-Label、Π-Model、Temporal Ensembling、Mean Teacher、VAT、UDA、MixMatch、ReMixMatch、FixMatch等。

3、无监督学习

无监督学习,它不需要事先知道数据的正确答案或类别标签。相反,它试图从数据本身发现模式和结构。我们可以把它想象成一个孩子在玩拼图游戏,但没有预先知道完成后的图案应该是什么样子。孩子需要通过观察拼图块之间的相似性和差异性来尝试组合拼图。
下面是无监督学习的基本步骤和一个简单的例子来帮助理解:
步骤
**准备数据:**收集数据,这些数据没有事先标注或分类,也就是说我们不知道数据应该分成几类或数据中隐藏着什么模式。
**选择算法:**选择一个适合的无监督学习算法来探索数据。常见的算法包括聚类(Cluster Analysis)、主成分分析(PCA)、自编码器(Autoencoder)等。
**训练模型:**使用算法对数据进行分析,寻找数据中的模式或结构。比如,聚类算法会尝试将数据分成几个组,每个组内的数据比组间的数据更为相似。
解释结果:分析模型输出的结果,比如聚类结果,尝试理解数据中的模式和结构。
**应用模型:**将模型应用到新的数据上,比如对新来的数据进行分类或降维。
例子
假设我们有一堆动物的照片,这些照片没有标注是哪种动物。我们的目标是让计算机自动将这些照片分成不同的组,比如一组是猫的照片,另一组是狗的照片。
准备数据:我们准备了一堆动物的照片,这些照片没有标签。
选择算法:我们选择了一个聚类算法,比如 K-means 算法,来对这些照片进行分组。
训练模型:我们用 K-means 算法对照片进行聚类,算法会尝试找出相似的照片并把它们归为同一组。我们可能需要先设定一个聚类的数量,比如假设数据中有两类动物。
解释结果:我们观察聚类结果,可能会发现一组照片看起来都是猫,而另一组看起来都是狗。尽管我们没有告诉计算机这些照片应该分成哪几类,但它能够根据照片的相似性自动进行分组。
应用模型:我们可以用这个模型对新的照片进行分类,比如判断新来的照片是猫还是狗。
总结
无监督学习就像自学一样,让机器自己去发现数据中的模式和结构。它不需要事先知道数据的正确答案,而是通过数据本身的特性来学习。这种学习方法在很多领域都非常有用,比如市场细分、社交网络分析、异常检测等。

4、强化学习

强化学习是一种机器学习的方法,它的核心思想是通过与环境的互动来学习如何做出最佳的决策我们可以把它想象成一个孩子在玩电子游戏,孩子通过不断的尝试和错误来学习如何玩游戏,以便获得更高的分数。
下面是强化学习的基本步骤和一个简单的例子来帮助理解:
步骤
准备环境:定义一个环境,在这个环境中智能体(agent)可以执行不同的动作。
**定义奖励:**确定什么样的行为是好的,什么样的行为是不好的。奖励是用来衡量智能体行为好坏的标准。
**智能体与环境交互:**智能体在环境中采取行动,环境会根据智能体的行为给出反馈,通常是奖励或惩罚。
**学习策略:**智能体根据接收到的反馈来调整自己的行为策略,以期在未来获得更多的奖励。
优化策略:随着时间的推移,智能体不断学习和优化策略,以达到长期最大化的累积奖励。
例子
假设我们有一个机器人,它的任务是在迷宫中找到出口。我们希望机器人能够学会如何最有效地到达出口。
准备环境:迷宫是环境,机器人可以在迷宫中移动。
定义奖励:当机器人接近出口时,它会得到正向的奖励;如果撞墙或者远离出口,则会得到负向的奖励。
智能体与环境交互:机器人开始在迷宫中移动,尝试不同的路径。每当机器人移动时,环境会根据机器人离出口的距离给出奖励或惩罚。
学习策略:机器人会根据接收到的奖励来调整自己的移动策略。例如,如果机器人发现往右走会得到更多奖励,它就会学习到往右走是一个好的策略。
优化策略:随着时间的推移,机器人会逐渐学会如何更快地找到出口。它会记住哪些路径是有效的,并且避免那些导致惩罚的路径。
总结
强化学习就像是一个不断试错的过程,智能体通过与环境的互动来学习如何做出最佳的决策。它不需要事先知道如何解决问题,而是通过不断的尝试和从反馈中学习来逐步改善自己的行为。强化学习在许多领域都有应用,比如自动驾驶汽车、机器人控制、游戏AI等。

scikit-learn工具介绍

  1. Python语言机器学习工具
  2. Scikit-learn包括许多智能的机器学习算法的实现
  3. Scikit-learn文档完善,容易上手,丰富的API接口函数
  4. Scikit-learn官网:https://scikit-learn.org/stable/#
  5. Scikit-learn中文文档:https://scikitlearn.com.cn/
  6. scikit-learn中文社区

1、scikit-learn安装

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scikit-learn 

数据集

1、sklearn玩具数据集介绍

数据量小,数据在sklearn库的本地,只要安装了sklearn,不用上网就可以获取

2、sklearn现实世界数据集介绍

数据量大,数据只能通过网络获取

3、sklearn加载玩具数据集

1、鸢尾花数据集

数据集特点
样本数量:数据集包含150个样本。
类别:样本分为三个类别,分别是山鸢尾(Iris-setosa)、变色鸢尾(Iris-versicolor)和维吉尼亚鸢尾(Iris-virginica)。
每个类别样本数:每个类别各有50个样本。
特征数量:每个样本有四个特征,分别是:
花萼长度(sepal length)
花萼宽度(sepal width)
花瓣长度(petal length)
花瓣宽度(petal width)
数据集结构
数据集格式:通常以CSV文件形式存储,每行代表一个样本,每列代表一个特征或类别标签。
特征单位:所有特征的单位都是厘米(cm)。
类别标签:类别标签通常是字符串或数字编码,例如:
Iris-setosa 可能被标记为 0
Iris-versicolor 可能被标记为 1
Iris-virginica 可能被标记为 2

from sklearn.datasets import load_iris
import pandas as pd
import numpy as np
iris = load_iris()
print(iris.data)#得到特征
print(iris.feature_names) #特征描述
print(iris.target) #目标形状
print(iris.target_names)#目标描述
print(iris.filename) #iris.csv 保存后的文件名
print(iris.DESCR)#数据集的描述
iris.target = np.array(iris.target,dtype=np.str_)
for i in range(len(iris.target)):
    if iris.target[i] == '0':
        iris.target[i] = 'setosa'
    elif iris.target[i] == '1':
        iris.target[i] = 'versicolor'
    else:
        iris.target[i] = 'virginica'
target = np.array(iris.target).reshape(len(iris.target),1)
data = np.hstack((iris.data,target))
df = pd.DataFrame(data,columns=['sepal_length','sepal_width','petal_length','petal_width','target'])
print(df.to_string())

"""
    sepal_length sepal_width petal_length petal_width      target
0            5.1         3.5          1.4         0.2      setosa
1            4.9         3.0          1.4         0.2      setosa
2            4.7         3.2          1.3         0.2      setosa
3            4.6         3.1          1.5         0.2      setosa
4            5.0         3.6          1.4         0.2      setosa
5            5.4         3.9          1.7         0.4      setosa
6            4.6         3.4          1.4         0.3      setosa
7            5.0         3.4          1.5         0.2      setosa
8            4.4         2.9          1.4         0.2      setosa
9            4.9         3.1          1.5         0.1      setosa
10           5.4         3.7          1.5         0.2      setosa
11           4.8         3.4          1.6         0.2      setosa
12           4.8         3.0          1.4         0.1      setosa
13           4.3         3.0          1.1         0.1      setosa
14           5.8         4.0          1.2         0.2      setosa
15           5.7         4.4          1.5         0.4      setosa
16           5.4         3.9          1.3         0.4      setosa
17           5.1         3.5          1.4         0.3      setosa
18           5.7         3.8          1.7         0.3      setosa
19           5.1         3.8          1.5         0.3      setosa
20           5.4         3.4          1.7         0.2      setosa
21           5.1         3.7          1.5         0.4      setosa
22           4.6         3.6          1.0         0.2      setosa
23           5.1         3.3          1.7         0.5      setosa
24           4.8         3.4          1.9         0.2      setosa
25           5.0         3.0          1.6         0.2      setosa
26           5.0         3.4          1.6         0.4      setosa
27           5.2         3.5          1.5         0.2      setosa
28           5.2         3.4          1.4         0.2      setosa
29           4.7         3.2          1.6         0.2      setosa
30           4.8         3.1          1.6         0.2      setosa
31           5.4         3.4          1.5         0.4      setosa
32           5.2         4.1          1.5         0.1      setosa
33           5.5         4.2          1.4         0.2      setosa
34           4.9         3.1          1.5         0.2      setosa
35           5.0         3.2          1.2         0.2      setosa
36           5.5         3.5          1.3         0.2      setosa
37           4.9         3.6          1.4         0.1      setosa
38           4.4         3.0          1.3         0.2      setosa
39           5.1         3.4          1.5         0.2      setosa
40           5.0         3.5          1.3         0.3      setosa
41           4.5         2.3          1.3         0.3      setosa
42           4.4         3.2          1.3         0.2      setosa
43           5.0         3.5          1.6         0.6      setosa
44           5.1         3.8          1.9         0.4      setosa
45           4.8         3.0          1.4         0.3      setosa
46           5.1         3.8          1.6         0.2      setosa
47           4.6         3.2          1.4         0.2      setosa
48           5.3         3.7          1.5         0.2      setosa
49           5.0         3.3          1.4         0.2      setosa
50           7.0         3.2          4.7         1.4  versicolor
51           6.4         3.2          4.5         1.5  versicolor
52           6.9         3.1          4.9         1.5  versicolor
53           5.5         2.3          4.0         1.3  versicolor
54           6.5         2.8          4.6         1.5  versicolor
55           5.7         2.8          4.5         1.3  versicolor
56           6.3         3.3          4.7         1.6  versicolor
57           4.9         2.4          3.3         1.0  versicolor
58           6.6         2.9          4.6         1.3  versicolor
59           5.2         2.7          3.9         1.4  versicolor
60           5.0         2.0          3.5         1.0  versicolor
61           5.9         3.0          4.2         1.5  versicolor
62           6.0         2.2          4.0         1.0  versicolor
63           6.1         2.9          4.7         1.4  versicolor
64           5.6         2.9          3.6         1.3  versicolor
65           6.7         3.1          4.4         1.4  versicolor
66           5.6         3.0          4.5         1.5  versicolor
67           5.8         2.7          4.1         1.0  versicolor
68           6.2         2.2          4.5         1.5  versicolor
69           5.6         2.5          3.9         1.1  versicolor
70           5.9         3.2          4.8         1.8  versicolor
71           6.1         2.8          4.0         1.3  versicolor
72           6.3         2.5          4.9         1.5  versicolor
73           6.1         2.8          4.7         1.2  versicolor
74           6.4         2.9          4.3         1.3  versicolor
75           6.6         3.0          4.4         1.4  versicolor
76           6.8         2.8          4.8         1.4  versicolor
77           6.7         3.0          5.0         1.7  versicolor
78           6.0         2.9          4.5         1.5  versicolor
79           5.7         2.6          3.5         1.0  versicolor
80           5.5         2.4          3.8         1.1  versicolor
81           5.5         2.4          3.7         1.0  versicolor
82           5.8         2.7          3.9         1.2  versicolor
83           6.0         2.7          5.1         1.6  versicolor
84           5.4         3.0          4.5         1.5  versicolor
85           6.0         3.4          4.5         1.6  versicolor
86           6.7         3.1          4.7         1.5  versicolor
87           6.3         2.3          4.4         1.3  versicolor
88           5.6         3.0          4.1         1.3  versicolor
89           5.5         2.5          4.0         1.3  versicolor
90           5.5         2.6          4.4         1.2  versicolor
91           6.1         3.0          4.6         1.4  versicolor
92           5.8         2.6          4.0         1.2  versicolor
93           5.0         2.3          3.3         1.0  versicolor
94           5.6         2.7          4.2         1.3  versicolor
95           5.7         3.0          4.2         1.2  versicolor
96           5.7         2.9          4.2         1.3  versicolor
97           6.2         2.9          4.3         1.3  versicolor
98           5.1         2.5          3.0         1.1  versicolor
99           5.7         2.8          4.1         1.3  versicolor
100          6.3         3.3          6.0         2.5   virginica
101          5.8         2.7          5.1         1.9   virginica
102          7.1         3.0          5.9         2.1   virginica
103          6.3         2.9          5.6         1.8   virginica
104          6.5         3.0          5.8         2.2   virginica
105          7.6         3.0          6.6         2.1   virginica
106          4.9         2.5          4.5         1.7   virginica
107          7.3         2.9          6.3         1.8   virginica
108          6.7         2.5          5.8         1.8   virginica
109          7.2         3.6          6.1         2.5   virginica
110          6.5         3.2          5.1         2.0   virginica
111          6.4         2.7          5.3         1.9   virginica
112          6.8         3.0          5.5         2.1   virginica
113          5.7         2.5          5.0         2.0   virginica
114          5.8         2.8          5.1         2.4   virginica
115          6.4         3.2          5.3         2.3   virginica
116          6.5         3.0          5.5         1.8   virginica
117          7.7         3.8          6.7         2.2   virginica
118          7.7         2.6          6.9         2.3   virginica
119          6.0         2.2          5.0         1.5   virginica
120          6.9         3.2          5.7         2.3   virginica
121          5.6         2.8          4.9         2.0   virginica
122          7.7         2.8          6.7         2.0   virginica
123          6.3         2.7          4.9         1.8   virginica
124          6.7         3.3          5.7         2.1   virginica
125          7.2         3.2          6.0         1.8   virginica
126          6.2         2.8          4.8         1.8   virginica
127          6.1         3.0          4.9         1.8   virginica
128          6.4         2.8          5.6         2.1   virginica
129          7.2         3.0          5.8         1.6   virginica
130          7.4         2.8          6.1         1.9   virginica
131          7.9         3.8          6.4         2.0   virginica
132          6.4         2.8          5.6         2.2   virginica
133          6.3         2.8          5.1         1.5   virginica
134          6.1         2.6          5.6         1.4   virginica
135          7.7         3.0          6.1         2.3   virginica
136          6.3         3.4          5.6         2.4   virginica
137          6.4         3.1          5.5         1.8   virginica
138          6.0         3.0          4.8         1.8   virginica
139          6.9         3.1          5.4         2.1   virginica
140          6.7         3.1          5.6         2.4   virginica
141          6.9         3.1          5.1         2.3   virginica
142          5.8         2.7          5.1         1.9   virginica
143          6.8         3.2          5.9         2.3   virginica
144          6.7         3.3          5.7         2.5   virginica
145          6.7         3.0          5.2         2.3   virginica
146          6.3         2.5          5.0         1.9   virginica
147          6.5         3.0          5.2         2.0   virginica
148          6.2         3.4          5.4         2.3   virginica
149          5.9         3.0          5.1         1.8   virginica

"""

4、sklearn获取现实世界数据集

所有现实世界数据,通过网络才能下载后,默认保存的目录可以使用下面api获取。

获取20分类新闻数据集

from sklearn.datasets import fetch_20newsgroups

X,y = fetch_20newsgroups(data_home="./src",subset='all',return_X_y=True)
print(len(X))
print(len(y))
  1. subset (可选)
    类型:字符串
    默认值:‘all’
    描述:指定要加载的数据子集。可以是 ‘train’(训练集)、‘test’(测试集)或 ‘all’(整个数据集)。
  2. categories (可选)
    类型:列表或 None
    默认值:None
    描述:指定要加载的主题类别列表。如果为 None,则加载所有 20 个类别。如果提供了类别列表,则只加载列表中的类别。
  3. shuffle (可选)
    类型:布尔值
    默认值:True
    描述:是否在加载数据之前对其进行随机排序。
  4. random_state (可选)
    类型:整数、RandomState 实例或 None
    默认值:None
    描述:用于随机排序的随机数生成器的种子。如果为整数,则使用该整数作为随机种子;如果是 RandomState 实例,则使用该实例;如果是 None,则使用全局的随机状态实例。
  5. remove (可选)
    类型:元组
    默认值:(u’headers’, u’footers’, u’quotes’)
    描述:指定要从文档中移除的部分。可以是 ‘headers’(文档头部)、‘footers’(文档尾部)和 ‘quotes’(引用的文本)。
  6. download_if_missing (可选)
    类型:布尔值
    默认值:True
    描述:如果数据集不存在于本地,是否自动下载数据集。
  7. data_home (可选)
    类型:字符串或 None
    默认值:None
    描述:指定数据集的本地存储位置。如果为 None,则使用默认的位置(通常是 ~/scikit_learn_data/)。
  8. subset_randomize (可选)
    类型:布尔值
    默认值:False
    描述:是否在合并训练集和测试集时进行随机化。仅当 subset=‘all’ 时有效。
  9. return_X_y (可选)
    类型:布尔值
    默认值:False
    描述:如果为 True,则返回两个数组(文档和标签)而不是 Bunch 对象。

5、本地csv数据

import pandas as pd
data = pd.read_csv("./src/test.csv")
print(data.to_string())

6、数据集的划分

sklearn.model_selection.train_test_split(*arrays, **options) 

是一个非常常用的函数,用于将数据集分割成训练集和测试集。

  1. *arrays
    类型:可变参数,可以是列表、NumPy 数组、Pandas DataFrame 或 Series、SciPy 稀疏矩阵等。
    描述:需要分割的数据集。通常包括特征数据(X)和目标数据(y),但也可以包括其他数据,如样本权重等。
  2. test_size (可选)
    类型:浮点数、整数或 None
    默认值:0.25
    描述:测试集大小。如果为浮点数,则表示测试集占总数据集的比例;如果为整数,则表示测试集的具体大小;如果为 None,则默认为 0.25。
  3. train_size (可选)
    类型:浮点数、整数或 None
    默认值:None
    描述:训练集大小。如果为浮点数,则表示训练集占总数据集的比例;如果为整数,则表示训练集的具体大小;如果为 None,则根据 test_size 计算。
  4. random_state (可选)
    类型:整数、RandomState 实例或 None
    默认值:None
    描述:用于控制随机数生成器的种子,以确保结果的可重复性。如果为整数,则作为随机种子;如果是 RandomState 实例,则直接使用该实例;如果是 None,则使用全局的随机状态实例。
  5. shuffle (可选)
    类型:布尔值
    默认值:True
    描述:是否在分割之前对数据进行随机化。通常情况下,数据集会被随机打乱,以确保训练集和测试集的代表性。
  6. stratify (可选)
    类型:数组或 None
    默认值:None
    描述:如果提供了目标数组 y,则可以使用此参数来实现分层抽样,即确保训练集和测试集中的目标类别分布大致相同。
  7. groups (可选)
    类型:数组或 None
    默认值:None
    描述:如果数据集中的样本属于不同的组,则可以使用此参数来确保来自同一组的样本不会同时出现在训练集和测试集中。
    返回值
    train_test_split 函数返回一系列数组,这些数组包含了分割后的训练集和测试集。如果提供了多个输入数组,则返回值将是这些数组的训练集和测试集的配对。

1、列表数据集划分

from sklearn.model_selection import train_test_split

list1 = [1,2,3,4,5,6,7,8,9,10]
list2 = ["a","b","c","d","e","f","g","h","i","j"]
X_train,X_test,y_train,y_test = train_test_split(list1,list2,test_size=0.4,random_state=42)
print(X_train)
print(X_test)
print(y_train)
print(y_test)

"""
[8, 3, 10, 5, 4, 7]
[9, 2, 6, 1]
['h', 'c', 'j', 'e', 'd', 'g']
['i', 'b', 'f', 'a']

"""

2、ndarray数据集划分

from sklearn.model_selection import train_test_split
import numpy as np
arr1 = np.arange(10)
arr2 = np.arange(10,20)
X_train,X_test,y_train,y_test = train_test_split(arr1,arr2,test_size=0.4,random_state=42)
print(X_train)
print(X_test)
print(y_train)
print(y_test)

"""
[7 2 9 4 3 6]
[8 1 5 0]
[17 12 19 14 13 16]
[18 11 15 10]
"""

3、二维数组数据集划分

from sklearn.model_selection import train_test_split
import numpy as np
arr1 = np.arange(20).reshape(4,5)
X_train,X_test = train_test_split(arr1,test_size=0.25,random_state=42)
print(X_train)
print(X_test)
"""
[[15 16 17 18 19]
 [ 0  1  2  3  4]
 [10 11 12 13 14]]
[[5 6 7 8 9]]
"""

4、DataFrame数据集划分

import numpy as np
from sklearn.model_selection import train_test_split
import pandas as pd

arr1 = np.arange(20).reshape(4,5)
pf = pd.DataFrame(arr1,columns=["a","b","c","d","e"])
X_train,X_test = train_test_split(pf,test_size=0.25,random_state=42)
print(X_train)
print(X_test)

"""
    a   b   c   d   e
3  15  16  17  18  19
0   0   1   2   3   4
2  10  11  12  13  14
   a  b  c  d  e
1  5  6  7  8  9

"""

5、字典数据集划分

from sklearn.model_selection import train_test_split
import pandas as pd
# 定义数据集
data = [
    {'姓名': '秦垒', '年龄': 21, 'label': 'A'},
    {'姓名': '张三', '年龄': 22, 'label': 'B'},
    {'姓名': '李四', '年龄': 23, 'label': 'C'},
    {'姓名': '王五', '年龄': 12, 'label': 'D'},
    {'姓名': '刘六', '年龄': 27, 'label': 'E'},
    {'姓名': '牛七', '年龄': 30, 'label': 'F'},
    {'姓名': '周八', '年龄': 29, 'label': 'G'},
    {'姓名': '罗九', '年龄': 50, 'label': 'H'}

]
df = pd.DataFrame(data)
print(df)
X = df.filter(["姓名","年龄"])
y = df.filter(["label"])
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.25,random_state=42)
print("X_train:\n", X_train)
print("y_train:\n", y_train)
print("X_test:\n", X_test)
print("y_test:\n", y_test)

"""
   姓名  年龄 label
0  秦垒  21     A
1  张三  22     B
2  李四  23     C
3  王五  12     D
4  刘六  27     E
5  牛七  30     F
6  周八  29     G
7  罗九  50     H
X_train:
    姓名  年龄
0  秦垒  21
7  罗九  50
2  李四  23
4  刘六  27
3  王五  12
6  周八  29
y_train:
   label
0     A
7     H
2     C
4     E
3     D
6     G
X_test:
    姓名  年龄
1  张三  22
5  牛七  30
y_test:
   label
1     B
5     F
"""
from sklearn.feature_extraction import DictVectorizer
#这里导入了 DictVectorizer 类,它是 sklearn.feature_extraction 模块的一部分,用于将字典列表转换为特征向量。
from sklearn.model_selection import train_test_split
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(sparse=True)
#DictVectorizer 的 sparse 参数设置为 True 表示输出的数据将以稀疏矩阵的形式存储,这有助于节省内存。稀疏矩阵是一种特殊的数据结构,用于存储大部分元素为零的大矩阵,从而节省存储空间
data_new = transfer.fit_transform(data)
#fit_transform 方法用于拟合数据并转换为数值形式。DictVectorizer 会将每个键值对转换为特征向量的一个维度,对于分类特征(如 city),它会为每个不同的值创建一个新的特征。数值特征(如 age 和 temperature)则直接映射到对应的特征维度上。
print("data_new:\n", data_new)
x = data_new.toarray()
#toarray 方法将稀疏矩阵转换为密集矩阵(NumPy 数组),以便于查看和后续处理。输出的类型是 numpy.ndarray。
print(type(x))
print(x)
a, b = train_test_split(data_new,  test_size=0.4, random_state=22)
print(a)
print("\n", b)
a, b = train_test_split(data_new.toarray(),  test_size=0.4, random_state=22)
print(a)
print("\n", b)

"""
data_new:
 <Compressed Sparse Row sparse matrix of dtype 'float64'
	with 15 stored elements and shape (5, 6)>
  Coords	Values
  (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
[[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.]]
<Compressed Sparse Row sparse matrix of dtype 'float64'
	with 9 stored elements and shape (3, 6)>
  Coords	Values
  (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

 <Compressed Sparse Row sparse matrix of dtype 'float64'
	with 6 stored elements and shape (2, 6)>
  Coords	Values
  (0, 0)	33.0
  (0, 4)	1.0
  (0, 5)	60.0
  (1, 0)	42.0
  (1, 2)	1.0
  (1, 5)	80.0
[[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.]]
"""

6、鸢尾花数据集划分

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import pandas as pd
iris = load_iris()
data = pd.DataFrame(iris.data,columns=iris.feature_names)
target = pd.DataFrame(iris.target,columns=["target"])
X_train,X_test,y_train,y_test = train_test_split(data,target,test_size=0.2,random_state=22)
print("X_train\n",X_train.to_string())
print("X_test\n",X_test.to_string())
print("y_train\n",y_train.to_string())
print("y_test\n",y_test.to_string())

"""
X_train
      sepal length (cm)  sepal width (cm)  petal length (cm)  petal width (cm)
30                 4.8               3.1                1.6               0.2
31                 5.4               3.4                1.5               0.4
89                 5.5               2.5                4.0               1.3
90                 5.5               2.6                4.4               1.2
55                 5.7               2.8                4.5               1.3
26                 5.0               3.4                1.6               0.4
39                 5.1               3.4                1.5               0.2
37                 4.9               3.6                1.4               0.1
139                6.9               3.1                5.4               2.1
108                6.7               2.5                5.8               1.8
50                 7.0               3.2                4.7               1.4
56                 6.3               3.3                4.7               1.6
16                 5.4               3.9                1.3               0.4
42                 4.4               3.2                1.3               0.2
77                 6.7               3.0                5.0               1.7
88                 5.6               3.0                4.1               1.3
113                5.7               2.5                5.0               2.0
104                6.5               3.0                5.8               2.2
4                  5.0               3.6                1.4               0.2
71                 6.1               2.8                4.0               1.3
85                 6.0               3.4                4.5               1.6
145                6.7               3.0                5.2               2.3
15                 5.7               4.4                1.5               0.4
20                 5.4               3.4                1.7               0.2
40                 5.0               3.5                1.3               0.3
12                 4.8               3.0                1.4               0.1
33                 5.5               4.2                1.4               0.2
22                 4.6               3.6                1.0               0.2
125                7.2               3.2                6.0               1.8
98                 5.1               2.5                3.0               1.1
51                 6.4               3.2                4.5               1.5
107                7.3               2.9                6.3               1.8
41                 4.5               2.3                1.3               0.3
25                 5.0               3.0                1.6               0.2
18                 5.7               3.8                1.7               0.3
49                 5.0               3.3                1.4               0.2
68                 6.2               2.2                4.5               1.5
0                  5.1               3.5                1.4               0.2
74                 6.4               2.9                4.3               1.3
57                 4.9               2.4                3.3               1.0
72                 6.3               2.5                4.9               1.5
73                 6.1               2.8                4.7               1.2
70                 5.9               3.2                4.8               1.8
5                  5.4               3.9                1.7               0.4
62                 6.0               2.2                4.0               1.0
128                6.4               2.8                5.6               2.1
24                 4.8               3.4                1.9               0.2
137                6.4               3.1                5.5               1.8
61                 5.9               3.0                4.2               1.5
116                6.5               3.0                5.5               1.8
78                 6.0               2.9                4.5               1.5
80                 5.5               2.4                3.8               1.1
97                 6.2               2.9                4.3               1.3
32                 5.2               4.1                1.5               0.1
28                 5.2               3.4                1.4               0.2
118                7.7               2.6                6.9               2.3
79                 5.7               2.6                3.5               1.0
6                  4.6               3.4                1.4               0.3
67                 5.8               2.7                4.1               1.0
82                 5.8               2.7                3.9               1.2
148                6.2               3.4                5.4               2.3
149                5.9               3.0                5.1               1.8
3                  4.6               3.1                1.5               0.2
114                5.8               2.8                5.1               2.4
17                 5.1               3.5                1.4               0.3
143                6.8               3.2                5.9               2.3
9                  4.9               3.1                1.5               0.1
53                 5.5               2.3                4.0               1.3
21                 5.1               3.7                1.5               0.4
101                5.8               2.7                5.1               1.9
65                 6.7               3.1                4.4               1.4
112                6.8               3.0                5.5               2.1
59                 5.2               2.7                3.9               1.4
140                6.7               3.1                5.6               2.4
48                 5.3               3.7                1.5               0.2
60                 5.0               2.0                3.5               1.0
58                 6.6               2.9                4.6               1.3
83                 6.0               2.7                5.1               1.6
87                 6.3               2.3                4.4               1.3
135                7.7               3.0                6.1               2.3
1                  4.9               3.0                1.4               0.2
47                 4.6               3.2                1.4               0.2
123                6.3               2.7                4.9               1.8
75                 6.6               3.0                4.4               1.4
52                 6.9               3.1                4.9               1.5
13                 4.3               3.0                1.1               0.1
94                 5.6               2.7                4.2               1.3
11                 4.8               3.4                1.6               0.2
105                7.6               3.0                6.6               2.1
122                7.7               2.8                6.7               2.0
106                4.9               2.5                4.5               1.7
110                6.5               3.2                5.1               2.0
23                 5.1               3.3                1.7               0.5
103                6.3               2.9                5.6               1.8
134                6.1               2.6                5.6               1.4
7                  5.0               3.4                1.5               0.2
91                 6.1               3.0                4.6               1.4
66                 5.6               3.0                4.5               1.5
19                 5.1               3.8                1.5               0.3
121                5.6               2.8                4.9               2.0
38                 4.4               3.0                1.3               0.2
81                 5.5               2.4                3.7               1.0
29                 4.7               3.2                1.6               0.2
144                6.7               3.3                5.7               2.5
27                 5.2               3.5                1.5               0.2
111                6.4               2.7                5.3               1.9
133                6.3               2.8                5.1               1.5
8                  4.4               2.9                1.4               0.2
127                6.1               3.0                4.9               1.8
34                 4.9               3.1                1.5               0.2
93                 5.0               2.3                3.3               1.0
45                 4.8               3.0                1.4               0.3
14                 5.8               4.0                1.2               0.2
136                6.3               3.4                5.6               2.4
84                 5.4               3.0                4.5               1.5
102                7.1               3.0                5.9               2.1
100                6.3               3.3                6.0               2.5
44                 5.1               3.8                1.9               0.4
132                6.4               2.8                5.6               2.2
117                7.7               3.8                6.7               2.2
X_test
      sepal length (cm)  sepal width (cm)  petal length (cm)  petal width (cm)
10                 5.4               3.7                1.5               0.2
115                6.4               3.2                5.3               2.3
54                 6.5               2.8                4.6               1.5
146                6.3               2.5                5.0               1.9
63                 6.1               2.9                4.7               1.4
76                 6.8               2.8                4.8               1.4
86                 6.7               3.1                4.7               1.5
138                6.0               3.0                4.8               1.8
64                 5.6               2.9                3.6               1.3
35                 5.0               3.2                1.2               0.2
120                6.9               3.2                5.7               2.3
95                 5.7               3.0                4.2               1.2
130                7.4               2.8                6.1               1.9
109                7.2               3.6                6.1               2.5
43                 5.0               3.5                1.6               0.6
131                7.9               3.8                6.4               2.0
69                 5.6               2.5                3.9               1.1
99                 5.7               2.8                4.1               1.3
119                6.0               2.2                5.0               1.5
96                 5.7               2.9                4.2               1.3
46                 5.1               3.8                1.6               0.2
141                6.9               3.1                5.1               2.3
36                 5.5               3.5                1.3               0.2
92                 5.8               2.6                4.0               1.2
142                5.8               2.7                5.1               1.9
2                  4.7               3.2                1.3               0.2
129                7.2               3.0                5.8               1.6
147                6.5               3.0                5.2               2.0
124                6.7               3.3                5.7               2.1
126                6.2               2.8                4.8               1.8
y_train
      target
30        0
31        0
89        1
90        1
55        1
26        0
39        0
37        0
139       2
108       2
50        1
56        1
16        0
42        0
77        1
88        1
113       2
104       2
4         0
71        1
85        1
145       2
15        0
20        0
40        0
12        0
33        0
22        0
125       2
98        1
51        1
107       2
41        0
25        0
18        0
49        0
68        1
0         0
74        1
57        1
72        1
73        1
70        1
5         0
62        1
128       2
24        0
137       2
61        1
116       2
78        1
80        1
97        1
32        0
28        0
118       2
79        1
6         0
67        1
82        1
148       2
149       2
3         0
114       2
17        0
143       2
9         0
53        1
21        0
101       2
65        1
112       2
59        1
140       2
48        0
60        1
58        1
83        1
87        1
135       2
1         0
47        0
123       2
75        1
52        1
13        0
94        1
11        0
105       2
122       2
106       2
110       2
23        0
103       2
134       2
7         0
91        1
66        1
19        0
121       2
38        0
81        1
29        0
144       2
27        0
111       2
133       2
8         0
127       2
34        0
93        1
45        0
14        0
136       2
84        1
102       2
100       2
44        0
132       2
117       2
y_test
      target
10        0
115       2
54        1
146       2
63        1
76        1
86        1
138       2
64        1
35        0
120       2
95        1
130       2
109       2
43        0
131       2
69        1
99        1
119       2
96        1
46        0
141       2
36        0
92        1
142       2
2         0
129       2
147       2
124       2
126       2
"""

7、现实世界数据集划分

from sklearn.datasets import fetch_20newsgroups
from sklearn.model_selection import train_test_split
import numpy as np
news = fetch_20newsgroups(data_home=None, subset='all')
list = train_test_split(news.data, news.target,test_size=0.2, random_state=22)
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)
  • 21
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值