Возможно, одной из лучших книг по python и науке о данных является Hands-On Machine Learning with Scikit-Learn, Keras & TensorFlow Герона. На мой взгляд, эта книга особенно хороша для начинающих. Для специалистов-самоучек эта книга просто необходима. Есть несколько управляемых проектов с включенным кодом, который поможет начинающим специалистам по данным на этом пути.

Знание Scikit-Learn, Keras и TensorFlow также является обязательным для специалистов по данным, поскольку работодатели заинтересованы в этих библиотеках и их модулях. Краткое изложение :

Scikit-Learn — это библиотека машинного обучения для Python с различными алгоритмами статистического анализа, обучения с учителем и без учителя.

Keras — это библиотека для искусственных нейронных сетей.

TensorFlow — еще одна библиотека для машинного обучения, но ориентированная на обучение глубоких нейронных сетей.

Эта книга знакомит читателя с кодом, а также дает отличное объяснение того, что делает код и как он работает. Также объясняется, как различные алгоритмы и нейронные сети работают с диаграммами и визуальными элементами. На мой взгляд, это отличный баланс между теорией и практикой.

Глава 1 Простая линейная регрессия

В первой главе рассматривается линейная модель scikit-learn и очень простая задача линейной регрессии. Набор данных представляет собой Индекс лучшей жизни ОЭСР 2015 года. Ниже приведен код линейной модели между ВВП на душу населения и удовлетворенностью жизнью.

In [1]:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import sklearn.linear_model

In [2]:

oecd_bli = pd.read_csv("oecd_bli_2015.csv",thousands = ',')
gdp_per_capita = pd.read_csv('gdp_per_capita.csv',thousands=',',delimiter='\t',encoding='latin1',na_values = 'n/a')

In [7]:

def prepare_country_stats(oecd_bli,gdp_per_capita):
    oecd_bli = oecd_bli[oecd_bli['INEQUALITY']=='TOT']
    oecd_bli = oecd_bli.pivot(index='Country',columns='Indicator',values='Value')
    gdp_per_capita.rename(columns={'2015':'GDP per capita'},inplace=True)
    gdp_per_capita.set_index('Country',inplace=True)
    full_country_stats = pd.merge(left=oecd_bli,right=gdp_per_capita,left_index=True,right_index=True)
    full_country_stats.sort_values(by='GDP per capita',inplace=True)
    remove_indices = [0,1,6,8,33,34,35]
    keep_indices = list(set(range(36))-set(remove_indices))
    return full_country_stats[['GDP per capita', 'Life satisfaction']].iloc[keep_indices]

In [8]:

country_stats = prepare_country_stats(oecd_bli,gdp_per_capita)

In [10]:

X = np.c_[country_stats['GDP per capita']]
y = np.c_[country_stats['Life satisfaction']]

In [11]:

country_stats.plot(kind = 'scatter',x='GDP per capita', y='Life satisfaction')
plt.show()

In [12]:

model = sklearn.linear_model.LinearRegression()

In [13]:

model.fit(X,y)

Исход[13]:

LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)

In [14]:

X_new = [[22587]] # GDP per capita for Cyprus

In [15]:

print(model.predict(X_new))
[[5.96242338]]

Данных по Кипру нет, но, исходя из линейной модели, удовлетворенность жизнью у него была бы 5,96. Доступна Словения, которая составляет 5,7 с ВВП на душу населения в размере 20 732 долларов США. Это очень простая (x,y) модель только с двумя переменными. Этот набор данных имеет много других переменных и функций, которые могли бы лучше соответствовать другим моделям scikit-learn.