2017-11-01 11:14:17 step_forward_ML 阅读数 4655
  • python数据分析与机器学习实战【2019新版】

    购买课程后,请扫码进入学习群,获取唐宇迪老师答疑 Python数据分析与机器学习实战教程,该课程精心挑选真实的数据集为案例,通过python数据科学库numpy,pandas,matplot结合机器学习库scikit-learn完成一些列的机器学习案例。课程以实战为基础,所有课时都结合代码演示如何使用这些python库来完成一个真实的数据案例。算法与项目相结合,选择经典kaggle项目,从数据预处理开始一步步代码实战带大家入门机器学习。学完该课程即可: 1.掌握Python数据科学工具包,包括矩阵数据处理与可视化展示。 2.掌握机器学习算法原理推导,从数学上理解算法是怎么来的以及其中涉及的细节。 3.掌握每一个算法所涉及的参数,详解其中每一步对结果的影响。 4.熟练使用Python进行建模实战,基于真实数据集展开分析,一步步完成整个建模实战任务。

    93921 人正在学习 去看看 唐宇迪

Kaggle比赛源代码和讨论的收集整理。

Algorithmic Trading Challenge25

Allstate Purchase Prediction Challenge3

Amazon.com – Employee Access Challenge6

AMS 2013-2014 Solar Energy Prediction Contest2

Belkin Energy Disaggregation Competition1

Challenges in Representation Learning: Facial Expression Recognition Challenge4

Challenges in Representation Learning: The Black Box Learning Challenge1

Challenges in Representation Learning: Multi-modal Learning2

Detecting Insults in Social Commentary

EMI Music Data Science Hackathon

Galaxy Zoo – The Galaxy Challenge

Global Energy Forecasting Competition 2012 – Wind Forecasting

KDD Cup 2013 – Author-Paper Identification Challenge (Track 1)2

KDD Cup 2013 – Author Disambiguation Challenge (Track 2)1

Large Scale Hierarchical Text Classification4

Loan Default Prediction – Imperial College London

Merck Molecular Activity Challenge1

MLSP 2013 Bird Classification Challenge

Observing the Dark World

PAKDD 2014 – ASUS Malfunctional Components Prediction

Personalize Expedia Hotel Searches – ICDM 2013

Predicting a Biological Response1

Predicting Closed Questions on Stack Overflow

See Click Predict Fix1

See Click Predict Fix – Hackathon1

StumbleUpon Evergreen Classification Challenge

[The Analytics Edge (15.071x)](The%20Analytics Edge (15.071x))

The Marinexplore and Cornell University Whale Detection Challenge

Walmart Recruiting – Store Sales Forecasting1

Thank you FoxtrotJames PettersonBen S for providing some of the links and solutions above.


2019-07-12 14:07:07 xu1988923 阅读数 36
  • python数据分析与机器学习实战【2019新版】

    购买课程后,请扫码进入学习群,获取唐宇迪老师答疑 Python数据分析与机器学习实战教程,该课程精心挑选真实的数据集为案例,通过python数据科学库numpy,pandas,matplot结合机器学习库scikit-learn完成一些列的机器学习案例。课程以实战为基础,所有课时都结合代码演示如何使用这些python库来完成一个真实的数据案例。算法与项目相结合,选择经典kaggle项目,从数据预处理开始一步步代码实战带大家入门机器学习。学完该课程即可: 1.掌握Python数据科学工具包,包括矩阵数据处理与可视化展示。 2.掌握机器学习算法原理推导,从数学上理解算法是怎么来的以及其中涉及的细节。 3.掌握每一个算法所涉及的参数,详解其中每一步对结果的影响。 4.熟练使用Python进行建模实战,基于真实数据集展开分析,一步步完成整个建模实战任务。

    93921 人正在学习 去看看 唐宇迪

机器学习系列教程:https://www.xugj520.cn/category/ML/
机器学习准备工作:Pandas 使用入门:https://www.xugj520.cn/archives/pandas.html

简介

讲师

