加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

开源工具 | Python数据科学入门

发布时间:2018-11-11 18:32:59 所属栏目:教程 来源:Payal Singh
导读:不需要昂贵的工具即可领略数据科学的力量,从这些开源工具起步即可。 无论你是一个具有数学或计算机科学背景的资深数据科学爱好者,还是一个其它领域的专家,数据科学提供的可能性都在你力所能及的范围内,而且你不需要昂贵的,高度专业化的企业级软件。本
副标题[/!--empirenews.page--]

Python数据科学入门

不需要昂贵的工具即可领略数据科学的力量,从这些开源工具起步即可。

无论你是一个具有数学或计算机科学背景的资深数据科学爱好者,还是一个其它领域的专家,数据科学提供的可能性都在你力所能及的范围内,而且你不需要昂贵的,高度专业化的企业级软件。本文中讨论的开源工具就是你入门时所需的全部内容。

Python,其机器学习和数据科学库(pandas、 Keras、 TensorFlow、 scikit-learn、 SciPy、 NumPy 等),以及大量可视化库(Matplotlib、pyplot、 Plotly 等)对于初学者和专家来说都是优秀的自由及开源软件工具。它们易于学习,很受欢迎且受到社区支持,并拥有为数据科学而开发的最新技术和算法。它们是你在开始学习时可以获得的最佳工具集之一。

许多 Python 库都是建立在彼此之上的(称为依赖项),其基础是 NumPy 库。NumPy 专门为数据科学设计,经常被用于在其 ndarray 数据类型中存储数据集的相关部分。ndarray 是一种方便的数据类型,用于将关系表中的记录存储为 cvs 文件或其它任何格式,反之亦然。将 scikit 函数应用于多维数组时,它特别方便。SQL 非常适合查询数据库,但是对于执行复杂和资源密集型的数据科学操作,在 ndarray 中存储数据可以提高效率和速度(但请确保在处理大量数据集时有足够的 RAM)。当你使用 pandas 进行知识提取和分析时,pandas 中的 DataFrame 数据类型和 NumPy 中的 ndarray 之间的无缝转换分别为提取和计算密集型操作创建了一个强大的组合。

作为快速演示,让我们启动 Python shell 并在 pandas DataFrame 变量中加载来自巴尔的摩的犯罪统计数据的开放数据集,并查看加载的一部分 DataFrame:

  1. >>>  import pandas as pd
  2. >>>  crime_stats = pd.read_csv('BPD_Arrests.csv')
  3. >>>  crime_stats.head()

 Python数据科学入门

我们现在可以在这个 pandas DataFrame 上执行大多数查询,就像我们可以在数据库中使用 SQL 一样。例如,要获取 Description 属性的所有唯一值,SQL 查询是:

  1. $ SELECT unique(“Description”) from crime_stats;

利用 pandas DataFrame 编写相同的查询如下所示:

  1. >>> crime_stats['Description'].unique()
  2. ['COMMON ASSAULT' 'LARCENY' 'ROBBERY - STREET' 'AGG. ASSAULT'
  3. 'LARCENY FROM AUTO' 'HOMICIDE' 'BURGLARY' 'AUTO THEFT'
  4. 'ROBBERY - RESIDENCE' 'ROBBERY - COMMERCIAL' 'ROBBERY - CARJACKING'
  5. 'ASSAULT BY THREAT' 'SHOOTING' 'RAPE' 'ARSON']

它返回的是一个 NumPy 数组(ndarray 类型):

  1. >>> type(crime_stats['Description'].unique())
  2. <class 'numpy.ndarray'>

接下来让我们将这些数据输入神经网络,看看它能多准确地预测使用的武器类型,给出的数据包括犯罪事件,犯罪类型以及发生的地点:

  1. >>> from sklearn.neural_network import MLPClassifier
  2. >>> import numpy as np
  3. >>>
  4. >>> prediction = crime_stats[[‘Weapon’]]
  5. >>> predictors = crime_stats['CrimeTime', ‘CrimeCode’, ‘Neighborhood’]
  6. >>>
  7. >>> nn_model = MLPClassifier(solver='lbfgs', alpha=1e-5, hidden_layer_sizes=(5,
  8. 2), random_state=1)
  9. >>>
  10. >>>predict_weapon = nn_model.fit(prediction, predictors)

现在学习模型准备就绪,我们可以执行一些测试来确定其质量和可靠性。对于初学者,让我们输入一个训练集数据(用于训练模型的原始数据集的一部分,不包括在创建模型中):

  1. >>> predict_weapon.predict(training_set_weapons)
  2. array([4, 4, 4, ..., 0, 4, 4])

如你所见,它返回一个列表,每个数字预测训练集中每个记录的武器。我们之所以看到的是数字而不是武器名称,是因为大多数分类算法都是用数字优化的。对于分类数据,有一些技术可以将属性转换为数字表示。在这种情况下,使用的技术是标签编码,使用 sklearn 预处理库中的 LabelEncoder 函数:preprocessing.LabelEncoder()。它能够对一个数据和其对应的数值表示来进行变换和逆变换。在这个例子中,我们可以使用 LabelEncoder()inverse_transform 函数来查看武器 0 和 4 是什么:

  1. >>> preprocessing.LabelEncoder().inverse_transform(encoded_weapons)
  2. array(['HANDS', 'FIREARM', 'HANDS', ..., 'FIREARM', 'FIREARM', 'FIREARM']

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读