• 用Sklearn实现聚类算法并用散点图展现效果


    一、背景

      好记性不如烂笔头。记录 一下项目上用到的算法与思路

    二、问题描述

      近期收到一个项目,为A公司做数据整合,并开发出一套人物画像系统与俩个算法模型,其中的一个模型就是做图纸的分类。甲方(A公司)在最终会议前,给了点样例数据,让我们先做出个demo,给甲方的大老板们看一下

    三、数据样例

      甲方给的数据,包括:项目数据,人员数据,图纸数据。以下的内容只用了图纸数据,毕竟只是做图纸的分类,用不到其他的样本数据

      下面是图纸的名称示例:

              

     四、思路

      1.将图纸名称进行分词,去除停用词,添加自定义词典,作为分析的特征

      2.计算每个特征的 Tf-Idf(词频-逆文档频率),作为特征的值

      3.选择聚类算法,开始的时候我是首选Dbscan的,毕竟相比于Kmeans 来说,不需要事先知道要分几类,调整领域和最小点数就可以完成分类,但是理论败给现实,图纸的名称分词的效果实在太接近,而且

      样例数据本来就少,不足以区分开来,导致最后领域和最小点数的值无论怎么调效果都不尽人意,毕竟要给人家做demo,最后只好选了Kmeans。

    五、代码实现

      1.模型代码

     1 # -*- coding:UTF-8 -*-
     2 import jieba
     3 import matplotlib.pyplot as plt
     4 import pandas  as pd
     5 from sklearn.cluster import KMeans
     6 from sklearn.feature_extraction.text import TfidfVectorizer
     7 from sklearn.manifold import TSNE
     8 
     9 data = open(r'xxx[文件路径].csv', encoding="utf8")
    10 data = pd.read_csv(data)
    11 file_userdict = 'userdict.txt'
    12 # 导入自定义词典(不让jieba把他们分开)
    13 jieba.load_userdict(file_userdict)
    14 # 停用词列表
    15 stop_words = ["-", "", "", ".", "pdf", "-"]
    16 # tf-idf 词频-逆文档频率 tokenizer  意为分词器 stop_words 停用词
    17 tf = TfidfVectorizer(tokenizer=jieba.lcut, stop_words=stop_words)
    18 # tf-idf  计算
    19 X = tf.fit_transform(data["图纸名"])
    20 # 将结果转为numpy的数组
    21 res_matrix = X.toarray()
    22 # kmeans,目标定位2类
    23 kmeans = KMeans(n_clusters=2)
    24 kmeans.fit(X)

      2.结果可视化代码

     1 # 预测结果的标签列表
     2 labels = kmeans.labels_
     3 labels = pd.DataFrame(labels, columns=['labels'])
     4 res_matrix = pd.DataFrame(res_matrix)
     5 res_matrix.insert(res_matrix.shape[1], 'labels', labels)
     6 # tsne()将关系数据降为二维数据
     7 tsne = TSNE()
     8 a = tsne.fit_transform(res_matrix)
     9 liris = pd.DataFrame(a, index=res_matrix.index)
    10 d1 = liris[res_matrix['labels'] == 0]
    11 d2 = liris[res_matrix['labels'] == 1]
    12 print(d1)
    13 print(d2)
    14 plt.plot(d1[0], d1[1], 'r.', d2[0], d2[1], 'go')
    15 plt.show()

      3.分类效果展示

         

  • 相关阅读:
    C#连接db2数据库
    SSIS 查找 组件
    Winfrom控件 特效
    Highcharts中文帮助文档
    winform常用控件介绍
    Sql 语句常语法
    SQL经典语句大全
    SharePoint资料
    wcf编程资料
    CrystalDecisions.Windows.Forms文件
  • 原文地址:https://www.cnblogs.com/cmxbky1314/p/13840289.html
Copyright © 2020-2023  润新知