聚类细分

简介: 聚类是一种无监督学习方法,它通过分析数据集中的特征和规律,将数据自动划分为若干个具有相似特征的簇(cluster)。聚类的目的是找出数据之间的内在联系,为数据挖掘和分析提供有用的信息。在聚类的细分方面,可以根据不同的维度对聚类方法进行分类:

聚类是一种无监督学习方法,它通过分析数据集中的特征和规律,将数据自动划分为若干个具有相似特征的簇(cluster)。聚类的目的是找出数据之间的内在联系,为数据挖掘和分析提供有用的信息。在聚类的细分方面,可以根据不同的维度对聚类方法进行分类:

  1. 根据聚类算法:聚类算法有很多种,如 K-means、DBSCAN、Hierarchical Clustering 等。这些算法在聚类过程中所依据的原则和方法不同,从而在细分市场上有各自的特点和适用场景。
  2. 根据聚类形状:聚类形状是指聚类结果中簇的结构和分布。根据聚类形状,可以将聚类方法细分为凸聚类(如 K-means、Hierarchical Clustering)和非凸聚类(如 DBSCAN)。
  3. 根据聚类层次:根据聚类层次,可以将聚类方法细分为低层次聚类(如 K-means、DBSCAN)和高层次聚类(如 Hierarchical Clustering)。低层次聚类仅将数据划分为若干个簇,而高层次聚类会将这些簇进一步划分为更高层次的簇。
  4. 根据聚类约束:根据聚类约束,可以将聚类方法细分为硬聚类(如 K-means)和软聚类(如 DBSCAN、Fuzzy C-means)。硬聚类要求每个数据点必须属于某个簇,而软聚类允许数据点属于多个簇,或不属于任何簇。
    在实际应用中,可以根据具体问题和数据特点,选择合适的聚类细分方法,以获得更好的聚类效果

机器学习是一个广泛的领域,涵盖了许多技术和方法。为了更好地理解和应用机器学习,可以将其细分为以下几个主要方向:

  1. 监督学习(Supervised Learning):监督学习是一种常用的机器学习方法,它通过训练数据集中的标签来学习模型参数。在监督学习中,模型会根据输入特征和相应的输出标签进行训练,从而学会如何根据输入特征预测输出标签。常用的监督学习算法包括线性回归、逻辑回归、支持向量机、决策树、随机森林、神经网络等。
  2. 无监督学习(Unsupervised Learning):无监督学习是一种不依赖标签的机器学习方法。在无监督学习中,模型会根据数据本身的结构和特征进行学习,以发现数据之间的内在关系和规律。常用的无监督学习算法包括聚类、主成分分析(PCA)、降维、异常检测等。
  3. 半监督学习(Semi-supervised Learning):半监督学习是一种结合了监督学习和无监督学习方法的机器学习技术。在半监督学习中,模型既利用有标签的数据进行监督学习,又利用无标签的数据进行无监督学习,以提高模型的性能。常用的半监督学习算法包括半监督决策树、半监督支持向量机等。
  4. 强化学习(Reinforcement Learning):强化学习是一种让模型通过与环境互动来学习最佳行为策略的机器学习方法。在强化学习中,模型会根据当前的环境状态和行动策略,通过反馈机制来调整自己的行为策略,以实现长期的最优化目标。常用的强化学习算法包括 Q-learning、Deep Q-Network(DQN)、Policy Gradient(PG)等。
    要应用机器学习,首先需要根据具体问题和数据特点来选择合适的学习方法(如监督学习、无监督学习等),然后选择合适的算法(如决策树、支持向量机等),并进行模型训练和优化。在实际应用中,还需要进行数据预处理、特征工程、模型评估和选择等步骤,以提高模型的性能和泛化能力。


Ch 04: Concept 03
Logistic regression in higher dimensions
Set up the imports and hyper-parameters

%matplotlib inline
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt

learning_rate = 0.1
training_epochs = 2000
Define positive and negative to classify 2D data points:

x1_label1 = np.random.normal(3, 1, 1000)
x2_label1 = np.random.normal(2, 1, 1000)
x1_label2 = np.random.normal(7, 1, 1000)
x2_label2 = np.random.normal(6, 1, 1000)
x1s = np.append(x1_label1, x1_label2)
x2s = np.append(x2_label1, x2_label2)
ys = np.asarray([0.] * len(x1_label1) + [1.] * len(x1_label2))
Define placeholders, variables, model, and the training op:

X1 = tf.placeholder(tf.float32, shape=(None,), name="x1")
X2 = tf.placeholder(tf.float32, shape=(None,), name="x2")
Y = tf.placeholder(tf.float32, shape=(None,), name="y")
w = tf.Variable([0., 0., 0.], name="w", trainable=True)

