Data Mining with Python (Working draft)

Data Mining with Python (Working draft)

Finn A?rup Nielsen

November 29, 2017

Contents

Contents

i

List of Figures

vii

List of Tables

ix

1 Introduction

1.1 Other introductions to Python? . . . . . . . . . . .

1.2 Why Python for data mining? . . . . . . . . . . . .

1.3 Why not Python for data mining? . . . . . . . . .

1.4 Components of the Python language and software

1.5 Developing and running Python . . . . . . . . . . .

1.5.1 Python, pypy, IPython . . . . . . . . . . . .

1.5.2 Jupyter Notebook . . . . . . . . . . . . . .

1.5.3 Python 2 vs. Python 3 . . . . . . . . . . . .

1.5.4 Editing . . . . . . . . . . . . . . . . . . . .

1.5.5 Python in the cloud . . . . . . . . . . . . .

1.5.6 Running Python in the browser . . . . . . .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

1

1

1

2

3

5

5

6

6

7

7

7

2 Python

2.1 Basics . . . . . . . . . . . . . . . . . . . . . . . . . .

2.2 Datatypes . . . . . . . . . . . . . . . . . . . . . . . .

2.2.1 Booleans (bool) . . . . . . . . . . . . . . . .

2.2.2 Numbers (int, float, complex and Decimal)

2.2.3 Strings (str) . . . . . . . . . . . . . . . . . .

2.2.4 Dictionaries (dict) . . . . . . . . . . . . . . .

2.2.5 Dates and times . . . . . . . . . . . . . . . .

2.2.6 Enumeration . . . . . . . . . . . . . . . . . .

2.2.7 Other containers classes . . . . . . . . . . . .

2.3 Functions and arguments . . . . . . . . . . . . . . .

2.3.1 Anonymous functions with lambdas . . . . .

2.3.2 Optional function arguments . . . . . . . . .

2.4 Object-oriented programming . . . . . . . . . . . . .

2.4.1 Objects as functions . . . . . . . . . . . . . .

2.5 Modules and import . . . . . . . . . . . . . . . . . .

2.5.1 Submodules . . . . . . . . . . . . . . . . . . .

2.5.2 Globbing import . . . . . . . . . . . . . . . .

2.5.3 Coping with Python 2/3 incompatibility . . .

2.6 Persistency . . . . . . . . . . . . . . . . . . . . . . .

2.6.1 Pickle and JSON . . . . . . . . . . . . . . . .

2.6.2 SQL . . . . . . . . . . . . . . . . . . . . . . .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

9

9

9

9

10

11

11

12

13

13

14

14

14

15

17

17

18

19

19

20

20

21

i

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

21

21

22

22

23

23

24

25

25

27

28

29

29

29

29

30

31

31

3 Python for data mining

3.1 Numpy . . . . . . . . . . . . . . . . . . . . . . . . .

3.2 Plotting . . . . . . . . . . . . . . . . . . . . . . . .

3.2.1 3D plotting . . . . . . . . . . . . . . . . . .

3.2.2 Real-time plotting . . . . . . . . . . . . . .

3.2.3 Plotting for the Web . . . . . . . . . . . . .

3.3 Pandas . . . . . . . . . . . . . . . . . . . . . . . . .

3.3.1 Pandas data types . . . . . . . . . . . . . .

3.3.2 Pandas indexing . . . . . . . . . . . . . . .

3.3.3 Pandas joining, merging and concatenations

3.3.4 Simple statistics . . . . . . . . . . . . . . .

3.4 SciPy . . . . . . . . . . . . . . . . . . . . . . . . .

3.4.1 scipy.linalg . . . . . . . . . . . . . . . .

3.4.2 Fourier transform with scipy.fftpack . .

3.5 Statsmodels . . . . . . . . . . . . . . . . . . . . . .

3.6 Sympy . . . . . . . . . . . . . . . . . . . . . . . . .

3.7 Machine learning . . . . . . . . . . . . . . . . . . .

3.7.1 Scikit-learn . . . . . . . . . . . . . . . . . .

3.8 Text mining . . . . . . . . . . . . . . . . . . . . . .

3.8.1 Regular expressions . . . . . . . . . . . . .

3.8.2 Extracting from webpages . . . . . . . . . .

3.8.3 NLTK . . . . . . . . . . . . . . . . . . . . .

3.8.4 Tokenization and part-of-speech tagging . .

3.8.5 Language detection . . . . . . . . . . . . . .

3.8.6 Sentiment analysis . . . . . . . . . . . . . .

3.9 Network mining . . . . . . . . . . . . . . . . . . . .

3.10 Miscellaneous issues . . . . . . . . . . . . . . . . .

3.10.1 Lazy computation . . . . . . . . . . . . . .

3.11 Testing data mining code . . . . . . . . . . . . . .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

33

33

33

34

34

36

39

40

40

42

43

44

44

44

45

47

47

49

50

50

51

52

53

54

54

55

56

56

57

2.7

2.8

2.9

2.10

2.11

2.12

2.13

2.6.3 NoSQL . . . . . . . . . . . . . . . . . . .

Documentation . . . . . . . . . . . . . . . . . . .

Testing . . . . . . . . . . . . . . . . . . . . . . .

2.8.1 Testing for type . . . . . . . . . . . . . . .

2.8.2 Zero-one-some testing . . . . . . . . . . .

2.8.3 Test layout and test discovery . . . . . . .

2.8.4 Test coverage . . . . . . . . . . . . . . . .

2.8.5 Testing in different environments . . . . .

Profiling . . . . . . . . . . . . . . . . . . . . . . .

Coding style . . . . . . . . . . . . . . . . . . . . .

2.10.1 Where is private and public? . . . . . .

Command-line interface scripting . . . . . . . . .

2.11.1 Distinguishing between module and script

2.11.2 Argument parsing . . . . . . . . . . . . .

2.11.3 Exit status . . . . . . . . . . . . . . . . .

Debugging . . . . . . . . . . . . . . . . . . . . . .

2.12.1 Logging . . . . . . . . . . . . . . . . . . .

Advices . . . . . . . . . . . . . . . . . . . . . . .

4 Case: Pure Python matrix library

59

4.1 Code listing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

ii

5 Case: Pima data set

5.1 Problem description and objectives

5.2 Descriptive statistics and plotting .

5.3 Statistical tests . . . . . . . . . . .

5.4 Predicting diabetes type . . . . . .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

6 Case: Data mining a database

6.1 Problem description and objectives . . . . . . . . .

6.2 Reading the data . . . . . . . . . . . . . . . . . . .

6.3 Graphical overview on the connections between the

6.4 Statistics on the number of tracks sold . . . . . . .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

65

65

66

67

69

. . . .

. . . .

tables

. . . .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

71

71

71

72

74

.

.

.

.

.

.

.

.

.

.

.

.

7 Case: Twitter information diffusion

75

7.1 Problem description and objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

7.2 Building a news classifier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

8 Case: Big data

77

8.1 Problem description and objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

8.2 Stream processing of JSON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

8.2.1 Stream processing of JSON Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

Bibliography

81

Index

85

iii

iv

................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download