丹贝克尔
数据科学家
Dan为财富100强中的6家公司提供数据科学咨询服务,并为Keras提供深度学习方面的帮助。他拥有计量经济学博士学位。

我们首先概述机器学习模型如何工作以及如何使用它们。如果你以前做过统计建模或机器学习,这可能会很基本。别担心,我们很快就会建立强大的模型。

这个微课程将让您在完成以下场景时构建模型:

你的堂兄已经花了数百万美元推测房地产。由于您对数据科学的兴趣,他愿意与您成为业务合作伙伴。他会提供资金,你会提供预测各种房屋价值的模型。

你问你的堂兄他过去如何预测房地产价值。他说这只是直觉。但更多的质疑表明,他已经确定了他过去看过的房屋的价格模式,他利用这些模式对他正在考虑的新房进行预测。

机器学习的工作方式相同。我们将从一个名为决策树的模型开始。有更高级的模型可以提供更准确的预测。但决策树很容易理解,它们是数据科学中一些最佳模型的基本构建块。

为简单起见,我们将从最简单的决策树开始。

它将房屋分为两类。所考虑的任何房屋的预测价格是同一类别房屋的历史平均价格。

我们使用数据来决定如何将房屋分成两组,然后再次确定每组的预测价格。从数据捕获模式的这一步骤称为拟合或训练模型。用于拟合模型的数据称为训练数据。

模型如何适合的细节(例如,如何分割数据)非常复杂,我们将在以后保存它。在模型适合后,您可以将其应用于新数据以预测其他房屋的价格。

改进决策树

通过拟合房地产培训数据,更有可能产生以下两个决策树中的哪一个?

左侧的决策树(决策树1)可能更有意义,因为它捕捉到了这样的现实:拥有更多卧室的房屋往往以比卧室更少的房屋更高的价格出售。这种模式的最大缺点是它不能捕捉影响房价的大多数因素,如浴室数量,批量,位置等。

您可以使用具有更多“拆分”的树来捕获更多因素。这些被称为“更深”的树木。决策树也考虑每个房屋的总面积大小如下:深度2树

您可以通过在决策树中进行追踪来预测任何房屋的价格,并始终选择与该房屋特征相对应的路径。房子的预测价格位于树的底部。我们进行预测的底部点称为叶子。

叶子上的分割和值将由数据确定,因此您需要查看将要使用的数据。

2017-05-02 11:29:12 aliceyangxi1987 阅读数 8998
  • python数据分析与机器学习实战【2019新版】

    购买课程后,请扫码进入学习群,获取唐宇迪老师答疑 Python数据分析与机器学习实战教程,该课程精心挑选真实的数据集为案例,通过python数据科学库numpy,pandas,matplot结合机器学习库scikit-learn完成一些列的机器学习案例。课程以实战为基础,所有课时都结合代码演示如何使用这些python库来完成一个真实的数据案例。算法与项目相结合,选择经典kaggle项目,从数据预处理开始一步步代码实战带大家入门机器学习。学完该课程即可: 1.掌握Python数据科学工具包,包括矩阵数据处理与可视化展示。 2.掌握机器学习算法原理推导,从数学上理解算法是怎么来的以及其中涉及的细节。 3.掌握每一个算法所涉及的参数,详解其中每一步对结果的影响。 4.熟练使用Python进行建模实战,基于真实数据集展开分析,一步步完成整个建模实战任务。

    93921 人正在学习 去看看 唐宇迪

之前写过一篇 一个框架解决几乎所有机器学习问题 但是没有具体的例子和代码,今天看到一个不错的 kaggle 上的 code Exploratory Tutorial - Titanic 来解析一下,源码可以直接点这个链接。

在这篇文章中可以学到一个完整的运用机器学习解决分析问题的过程,它包括了解决问题的一般流程,描述性统计的常用方法,数据清洗的常用方法,如何由给定的普通变量启发式思考其他影响因素,sklearn 建立模型的一般流程,以及很火的 ensemble learning 怎么用

下面进入正题:

