美文网首页
机器学习--K-means&DBSCAN

机器学习--K-means&DBSCAN

作者: YCzhao | 来源:发表于2018-11-09 11:32 被阅读0次

一. K-means实现

  1. 读取数据
import pandas as pd
beer = pd.read_csv('data.txt', sep=' ')
beer
  1. 取出其中四列
X = beer[["calories","sodium","alcohol","cost"]]
X
  1. 使用K-means对X进行分类
from sklearn.cluster import KMeans
# 分别取3个和2个质心的情况
km = KMeans(n_clusters=3).fit(X)
km2 = KMeans(n_clusters=2).fit(X)
km.labels_ # 每个样本点对应的分类
  1. 根据分类进行排序
beer['cluster'] = km.labels_
beer['cluster2'] = km2.labels_
beer.sort_values('cluster')
  1. 计算cluster=3时的平均值
beer.groupby('cluster').mean()
  1. 计算cluster=2时的平均值
beer.groupby('cluster2').mean()
  1. 利用reset_index重置索引
centers = beer.groupby('cluster').mean().reset_index()
centers
  1. 分类效果的可视化
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

plt.rcParams['font.size'] = 14
colors = np.array(['red', 'green', 'blue', 'yellow'])
# 数据分布三点图
plt.scatter(beer['calories'], beer['alcohol'], c=colors[beer['cluster']]) 
# 关于 calories alcohol 的三个类的平均值分布
plt.scatter(centers.calories, centers.alcohol, linewidth=3, marker='+', s=300, c='black') 

plt.xlabel('Calories')
plt.ylabel('Alcohol')
  1. 计算不同cluster每个分类不同特征的centers值
from pandas.tools.plotting import scatter_matrix
%matplotlib inline

cluster_centers = km.cluster_centers_
cluster_centers_2 = km2.cluster_centers_

print (cluster_centers)
print (cluster_centers_2)
  1. 基于步骤9,cluster=3 进行可视化
scatter_matrix(beer[["calories","sodium","alcohol","cost"]],s=100, alpha=1, c=colors[beer["cluster"]], figsize=(10,10))
plt.suptitle("With 3 centroids initialized")
  1. 基于步骤9,cluster=2 进行可视化
scatter_matrix(beer[["calories","sodium","alcohol","cost"]],s=100, alpha=1, c=colors[beer["cluster2"]], figsize=(10,10))
plt.suptitle("With 2 centroids initialized")

二. 数据标准化

  1. 数据标准化
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
X_scaled
  1. 使用标准化后的数据生成新的cluster=3,且应用于原始数据进行分类
km = KMeans(n_clusters=3).fit(X_scaled)
beer["scaled_cluster"] = km.labels_
beer.sort_values("scaled_cluster")
  1. 求mean值
beer.groupby("scaled_cluster").mean()
  1. 可视化
pd.scatter_matrix(X, c=colors[beer.scaled_cluster], alpha=1, figsize=(10,10), s=100)

三:聚类评估:轮廓系数(Silhouette Coefficient )

  1. 计算当前分类下的轮廓系数
from sklearn import metrics
score_scaled = metrics.silhouette_score(X,beer.scaled_cluster) #数据标准化的轮廓系数
score = metrics.silhouette_score(X,beer.cluster) #原始数据的轮廓系数
print(score_scaled, score)
  1. 计算不同cluster值下的轮廓系数
scores = []
for k in range(2,20):
    labels = KMeans(n_clusters=k).fit(X).labels_
    score = metrics.silhouette_score(X, labels)
    scores.append(score)

scores
  1. 基于2,进行可视化,观察走向(cluster=2最合适)
plt.plot(list(range(2,20)), scores)
plt.xlabel("Number of Clusters Initialized")
plt.ylabel("Sihouette Score")

四.DBSCAN Clustering

  1. 数据初始化,使用DBSCAN进行分类
from sklearn.cluster import DBSCAN
db = DBSCAN(eps=10, min_samples=2).fit(X) #eps 半径 min_samples 最小密度
labels = db.labels_
beer['cluster_db'] = labels
beer.sort_values('cluster_db')
  1. 求每个特征的均值
beer.groupby('cluster_db').mean()
  1. 可视化
pd.scatter_matrix(X, c=colors[beer.cluster_db], figsize=(10,10), s=100)
  1. 数据标准化后进行DBSCAN分类
db = DBSCAN(eps=10, min_samples=2).fit(X) #eps 半径 min_samples 最小密度
labels = db.labels_
beer['cluster_db'] = labels
beer.sort_values('cluster_db')
  1. 通过改变eps和min_samples数值,计算轮廓系数并可视化
scores=[]
counter=0
for eps in range(10,20):
    for min_samples in range(2,10):
        labels=DBSCAN(eps,min_samples).fit(X).labels_
        score=metrics.silhouette_score(X,labels)
        scores.append(score)
        counter+=1
# scores
counter
plt.plot((range(0,80)), scores)
plt.xlabel("value of eps Initialized")
plt.ylabel("Sihouette Score")

相关文章

  • 机器学习--K-means&DBSCAN

    一. K-means实现 读取数据 取出其中四列 使用K-means对X进行分类 根据分类进行排序 计算clust...

  • 机器学习概述与算法介绍(二)

    机器学习概述 机器学习基本概念 机器学习基本流程与工作环节 机器学习中的评估指标 机器学习算法一览 3. 机器学习...

  • 「零基础」python机器学习入门(一)| 什么是机器学习?

    了解什么是机器学习?为什么需要机器学习? 一、什么是机器学习? 字面上,「机器学习」可以拆分为两个词:机器、学习。...

  • Python3 机器学习简明教程

    1 机器学习介绍    1.1 什么是机器学习    1.2 机器学习的应用    1.3 机器学习基本流程与工作...

  • 什么是深度学习

    1.1 人工智能、机器学习与深度学习 人工智能 > 机器学习 > 深度学习 即,人工智能包括机器学习,机器学习包括...

  • 机器学习

    1、人工智能->机器学习->深度学习 注:->包含关系 2、机器学习领域: 模式识别=机器学习 数据挖掘=机器学习...

  • 机器学习,机器“学习”

    如果你渴望奇迹,那么机器学习对你来说是一场精神盛宴。我诚挚的邀请你一同前往。 我为什么总是要读这些人工智能、机器学...

  • 2019-02-17

    机器学习系列 机器学习100天 机器学习第1天:数据预处理 机器学习第2天:简单线性回归模型 机器学习第3天:多元...

  • 机器学习实战之准备(一)

    目录 机器学习简单概述 机器学习的主要任务 学习机器学习的原因 python语言优势 1.1 何谓机器学习 简单的...

  • 机器学习笔记

    学习Andrew Ng的机器学习教程,做个笔记。 初识机器学习 人工智能的核心是机器学习,机器学习的本质是算法 机...

网友评论

      本文标题:机器学习--K-means&DBSCAN

      本文链接:https://www.haomeiwen.com/subject/uidpxqtx.html