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

В сегодняшней статье речь пойдет об очень популярном алгоритме обучения без учителя — кластеризации K-средних.

Алгоритм K-средних используется в разные дни в разных группах или классах.

Кластеризация K-средних — это один из методов кластерного анализа, целью которого является разделение n наблюдений на k кластеров, в которых каждое наблюдение принадлежит кластеру с ближайшим средним значением.

Алгоритм K-средних можно применять к числовым и непрерывным данным минимальной размерности.

Мы используем набор данных USArrests.csv для понимания алгоритма Kmeans.

1. Нам нужно импортировать важные библиотеки:

импортировать pandas как pd
из sklearn.cluster импортировать KMeans
импортировать matplotlib.pyplot как plt
из sklearn.preprocessing импортировать масштаб
из numpy импортировать random, float, array
импортировать numpy как np
импортировать seaborn как sns

2. Теперь читаем CSV-файл:

df = pd.read_csv("USArrests.csv")

3. Просмотр:

дф.голова()

4. Понимание представления набора данных под другим углом с помощью графика.

f, ax = plt.subplots(figsize=(16, 10))

stats = df.sort_values("Total", ascending=False)

sns.set_color_codes("pastel")

sns.barplot(x="Total", y="State", data=stats,
            label="Total", color="g")

sns.barplot(x="Assault", y="State", data=stats,
            label="Assault", color="b")

sns.barplot(x="Rape", y="State", data=stats,
            label="Rape", color="y")

sns.barplot(x="Murder", y="State", data=stats,
            label="Murder", color="r")

# Add a legend and informative axis label
ax.legend(ncol=2, loc="lower right", frameon=True)
ax.set(xlim=(0, 400), ylabel="State",
       xlabel="Nr of arrests for each crime");

5. Выяснение оптимального количества кластеров

Начнем с использования всех 4 переменных, за исключением переменной Total.

X = df[['Murder', 'Assault', 'Rape', 'UrbanPop']]

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform( X )
cluster_range = range( 1, 20 )
cluster_errors = []

for num_clusters in cluster_range:
  clusters = KMeans( num_clusters )
  clusters.fit( X_scaled )
  cluster_errors.append( clusters.inertia_ )

clusters_df = pd.DataFrame( { "num_clusters":cluster_range, "cluster_errors": cluster_errors } )

clusters_df[0:10]

6. Анализ данных — убийство и нападение

sns.lmplot( 'Murder','Assault',  data=df,
        hue = 'Crime_clusters',
        fit_reg=False, size = 6 );

7. Теперь изучаем значение входных точек с помощью графика:

Выходные данные показывают различные точки внутри графика, обозначенные знаком «x» на графике, и считается, что область, в которой они находятся рядом с этими точками, относится к ним.

# And same thing using Matplotlib to show also the cluster centers as x:s.
data=X
clusters = KMeans(4);
clusters.fit(X);
plt.figure(figsize=(7, 7))
clusters.labels_;
centers = np.array(clusters.cluster_centers_)
plt.scatter(centers[:,0], centers[:,1], marker="x", color='r')
plt.scatter(data.iloc[:,0],data.iloc[:,1], c=[plt.cm.spectral(float(i) /5) for i in clusters.labels_]); 
#print(data)
#print(centers)

8. Анализ взаимосвязи:

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

variables_correlation = df[['Murder', 'Assault', 'Rape', 'UrbanPop']]
variables_correlation.corr()

9. Отсортируйте данные по четырем кластерам.

stats = df.sort_values("Total", ascending=True)
df_total= pd.DataFrame(stats)

df_total.head(30)

10. Заключение —

Из приведенного выше эксперимента с набором данных о преступности мы смогли предсказать уровень преступности в разных штатах США, и в результате мы можем заявить следующее.

0 Значение уровня преступности — Миссури, Теннесси, Техас, Джорджия, Делвер…

1 значение уровня преступности — Мэн, Южная Дакота, Гавайи, Миннесота…

2 Значение уровня преступности — Алабама, Делавэр….

3 Значение уровня преступности — Небраска, Монтана….

Итак, можно сделать вывод, что в Миссиури меньше преступности, чем в Алабаме….

Спасибо за прочтение статьи……………………….