# Python 无监督学习实用指南：1~5（1）

## 一、无监督学习入门

• 为什么我们需要机器学习？
• 描述性，诊断性，预测性和规范性分析
• 机器学习的类型
• 我们为什么要使用 Python？

## 技术要求

• SciPy 0.19+
• NumPy 1.10+
• Scikit-Learn 0.19+
• Pandas 0.22+
• Matplotlib 2.0+
• Seaborn 0.9+

## 监督学习算法

• 输出预测类的参数化函数
• 参数化的概率分布，为每个输入样本输出分类概率

• 用一小批样本x[i] ∈ X计算梯度∇L（相对于参数向量）
• 更新权重，并沿梯度-∇L的相反方向移动参数（请记住，梯度始终指向最大值）

## 监督的你好世界

import numpy as np
import pandas as pd
T = np.expand_dims(np.linspace(0.0, 10.0, num=100), axis=1)
X = (T * np.random.uniform(1.0, 1.5, size=(100, 1))) + np.random.normal(0.0, 3.5, size=(100, 1))
df = pd.DataFrame(np.concatenate([T, X], axis=1), columns=['t', 'x'])

from sklearn.linear_model import LinearRegression
lr = LinearRegression()
lr.fit(T, X)
print('x(t) = {0:.3f}t + {1:.3f}'.format(lr.coef_[0][0], lr.intercept_[0]))

x(t) = 1.169t + 0.628

## 无监督的你好世界

import numpy as np
obs = np.array([7, 11, 9, 9, 8, 11, 9, 9, 8, 7, 11, 8, 9, 9, 11, 7, 10, 9, 10, 9, 7, 8, 9, 10, 13])
mu = np.mean(obs)
print('mu = {}'.format(mu))

mu = 9.12

from scipy.stats import poisson
print('P(more than 8 trains) = {}'.format(poisson.sf(8, mu)))
print('P(more than 9 trains) = {}'.format(poisson.sf(9, mu)))
print('P(more than 10 trains) = {}'.format(poisson.sf(10, mu)))
print('P(more than 11 trains) = {}'.format(poisson.sf(11, mu)))

P(more than 8 trains) = 0.5600494497386543
P(more than 9 trains) = 0.42839824517059516
P(more than 10 trains) = 0.30833234660452563
P(more than 11 trains) = 0.20878680161156604

new_obs = np.array([13, 14, 11, 10, 11, 13, 13, 9, 11, 14, 12, 11, 12, 14, 8, 13, 10, 14, 12, 13, 10, 9, 14, 13, 11, 14, 13, 14])
obs = np.concatenate([obs, new_obs])
mu = np.mean(obs)
print('mu = {}'.format(mu))

μ的新值如下：

mu = 10.641509433962264

print('P(more than 8 trains) = {}'.format(poisson.sf(8, mu)))
print('P(more than 9 trains) = {}'.format(poisson.sf(9, mu)))
print('P(more than 10 trains) = {}'.format(poisson.sf(10, mu)))
print('P(more than 11 trains) = {}'.format(poisson.sf(11, mu)))

P(more than 8 trains) = 0.7346243910180037
P(more than 9 trains) = 0.6193541369812121
P(more than 10 trains) = 0.49668918740243756
P(more than 11 trains) = 0.3780218948425254

syn = poisson.rvs(mu, size=2000)

• 标签传播
• 半监督支持向量机

## 问题

1. 当不适用监督学习时，无监督学习是最常见的选择。 这是正确的吗？
2. 您公司的首席执行官要求您找出确定负面销售趋势的因素。 您需要执行哪种分析？
3. 给定独立样本的数据集和候选数据生成过程（例如，高斯分布），可通过对所有样本的概率求和来获得可能性。 它是正确的？
4. 在哪种假设下，可能性可以作为单个概率的乘积来计算？
5. 假设我们有一个包含一些未知数字特征（例如年龄，分数等）的学生数据集。 您想将男性和女性学生分开，因此决定将数据集分为两组。 不幸的是，这两个集群大约都有 50% 的男生和 50% 的女生。 您如何解释这个结果？
6. 考虑前面的示例，但重复该实验并将其分为五个组。 您希望在其中每个中找到什么？ （列出一些合理的可能性。）
7. 您已经将在线商店的客户聚集在一起。 给定一个新样本，您可以做出什么样的预测？

## 进一步阅读

• Machine Learning Algorithms Second Edition, Bonaccorso G., Packt Publishing, 2018
• Hands-On Reinforcement Learning with Python, Ravichandiran S., Packt Publishing, 2018
• Hands-On Data Analysis with NumPy and pandas, Miller C., Packt Publishing, 2018

## 二、聚类基础

• 聚类和距离函数简介
• K 均值和 KMeans++
• 评估指标
• K 最近邻KNN
• 向量量化VQ

## 技术要求

• SciPy 0.19+
• NumPy 1.10+
• Scikit-Learn 0.20+
• Pandas 0.22+
• Matplotlib 2.0+
• Seaborn 0.9+

## 聚类介绍

• 硬聚类：在这种情况下，每个样本x[p] ∈ X被分配给一个聚类K[i]，对于i ≠ jK[i] ∩ K[j] = ∅。 我们将要讨论的大多数算法都属于这一类。 在这种情况下，问题可以表示为将聚类分配给每个输入样本的参数化函数：

• 软聚类：通常将其细分为概率模糊聚类，这种方法确定了每个样本的概率p(x)属于预定群集的x[p] ∈ X。 因此，如果存在K个群集，我们就有一个概率向量p(x) = [p[1](x), p[2](x), ..., p[i](x)]，其中p[i](x)表示分配给群集的概率i。 在这种情况下，聚类不是不相交的，通常，样本将属于隶属度等于概率的所有群集（此概念是模糊聚类所特有的）。

## 距离函数

import numpy as np
from scipy.spatial.distance import cdist
distances = np.zeros(shape=(8, 100))
for i in range(1, distances.shape[0] + 1):
for j in range(1, distances.shape[1] + 1):
distances[i - 1, j - 1] = np.log(cdist(np.zeros(shape=(1, j)), np.ones(shape=(1, j)),
metric='minkowski', p=i)[0][0])

Python 无监督学习实用指南：1~5（2）https://developer.aliyun.com/article/1426881

|
3月前
|

Python 无监督学习实用指南：6~10（4）
Python 无监督学习实用指南：6~10（4）
37 0
|
3月前
|

Python 无监督学习实用指南：6~10（1）
Python 无监督学习实用指南：6~10（1）
33 0
|
3月前
|

Python 无监督学习实用指南：1~5（5）
Python 无监督学习实用指南：1~5（5）
37 0
|
3月前
|

Python 无监督学习实用指南：1~5（3）
Python 无监督学习实用指南：1~5（3）
32 0
|
3月前
|

Python 无监督学习实用指南：1~5（2）
Python 无监督学习实用指南：1~5（2）
49 0
|
3月前
|

Python 无监督学习实用指南：6~10（5）
Python 无监督学习实用指南：6~10（5）
30 0
|
3月前
|

Python 无监督学习实用指南：6~10（3）
Python 无监督学习实用指南：6~10（3）
70 0
|
3月前
|

Python 无监督学习实用指南：6~10（2）
Python 无监督学习实用指南：6~10（2）
52 0
|
3月前
|

Python 无监督学习实用指南：1~5（4）
Python 无监督学习实用指南：1~5（4）
37 0
|

【机器学习算法-python实现】K-means无监督学习实现分类
1210 0