Titanic: Machine Learning from Disaster 这个问题中,要解决的是根据所提供的 age,sex 等因素的数据,判断哪些乘客更有可能生存下来,所以这是一个分类问题。

在解决机器学习问题时,一般包括以下流程:

  1. Data Exploration
  2. Data Cleaning
  3. Feature Engineering
  4. Model Building
  5. Ensemble Learning
  6. Predict

1. Data Exploration

这部分先导入常用的 Numpy,Pandas,Matplotlib 等包,导入训练集和测试集:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
train = pd.read_csv('../input/train.csv')
test = pd.read_csv('../input/test.csv')

之后,可以用下面的命令先观察一下数据表的结构:

train.tail()
test.head()
train.describe()

接下来,可以观察各个变量的分布情况:

各个变量在测试集和训练集的分布差不多一致。

然后看一下各个变量对分类标签的影响:

例如,性别的影响,通过可视化可以发现,生还的乘客中女性多于男性.

或者 Pclass 的影响。

2. Data Cleaning

这个部分,可以统计一下各个变量的缺失值情况:

train.isnull().sum()
#test.isnull().sum()


PassengerId      0
Survived         0
Pclass           0
Name             0
Sex              0
Age            177
SibSp            0
Parch            0
Ticket           0
Fare             0
Cabin          687
Embarked         2
dtype: int64

然后对缺失部分进行处理,如果是连续变量,可以采用预测模型,例如 Age,如果是离散的变量,可以找到类似的数据群体,然后取最多的,或者最多群体的平均值。
eg,Embarked 这两个缺失值,可以看 Pclass 1 and Fare 80 时,最多的情况是 Embarked=C。

3. Feature Engineering

之前有过一篇 特征工程怎么做 只是介绍了一些概念,这个例子就是比较具有启发性,看看怎么通过给定的几个变量,去拓展成更有影响力的 feature,如何结合实际情况联想新的因素,并转化成数字的形式表达出来。

下面是数据中的原始变量,看看由它们可以联想到什么因素。

pclass          Passenger Class
                (1 = 1st; 2 = 2nd; 3 = 3rd)
name            Name
sex             Sex
age             Age
sibsp           Number of Siblings/Spouses Aboard
parch           Number of Parents/Children Aboard
ticket          Ticket Number
fare            Passenger Fare
cabin           Cabin
embarked        Port of Embarkation
                (C = Cherbourg; Q = Queenstown; S = Southampton)

除了性别,年龄等明显的因素,社会地位等也可能影响着谁会优先乘坐救生艇,或被救助而生存下来。例如,

  • Name 里可以抓取到这样的字眼,来反映出乘客的职场地位: [‘Capt’, ‘Col’, ‘Major’, ‘Dr’, ‘Officer’, ‘Rev’]。
  • Cabin 里的 [a-zA-Z] 也许可以反映出社会地位。
  • Cabin 里的 [0-9] 可能代表船舱的地理位置。
  • SibSp 可以算出乘客中同一家庭成员人数的大小。
title[title.isin(['Capt', 'Col', 'Major', 'Dr', 'Officer', 'Rev'])] = 'Officer'

deck = full[~full.Cabin.isnull()].Cabin.map( lambda x : re.compile("([a-zA-Z]+)").search(x).group())

checker = re.compile("([0-9]+)")

full['Group_num'] = full.Parch + full.SibSp + 1

在这个环节中,还有必要把类别数据变换成 dummy variable 的形式,也就是变换成向量格式,属于第几类就在第几个位置上为 1,其余位置为 0.

连续数据做一下归一化,即把大范围变化的数据范围缩小至 0~1 或者 -1~1 之间。
然后把不相关的变量 drop 掉。

train = pd.get_dummies(train, columns=['Embarked', 'Pclass', 'Title', 'Group_size'])

full['NorFare'] = pd.Series(scaler.fit_transform(full.Fare.reshape(-1,1)).reshape(-1), index=full.index)

