机器学习流程—数据收集
数据是机器学习领域的重要组成部分。它指的是可用于训练机器学习模型的一组观察或测量。可用于训练和测试的数据的质量和数量在确定机器学习模型的性能方面发挥着重要作用。
什么是数据
数据可以采用各种形式,例如数值、分类或时间序列数据,并且可以来自各种来源,例如数据库、电子表格或 API。机器学习算法使用数据来学习输入变量和目标输出之间的模式和关系,然后可用于预测或分类任务。
数据通常分为两种类型:
- 标记数据
- 未标记数据
标记数据包含模型尝试预测的标签或目标变量,而未标记数据不包含标签或目标变量。机器学习中使用的数据通常是数字或分类的。数值数据包括可以排序和测量的值,例如年龄或收入。分类数据包括代表类别的值,例如性别或水果类型。
数据可以分为训练集和测试集。训练集用于训练模型,测试集用于评估模型的性能。确保以随机且有代表性的方式分割数据非常重要。数据预处理是机器学习流程中的重要步骤。此步骤可以包括清理和标准化数据、处理缺失值以及特征选择或工程。
数据和信息的关系
**数据:**它可以是任何未经解释和分析的未处理的事实、值、文本、声音或图片。数据是所有数据分析、机器学习和人工智能中最重要的部分。没有数据,我们就无法训练任何模型,所有现代研究和自动化都将成为徒劳。大企业花费大量资金只是为了收集尽可能多的特定数据。
举例: Facebook为何要花190亿美元的巨价收购WhatsApp?
答案非常简单且合乎逻辑——就是能够访问用户的信息,而 Facebook 可能没有,但 WhatsApp 却有。有关用户的这些信息对于 Facebook 来说至关重要,因为它将有助于改进其服务。
**信息:**已被解释和操作的数据,现在对用户有一些有意义的推论。
**知识:**推断信息、经验、学习和见解的组合。导致个人或组织的意识或概念建立。
举个例子
有一位购物中心老板进行了一项调查,他有一长串向顾客询问的问题和答案,这个问题和答案列表就是DATA。
现在,每次他想要推断任何事情时,都不能只是通过数千名客户的每一个问题来找到相关的东西,因为这既费时又没有帮助。为了减少这种开销和时间浪费并使工作更容易,根据您自己的方便,通过软件、计算、图表等来操纵数据,这种从操纵数据中得出的推论就是信息。因此,数据是信息的必备条件。
现在,知识可以区分具有相同信息的两个人。知识实际上不是技术内容,而是与人类思维过程相关的。
数据的形式
- 数值数据:如果一个特征代表以数字衡量的特征,则称为数值特征。
- **分类数据:**分类特征是一种属性,它可以基于某些定性属性而呈现有限且通常固定数量的可能值之一。分类特征也称为名义特征。
- 序数数据:这表示名义变量,其类别属于有序列表。示例包括小号、中号和大号等服装尺码,或者从“一点也不高兴”到“非常高兴”的客户满意度衡量标准。
数据的属性
- **数量:**数据规模。随着世界人口的增长和技术的普及,每一毫秒都在产生大量数据。
- **多样性:**不同形式的数据——医疗保健、图像、视频、音频剪辑。
- **速度:**数据流和生成的速率。
- **价值:**数据的意义在于研究人员可以从中推断出的信息。
- **准确性:**我们正在处理的数据的确定性和正确性。
- 可行性:数据被使用和集成到不同系统和流程中的能力。
- 安全性:为保护数据免遭未经授权的访问或操纵而采取的措施。
- 可访问性:获取和利用数据进行决策的难易程度。
- 完整性:数据在整个生命周期中的准确性和完整性。
- 可用性:最终用户数据的易用性和可解释性。
Sklearn 创建测试数据集
Sklearn 是python 提供的一个机器学习库,这个库给我们提供了大量的数据集,只需要我们调用对应的方法即可,这里我将这些方法分为了三大类make
,load
,fetch
make 系列方法
make 系列方法是通过生成数据来实现的,主要方法有下面这些
'make_biclusters',
'make_blobs',
'make_checkerboard',
'make_circles',
'make_classification',
'make_friedman1',
'make_friedman2',
'make_friedman3',
'make_gaussian_quantiles',
'make_hastie_10_2',
'make_low_rank_matrix',
'make_moons',
'make_multilabel_classification',
'make_regression',
'make_s_curve',
'make_sparse_coded_signal',
'make_sparse_spd_matrix',
'make_sparse_uncorrelated',
'make_spd_matrix',
'make_swiss_roll
生成数据
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt
X, y = make_blobs(n_samples=500, # 500个样本
n_features=2, # 每个样本2个特征
centers=4, # 4个中心
random_state=1 #控制随机性
)
数据可视化
color = ['red', 'pink','orange','gray']
fig, axi1=plt.subplots(1)
for i in range(4):
axi1.scatter(X[y==i, 0], X[y==i,1],
marker='o',
s=8,
c=color[i]
)
plt.show()
from sklearn.datasets import make_moons
from matplotlib import pyplot as plt
from matplotlib import style
X, y = make_moons(n_samples = 1000, noise = 0.1)
plt.scatter(X[:, 0], X[:, 1], s = 40, color ='g')
plt.xlabel("X")
plt.ylabel("Y")
plt.show()
plt.clf()
from sklearn.datasets import make_circles
from matplotlib import pyplot as plt
from matplotlib import style
style.use("fivethirtyeight")
X, y = make_circles(n_samples = 100, noise = 0.02)
plt.scatter(X[:, 0], X[:, 1], s = 40, color ='g')
plt.xlabel("X")
plt.ylabel("Y")
plt.show()
plt.clf()
load 系列方法
比起make 系列方法,load 是获取一个真实的数据集,而不是通过调用方法创建数据
'load_breast_cancer',
'load_diabetes',
'load_digits',
'load_files',
'load_iris',
'load_linnerud',
'load_sample_image',
'load_sample_images',
'load_svmlight_file',
'load_svmlight_files',
'load_wine',
load_iris() 方法
from sklearn.datasets import load_iris
data=load_iris()
dir(data)
输出
['DESCR',
'data',
'data_module',
'feature_names',
'filename',
'frame',
'target',
'target_names']
这里的data 是一个对象,它有一些属性,我们可以像下面这样查看一下数据
data.data
其他属性你也可以尝试一下
fetch 系列方法
'fetch_20newsgroups',
'fetch_20newsgroups_vectorized',
'fetch_california_housing',
'fetch_covtype',
'fetch_kddcup99',
'fetch_lfw_pairs',
'fetch_lfw_people',
'fetch_olivetti_faces',
'fetch_openml',
'fetch_rcv1',
'fetch_species_distributions
我们使用下面的方法加载一个数据集看看
from sklearn.datasets import fetch_california_housing
california_housing = fetch_california_housing(as_frame=True)
X = california_housing.data
y = california_housing.target
总结
- 首先介绍了什么是数据,以及数据的特点和分类
- 介绍了Sklearn 的
make
,load
,fetch
方法,用来创建我们需要的数据集