y_model = tf.sigmoid(-(w[2] * X2 + w[1] * X1 + w[0]))
cost = tf.reduce_mean(-tf.log(y_model * Y + (1 - y_model) * (1 - Y)))
train_op = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)
Train the model on the data in a session:

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    prev_err = 0
    for epoch in range(training_epochs):
        err, _ = sess.run([cost, train_op], {X1: x1s, X2: x2s, Y: ys})
        if epoch % 100 == 0:
            print(epoch, err)
        if abs(prev_err - err) < 0.0001:
            break
        prev_err = err

    w_val = sess.run(w, {X1: x1s, X2: x2s, Y: ys})
0 0.693147
100 0.375964
200 0.276061
300 0.218569
400 0.181875
500 0.156599
600 0.13817
700 0.124143
Here's one hacky, but simple, way to figure out the decision boundary of the classifier:

x1_boundary, x2_boundary = [], []
with tf.Session() as sess:
    for x1_test in np.linspace(0, 10, 20):
        for x2_test in np.linspace(0, 10, 20):
            z = sess.run(tf.sigmoid(-x2_test*w_val[2] - x1_test*w_val[1] - w_val[0]))
            if abs(z - 0.5) < 0.05:
                x1_boundary.append(x1_test)
                x2_boundary.append(x2_test)
Ok, enough code. Let's see some a pretty plot:

plt.scatter(x1_boundary, x2_boundary, c='b', marker='o', s=20)
plt.scatter(x1_label1, x2_label1, c='r', marker='x', s=20)
plt.scatter(x1_label2, x2_label2, c='g', marker='1', s=20)

plt.show()
目录
相关文章
|
数据采集 机器学习/深度学习 人工智能
大数据分析案例-用RFM模型对客户价值分析(聚类)
大数据分析案例-用RFM模型对客户价值分析(聚类)
1192 0
大数据分析案例-用RFM模型对客户价值分析(聚类)
|
数据采集 算法 搜索推荐
【干货】RFM分析与客户聚类
关注公众号“达摩院首座”,了解开发者最真实生活
1017 0
【干货】RFM分析与客户聚类
|
14天前
|
数据采集 算法 数据可视化
基于K-Means聚类算法对球员数据的聚类分析,可以自主寻找最优聚类数进行聚类
本文介绍了一个基于K-Means聚类算法的NBA球员数据分析项目,该项目通过采集和分析球员的得分、篮板、助攻等统计数据,使用轮廓系数法和拐点法确定最优聚类数,将球员分为不同群组,并提供了一个可视化界面以便直观比较不同群组的球员表现。
基于K-Means聚类算法对球员数据的聚类分析,可以自主寻找最优聚类数进行聚类
|
1月前
|
算法 Python
关联规则挖掘是一种在大型数据集中发现项集之间有趣关系的方法。
关联规则挖掘是一种在大型数据集中发现项集之间有趣关系的方法。
|
3月前
|
机器学习/深度学习 数据采集 数据可视化
R语言SVM、决策树与因子分析对城市空气质量分类与影响因素可视化研究
R语言SVM、决策树与因子分析对城市空气质量分类与影响因素可视化研究
|
3月前
|
机器学习/深度学习 数据采集 算法
R语言、WEKA关联规则、决策树、聚类、回归分析工业企业创新情况影响因素数据
R语言、WEKA关联规则、决策树、聚类、回归分析工业企业创新情况影响因素数据
|
3月前
|
存储 移动开发 算法
SPSS用KMEANS(K均值)、两阶段聚类、RFM模型在P2P网络金融研究借款人、出款人行为数据规律
SPSS用KMEANS(K均值)、两阶段聚类、RFM模型在P2P网络金融研究借款人、出款人行为数据规律
|
3月前
|
数据可视化 算法 数据挖掘
R语言KMEANS均值聚类和层次聚类:亚洲国家地区生活幸福质量异同可视化分析和选择最佳聚类数
R语言KMEANS均值聚类和层次聚类:亚洲国家地区生活幸福质量异同可视化分析和选择最佳聚类数
|
3月前
|
安全 vr&ar
R语言非线性动态回归模型ARIMAX、随机、确定性趋势时间序列预测个人消费和收入、用电量、国际游客数量
R语言非线性动态回归模型ARIMAX、随机、确定性趋势时间序列预测个人消费和收入、用电量、国际游客数量
|
3月前
|
数据可视化 数据挖掘 定位技术
数据分享|R语言生态学种群空间点格局分析:聚类泊松点过程对植物、蚂蚁巢穴分布数据可视化
数据分享|R语言生态学种群空间点格局分析:聚类泊松点过程对植物、蚂蚁巢穴分布数据可视化