full.drop(labels=['PassengerId', 'Name', 'Cabin', 'Survived', 'Ticket', 'Fare'], axis=1, inplace=True)

4. Model Building

首先就是把数据分为训练集和测试集,用到 train_test_split

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)

因为后面会用到很多模型,所以可以把 cross validation 和 fit 的部分写入一个函数,这样每次把分类器投入到函数中训练,最后返回训练好的模型即可。

from sklearn.model_selection import GridSearchCV
from sklearn.metrics import make_scorer
from sklearn.metrics import accuracy_score

scoring = make_scorer(accuracy_score, greater_is_better=True)

def get_model(estimator, parameters, X_train, y_train, scoring):  
    model = GridSearchCV(estimator, param_grid=parameters, scoring=scoring)
    model.fit(X_train, y_train)
    return model.best_estimator_

以一个 KNN 为例,来看一下建立 训练 并用模型预测的过程,

  • sklearn 导入分类器模型后,定义一个 KNN,
  • 定义合适的参数集 parameters
  • 然后用 get_model 去训练 KNN 模型,
  • 接下来用训练好的模型去预测测试集的数据,并得到 accuracy_score
  • 然后画出 learning_curve
from sklearn.neighbors import KNeighborsClassifier
KNN = KNeighborsClassifier(weights='uniform')
parameters = {'n_neighbors':[3,4,5], 'p':[1,2]}
clf_knn = get_model(KNN, parameters, X_train, y_train, scoring)

print (accuracy_score(y_test, clf_knn.predict(X_test)))
plot_learning_curve(clf_knn, 'KNN', X, y, cv=4);

采用上面的方式,尝试多种模型,并打印出它们的 accuracy_score

KNN, 0.816143497758
Random Forest, 0.829596412556
只选择比较重要的几个特征后的 Random Forest, 0.834080717489
Logistic Regression, 0.811659192825
SVC, 0.838565022422
XGBoost, 0.820627802691

5. Ensemble

接下来把前面训练好的几个分类器用 VotingClassifier 集成起来再 fit 训练一下,打印 accuracy_score 并画出 learning_curve

from sklearn.ensemble import VotingClassifier
clf_vc = VotingClassifier(estimators=[('xgb1', clf_xgb1), ('lg1', clf_lg1), ('svc', clf_svc), 
                                      ('rfc1', clf_rfc1),('rfc2', clf_rfc2), ('knn', clf_knn)], 
                          voting='hard', weights=[4,1,1,1,1,2])
clf_vc = clf_vc.fit(X_train, y_train)

print (accuracy_score(y_test, clf_vc.predict(X_test)))
plot_learning_curve(clf_vc, 'Ensemble', X, y, cv=4);
ensemble, 0.825112107623

6. Prediction

用最后训练好的 model 去预测给出的测试集文件,并把数据按照指定格式做好,存进 csv 提交即可。

def submission(model, fname, X):
    ans = pd.DataFrame(columns=['PassengerId', 'Survived'])
    ans.PassengerId = PassengerId
    ans.Survived = pd.Series(model.predict(X), index=ans.index)
    ans.to_csv(fname, index=False)

推荐阅读
历史技术博文链接汇总
也许可以找到你想要的

2018-01-19 18:30:12 cqy_chen 阅读数 3220
  • python数据分析与机器学习实战【2019新版】

    购买课程后,请扫码进入学习群,获取唐宇迪老师答疑 Python数据分析与机器学习实战教程,该课程精心挑选真实的数据集为案例,通过python数据科学库numpy,pandas,matplot结合机器学习库scikit-learn完成一些列的机器学习案例。课程以实战为基础,所有课时都结合代码演示如何使用这些python库来完成一个真实的数据案例。算法与项目相结合,选择经典kaggle项目,从数据预处理开始一步步代码实战带大家入门机器学习。学完该课程即可: 1.掌握Python数据科学工具包,包括矩阵数据处理与可视化展示。 2.掌握机器学习算法原理推导,从数学上理解算法是怎么来的以及其中涉及的细节。 3.掌握每一个算法所涉及的参数,详解其中每一步对结果的影响。 4.熟练使用Python进行建模实战,基于真实数据集展开分析,一步步完成整个建模实战任务。

    93921 人正在学习 去看看 唐宇迪

