Библиотеки для науки о данных

Это лучшие библиотеки, которые переводят Python из языка программирования общего назначения в мощный и надежный инструмент для анализа и визуализации данных.

NumPy

NumPy - это базовая библиотека или научный компьютер на Python, и многие из нижестоящих библиотек используют массивы NumPy в качестве входных и выходных данных. NumPy представляет объекты для многомерных массивов и матриц, а также процедуры, которые позволяют разработчикам выполнять расширенные математические и статистические функции с массивами с минимальным количеством кода.

Пример

import numpy as np 
# Create the following rank 2 array with shape (3, 4) # [[ 1 2 3 4] # [ 5 6 7 8] # [ 9 10 11 12]] a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]]) 
# Use slicing to pull out the subarray consisting of the first 2 rows # and columns 1 and 2; b is the following array of shape (2, 2): # [[2 3] # [6 7]] b = a[:2, 1:3] 
# A slice of an array is a view into the same data, so modifying it # will modify the original array. print(a[0, 1]) # Prints "2" b[0, 0] = 77 # b[0, 0] is the same piece of data as a[0, 1] 
print(a[0, 1]) # Prints "77"

SciPy

SciPy основывается на NumPy, добавляя набор алгоритмов и высокоуровневых команд для управления и визуализации данных. Этот пакет включает функции для численного вычисления интегралов, решения дифференциальных уравнений, оптимизации.

Пример - проверка асимметрии и эксцесса в нормальном распределении

>> from scipy import stats 
>>> print('normal skewtest teststat = %6.3f pvalue = %6.4f' % stats.skewtest(x)) 
normal skewtest teststat = 2.785 pvalue = 0.0054 
>>> print('normal kurtosistest teststat = %6.3f pvalue = %6.4f' % stats.kurtosistes t(x)) 
normal kurtosistest teststat = 4.757 pvalue = 0.0000
>>> print('normaltest teststat = %6.3f pvalue = %6.4f' % stats.normaltest(x)) 
normaltest teststat = 30.379 pvalue = 0.0000

Панды

Pandas добавляет структуры данных и инструменты, предназначенные для практического анализа данных в области финансов, социальных наук и инженерии. Panda хорошо работает с неполными, беспорядочными и немаркированными данными и предоставляет инструменты для формирования, объединения, изменения и нарезки наборов данных.

Example
import pandas as pd 
raw_data = {'first_name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'], 
'last_name': ['Miller', 'Jacobson', ".", 'Milner', 'Cooze'], 
'age': [42, 52, 36, 24, 73], 
'preTestScore': [4, 24, 31, ".", "."], 
'postTestScore': ["25,000", "94,000", 57, 62, 70]} 
df = pd.DataFrame(raw_data, columns = ['first_name', 'last_name', 'age', 'preTestScore', 'postTestScore']) 
df

Матплотлиб

Matplotlib - это стандартная библиотека Python для создания 2D-графиков и графиков. Это низкий уровень, что означает, что для создания красивых графиков и фигур он требует дополнительных команд, чем некоторые другие расширенные библиотеки. Он гибкий и с достаточным количеством команд, почти все виды графиков могут быть созданы с помощью matplotlib.

Example
import numpy as np # importing numpy 
import matplotlib.pyplot as plt # importing matplotlib 
# Compute the x and y coordinates for points on sine and cosine curves 
x = np.arange(0, 3 * np.pi, 0.1) 
y_sin = np.sin(x) # finding sin of x 
y_cos = np.cos(x) # finding cosine of x 
# Plot the points using matplotlib 
plt.plot(x, y_sin) 
plt.plot(x, y_cos) 
plt.xlabel('x axis label') 
plt.ylabel('y axis label') 
plt.title('Sine and Cosine') 
plt.legend(['Sine', 'Cosine']) 
plt.show()

Библиотеки для машинного обучения

Машинное обучение находится на пересечении искусственного интеллекта и науки о данных. Обучая компьютеры с реальными наборами данных, мы можем создавать алгоритмы, которые делают точные и сложные прогнозы. Некоторые варианты использования связаны с улучшением маршрутов проезда и созданием компьютеров, которые могут определять ориентиры по изображениям.

Scikit-Learn

Scikit-learn основывается на NumPy и SciPy за счет включения алгоритмов для общих задач машинного обучения и интеллектуального анализа данных, включая кластеризацию, регрессию и классификацию. Инструменты Scikit-learn хорошо документированы, и в его состав входит множество экспертов по машинному обучению. Это тщательно подобранная библиотека, что означает, что разработчикам не нужно выбирать между разными версиями одного и того же алгоритма. Его мощность и простота использования делают его популярным среди стартапов с большим объемом данных, таких как Evernote и Spotify.

