Возможно, одной из лучших книг по 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.