参考:http://ndres.me/kaggle-past-solutions/
http://shujianliu.com/kaggle-winning-code.html
http://www.chioka.in/kaggle-competition-solutions/
建议参考这三个链接,因为都保持最新的题目跟踪,下面的是三年前的题目了。不是最新的。不过仍有参考价值。

转载:http://blog.csdn.net/mmc2015/article/details/47321973

Algorithmic Trading Challenge40

Allstate Purchase Prediction Challenge7

Amazon.com – Employee Access Challenge10

AMS 2013-2014 Solar Energy Prediction Contest2

Belkin Energy Disaggregation Competition1

Challenges in Representation Learning: Facial Expression Recognition Challenge4

Challenges in Representation Learning: The Black Box Learning Challenge1

Challenges in Representation Learning: Multi-modal Learning3

Detecting Insults in Social Commentary

EMI Music Data Science Hackathon

Galaxy Zoo – The Galaxy Challenge

Global Energy Forecasting Competition 2012 – Wind Forecasting

KDD Cup 2013 – Author-Paper Identification Challenge (Track 1)2

KDD Cup 2013 – Author Disambiguation Challenge (Track 2)1

Large Scale Hierarchical Text Classification4

Loan Default Prediction – Imperial College London1

Merck Molecular Activity Challenge1

MLSP 2013 Bird Classification Challenge

Observing the Dark World

PAKDD 2014 – ASUS Malfunctional Components Prediction

Personalize Expedia Hotel Searches – ICDM 2013

Predicting a Biological Response1

Predicting Closed Questions on Stack Overflow

See Click Predict Fix2

See Click Predict Fix – Hackathon1

StumbleUpon Evergreen Classification Challenge

[The Analytics Edge (15.071x)](The%20Analytics Edge (15.071x))

The Marinexplore and Cornell University Whale Detection Challenge

Walmart Recruiting – Store Sales Forecasting1

Thank you Foxtrot, James Petterson, Ben S for providing some of the links and solutions above.

2018-09-19 16:41:44 weixin_34234829 阅读数 30
  • python数据分析与机器学习实战【2019新版】

    购买课程后,请扫码进入学习群,获取唐宇迪老师答疑 Python数据分析与机器学习实战教程,该课程精心挑选真实的数据集为案例,通过python数据科学库numpy,pandas,matplot结合机器学习库scikit-learn完成一些列的机器学习案例。课程以实战为基础,所有课时都结合代码演示如何使用这些python库来完成一个真实的数据案例。算法与项目相结合,选择经典kaggle项目,从数据预处理开始一步步代码实战带大家入门机器学习。学完该课程即可: 1.掌握Python数据科学工具包,包括矩阵数据处理与可视化展示。 2.掌握机器学习算法原理推导,从数学上理解算法是怎么来的以及其中涉及的细节。 3.掌握每一个算法所涉及的参数,详解其中每一步对结果的影响。 4.熟练使用Python进行建模实战,基于真实数据集展开分析,一步步完成整个建模实战任务。

    93921 人正在学习 去看看 唐宇迪

Kaggle 入门

2016 年 7 月 21 日, 数据科学家 Abhishek Thakur 在 Linkedin 发表了一篇文章 Approaching (Almost) Any Machine Learning Problem. 该篇文章介绍他建立的一个自动的机器学习框架, 几乎可以解决任何机器学习问题, 项目很快也会发布出来. 这篇文章迅速火遍 Kaggle,他参加过 100 多个数据科学相关的竞赛, 积累了很多宝贵的经验.

以下是对其文章的简要翻译, 并且加入了一些个人理解。

-------------------

在应用机器学习模型之前,必须将数据转换为表格形式。整个过程是最耗时且最困难的过程,如下图所示。

数据处理