Example - Logistic regression using Scikit-learn
import numpy as np 
import matplotlib.pyplot as plt 
from sklearn import linear_model, datasets 
# import some data to play with 
iris = datasets.load_iris() 
X = iris.data[:, :2] # we only take the first two features. 
Y = iris.targe
h = .02 # step size in the mesh
logreg = linear_model.LogisticRegression(C=1e5) 
# we create an instance of Neighbours Classifier and fit the data. 
logreg.fit(X, Y)
# Plot the decision boundary. For that, we will assign a color to each 
# point in the mesh [x_min, x_max]x[y_min, y_max]. 
x_min, x_max = X[:, 0].min() - .5, X[:, 0].max() + .5 
y_min, y_max = X[:, 1].min() - .5, X[:, 1].max() + .5 
xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h)) 
Z = logreg.predict(np.c_[xx.ravel(), yy.ravel()]) 
# Put the result into a color plot 
Z = Z.reshape(xx.shape) 
plt.figure(1, figsize=(4, 3)) 
plt.pcolormesh(xx, yy, Z, cmap=plt.cm.Paired) 
# Plot also the training points 
plt.scatter(X[:, 0], X[:, 1], c=Y, edgecolors='k', cmap=plt.cm.Paired) 
plt.xlabel('Sepal length') 
plt.ylabel('Sepal width') 
plt.xlim(xx.min(), xx.max()) 
plt.ylim(yy.min(), yy.max()) 
plt.xticks(()) 
plt.yticks(()) 
plt.show()

TensorFlow

TensorFlow разработан Google как преемник с открытым исходным кодом DistBelief, их предыдущей структуры для обучения нейронных сетей. TensoFlow использует систему многоуровневых узлов, которые позволяют быстро настраивать, обучать и развертывать искусственные нейронные сети с большими наборами данных. Это то, что позволяет Google идентифицировать объекты на фотографиях или понимать произносимые слова в своем приложении для распознавания голоса и в основном используется в глубоком обучении.

Example - Example in MNIST dataset (hand-written digits from 0-9)
import tensorflow as tf mnist = tf.keras.datasets.mnist 
(x_train, y_train),(x_test, y_test) = mnist.load_data() x_train, x_test = x_train / 255.0, x_test / 255.0 
model = tf.keras.models.Sequential([ tf.keras.layers.Flatten(), tf.keras.layers.Dense(512, activation=tf.nn.relu), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(10, activation=tf.nn.softmax) ]) model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) 
model.fit(x_train, y_train, epochs=5) model.evaluate(x_test, y_test
Keras is a high-level neural network API, written in Python and is capable of running on top of TensorFlow, CNTK and  Theano. It was developed with a focus on enabling fast experimentation. To be able to go from idea to result with the least possible delay is key to doing good research.

Вы будете использовать Keras, если вам нужна библиотека глубокого обучения, которая:

  • Позволяет легко и быстро создавать прототипы благодаря удобству для пользователя, модульности и расширяемости
  • Поддерживает как сверточные сети, так и рекуррентные сети
  • Без проблем работает на CPU и GPU
Example
from keras.models import Sequential 
model = Sequential() 
from keras.layers import Dense 
model.add(Dense(units=64, activation='relu', input_dim=100)) 
model.add(Dense(units=10, activation='softmax')) 
model.compile(loss='categorical_crossentropy', optimizer='sgd', 
metrics=['accuracy']) 
model.compile(loss=keras.losses.categorical_crossentropy, 
optimizer=keras.optimizers.SGD(lr=0.01, momentum=0.9, nesterov=True)
model.fit(x_train, y_train, epochs=5, batch_size=32)
model.train_on_batch(x_batch, y_batch)
loss_and_metrics = model.evaluate(x_test, y_test, batch_size=128) 
classes = model.predict(x_test, batch_size=128)

Библиотеки для обработки естественного языка

Scrapy

Scrapy - это библиотека для создания роботов-пауков для систематического сканирования Интернета и извлечения структурированных данных, таких как цены, контактная информация и URL-адреса. Изначально Scrapy был разработан для очистки веб-страниц. Он также может извлекать данные из API.

Example
import scrapy 
class QuotesSpider(scrapy.Spider): name = "quotes" 
def start_requests(self): urls = [ 'http://quotes.toscrape.com/page/1/', 'http://quotes.toscrape.com/page/2/', ] for url in urls: yield scrapy.Request(url=url, callback=self.parse) 
def parse(self, response): page = response.url.split("/")[-2] filename = 'quotes-%s.html' % page with open(filename, 'wb') as f: f.write(response.body) self.log('Saved file %s' % filename)

НЛТК

NLTK - это набор библиотек, предназначенных для обработки естественного языка (NLP). Основные функции NLTK позволяют помечать текст, идентифицировать именованные объекты. Он также отображает деревья синтаксического анализа, которые похожи на диаграммы предложений, которые раскрывают части речи и зависимости. С помощью NLTK можно делать более сложные вещи, такие как анализ настроений и автоматическое суммирование.

SpaCy

SpaCy минимален и самоуверен, и он не наводняет вас такими опциями, как NLTK. Его философия состоит в том, чтобы представить лучший алгоритм для каждой цели. Необходимо делать небольшие выборочные решения, и можно сосредоточиться на том, чтобы быть продуктивным.

Поскольку SpaCy построен на Cython, он работает молниеносно. Он считается «ультрасовременным». Его основная слабость заключается в том, что он является всего лишь средством извлечения информации и не выполняет весь набор операций по обработке естественного языка.

Gensim

Gensim - это хорошо оптимизированная библиотека для моделирования тем и анализа схожести документов. Такие алгоритмы моделирования темы, как реализация скрытого распределения Дирихле (LDA), являются лучшими в своем классе. Он надежный, эффективный и масштабируемый.

Библиотеки для построения графиков и визуализаций

Анализ имеет ценность только в том случае, если его можно передать другим людям. Эти библиотеки основаны на matplotlib, что позволяет легко и наглядно создавать сложные графики, диаграммы и карты.

Сиборн

Seaborn - популярная библиотека визуализации, построенная на основе matplotlib. Стили Seaborn по умолчанию более сложны, чем стили matplotlib. Seaborn - это библиотека высокого уровня, что означает, что легко создавать различные типы графиков, включая тепловые карты, временные ряды и графики скрипки.

Example
>> import seaborn as sns 
>>> sns.set(style="whitegrid") 
>>> tips = sns.load_dataset("tips") 
>>> ax = sns.boxplot(x=tips["total_bill"])

Bokeh создает интерактивные масштабируемые графики в современных веб-браузерах с помощью виджетов JavaScript. Особенностью Bokeh является то, что он имеет 3 уровня интерфейса: от высокоуровневых абстракций, позволяющих быстро создавать сложные графики, до низкоуровневого представления, обеспечивающего максимальную гибкость разработчикам приложений.

Matplotlib предназначен для создания 2D-графиков и графиков. Это низкоуровневая библиотека, а это означает, что для создания красивых графиков и фигур требуется больше команд, чем при использовании расширенных библиотек. Он обладает хорошей гибкостью, что означает, что с помощью matplotlib можно создать практически любой график.

Scikit-learn против TensorFlow против Keras

TensorFlow является низкоуровневым, что означает, что именно блоки Lego помогают реализовать алгоритмы машинного обучения, в которых scikit-learn предлагает готовые алгоритмы, такие как классификация, такая как SVM, случайные леса, логистическая регрессия. TensorFlow отлично подходит для алгоритмов глубокого обучения, поскольку он использует преимущества графических процессоров для более эффективного обучения.

Функциональность Scikit для глубокого обучения весьма ограничена. Недавно он представил мелкие сети, и его многослойный перцептрон (MLP) не так хорошо оптимизирован по сравнению с Kears или TensorFlow.

XGBoost

XGBoost имеет как решатель линейной модели, так и алгоритм обучения дерева. Он делает свой выбор разумно и, следовательно, придает большее значение наблюдениям, которые трудно классифицировать. Это быстро благодаря возможности выполнять параллельные вычисления на одной машине. Он имеет дополнительные функции для перекрестной проверки и поиска важных переменных.

Функции

  • Скорость: он может автоматически выполнять параллельные вычисления в Windows и Linux, как правило, более чем в 10 раз быстрее, чем классическая модель повышения градиента.
  • Тип ввода: требуется несколько типов входных данных.
  • Плотная матрица: может принимать плотную матрицу
  • Разреженная матрица: может принимать разреженную матрицу
  • xgb.DMatrix: собственный класс
  • Разреженность: принимает разреженный ввод как для древовидного, так и для линейного бустера и оптимизирован для разреженного ввода.
  • Настройка: поддерживает настраиваемые целевые функции и функции оценки.

Чтобы увидеть больше подобных сообщений, посетите Блог скрытого приложения.