然后将机器学习模型应用于表格数据。表格数据是在机器学习或数据挖掘中表示数据的最常用方式。我们有一个数据表,包含不同数据样本的行或 $X$ 和标签 $y$。标签可以是单列或多列,具体取决于问题的类型。我们将用 $X$ 表示数据,用 $y$ 表示标签。

标签类型

标签定义问题,可以是不同类型,例如:

  • 单列,binary values(分类问题,一个样本只属于一个类,只有两个类)
  • 单列,实数值(回归问题,仅预测一个值)
  • 多列,binary values(分类问题,一个样本属于一个类,但有两个以上的类)
  • 多列,实数值(回归问题,多值预测)
  • multilabel(分类问题,一个样本可以属于几个类)

Evaluation Metrics

For any kind of machine learning problem, we must know how we are going to evaluate our results, or what the evaluation metric or objective is.

对于任何类型的机器学习问题,我们必须知道我们将如何评估我们的结果,或评估指标或目标是什么。例如,在偏斜二元分类问题的情况下,我们通常选择接收器操作特性曲线下的面积(ROC AUC或简称AUC)。在多标签或多类别分类问题的情况下,我们通常选择分类交叉熵或多类日志损失和回归问题时的均方误差。

常用的库

机器学习框架

2015 年,Abhishek Thakur 提出了一个自动机器学习框架,该框架仍在开发中,并将很快发布。对于这篇文章,相同的框架将成为基础。框架如下图所示:

图来自:A。THAKUR 和 A. KROHN-GRIMBERGHE,AUTOCOMPETE:机器学习竞赛框架,AUTOML研讨会,2015年机器学习国际会议。

在上面显示的框架中,粉色线代表最常见的路径。在我们将数据提取并缩减为表格格式之后,我们可以继续构建机器学习模型。

第一步是确定问题。这可以通过查看标签来完成。必须知道问题是二元分类,多类别或多标签分类还是回归问题。在确定问题之后,我们将数据分成两个不同的部分,即训练集和验证集,如下图所示。

来源于 Abhishek Thakur

“必须” 根据标签将数据分成训练和验证集。如果出现任何类型的分类问题,请使用分层 (stratified) 划分。在 python 中,你可以很容易地使用 scikit-learn 来做到这一点。

from sklearn.model_selection import StratifiedKFold

eval_size = 0.1
kf = StratifiedKFold(y, round(1/eval_size))
train_indices, valid_indices = next(iter(kf))
X_train, y_train = X[train_indices], y[train_indices]
X_valid, y_valid = X[valid_indices], y[valid_indices]

在回归任务的情况下,简单的 K-fold 分割就足够了。然而,有一些复杂的方法倾向于保持标签的分布对于训练和验证集都是相同的。

from sklearn.model_selection import KFold

eval_size = 0.1
kf = KFold(len(y), round(1/eval_size))
train_indices, valid_indices = next(iter(kf))
X_train, y_train = X[train_indices], y[train_indices]
X_valid, y_valid = X[valid_indices], y[valid_indices]

在上面的示例中选择了 eval_size 或验证集的大小为完整数据的 $10\%$,但是可以根据它们拥有的数据大小选择此值。

完成数据拆分后,请保留此数据,不要试图改变它们。必须保存应用于训练集的任何操作,然后将其应用于验证集。无论如何,验证集不应与训练集相结合。验证集和训练严格分开,以防止过拟合情况的发生。

下一步是识别数据中的不同变量。我们通常会处理三种类型的变量。即,数值变量分类变量和其中包含文本的变量。原文以流行的泰坦尼克号数据集为例。下面我以全球恐怖主义数据库 (GTD) 为例来说明。

import pandas as pd
import numpy as np
import zipfile
import sys, os

%pylab inline
Populating the interactive namespace from numpy and matplotlib

载入并查看数据

首先,在 Global Terrorism Database网页下载数据集,下面我们之间对其进行操作:

filename = '../data/globalterrorismdb_0718dist.csv_3.zip'

zf = zipfile.ZipFile(filename)

zf.extractall('./data/')    # 解压数据
zf.close()

gtd_file = os.listdir('data/')
gtd_file
['globalterrorismdb_0718dist.csv']

该文件是 .csv 格式,需要解决各种编码问题,有点不是那么友好:

%%time
df = pd.read_csv('data/globalterrorismdb_0718dist.csv', encoding='ISO-8859-1', low_memory=False)  # 载入数据
Wall time: 5.96 s

载入该文件花费时间小于 $10$ 秒.

df.get_dtype_counts()  # 查看数据类型分布
float64    55
int64      22
object     58
dtype: int64

我们可以将其转换为 Excel (.xlsx 格式) :

df.to_excel('data/globalterrorismdb_0718dist.xlsx')  # 保存为 excel 格式
%%time
df_ex = pd.read_excel('data/globalterrorismdb_0718dist.xlsx')
Wall time: 1min 37s

载入该 excel 文件花费 1min 45s 也不是我们想要的结果. 为了加快数据的存储和载入, 我们采用 HDF5 格式来保存文件:

df.to_hdf('data/globalterrorismdb_0718dist.h5', key='gtd_df')
C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\generic.py:1996: PerformanceWarning: 
your performance may suffer as PyTables will pickle object types that it cannot
map directly to c-types [inferred_type->mixed,key->block2_values] [items->['approxdate', 'resolution', 'country_txt', 'region_txt', 'provstate', 'city', 'location', 'summary', 'alternative_txt', 'attacktype1_txt', 'attacktype2_txt', 'attacktype3_txt', 'targtype1_txt', 'targsubtype1_txt', 'corp1', 'target1', 'natlty1_txt', 'targtype2_txt', 'targsubtype2_txt', 'corp2', 'target2', 'natlty2_txt', 'targtype3_txt', 'targsubtype3_txt', 'corp3', 'target3', 'natlty3_txt', 'gname', 'gsubname', 'gname2', 'gsubname2', 'gname3', 'gsubname3', 'motive', 'claimmode_txt', 'claimmode2_txt', 'claimmode3_txt', 'weaptype1_txt', 'weapsubtype1_txt', 'weaptype2_txt', 'weapsubtype2_txt', 'weaptype3_txt', 'weapsubtype3_txt', 'weaptype4_txt', 'weapsubtype4_txt', 'weapdetail', 'propextent_txt', 'propcomment', 'divert', 'kidhijcountry', 'ransomnote', 'hostkidoutcome_txt', 'addnotes', 'scite1', 'scite2', 'scite3', 'dbsource', 'related']]

  return pytables.to_hdf(path_or_buf, key, self, **kwargs)

%%time
se = pd.read_hdf('data/globalterrorismdb_0718dist.h5')
Wall time: 2.62 s

载入 HDF5 文件仅仅需要 $2.42$ 秒。但是,有个性能预警,为此需要对其进行处理:

查看数据类型的分布情况

# Display a summary of the data frame
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 181691 entries, 0 to 181690
Columns: 135 entries, eventid to related
dtypes: float64(55), int64(22), object(58)
memory usage: 187.1+ MB

GTD 数据集有 $181\,691$ 个样本,且其特征数目为 $135$。为了解决 PerformanceWarning 问题, 下面我们仅仅需要处理 object 数据类型数据。

txt_columns = df.select_dtypes(['object']).columns
df.loc[:,txt_columns] = df.loc[:,txt_columns].replace(np.nan, 'Unknown')
%%time
df.to_hdf('data/globalterrorismdb_0718dist.h5', key='gtd_df')
Wall time: 3.5 s

此时,便没有在报错!

%%time
gtd_df = pd.read_hdf('data/globalterrorismdb_0718dist.h5')  #  载入数据
Wall time: 1.78 s

总结:相比 Excel 和 CSV,HDF5 的载入和写入都很快速和方便!下面还需要对 GTD 数据进行一些必要的操作,详细内容见:GTD 数据预处理 和 附件。

没有更多推荐了,返回首页