5.1 分类与预测

预测问题的两种主要类型:分类&预测

(1)实现过程

  分类:是构造一个分类模型,输入样本的属性值,输出对应的类别,将每个样本映射到预先定义好的类别。

    --分类属于有监督的模型(聚类是无监督的)

  预测:是建立>=2种变量间相互依赖的函数模型,然后进行预测或控制。

  

机器学习深度学习预测多分类预测 分类预测模型_聚类分析

  分类算法的过程有2步:step1:学习步,通过归纳分析训练样本集来建立分类模型,得到分类规则;step2:分类步:先用已知的测试样本集评估分类规则的准确率,如果准确率是可以接受的,则使用该模型对未知类标号的待测样本集进行预测。

  注意:规则本身就是一种算法。

  P.S. 以前的AI模型是“垂直的”,现在的AI倾向于“大模型”。

(2)常用的分类与预测算法

  

机器学习深度学习预测多分类预测 分类预测模型_聚类分析_02

  近几年进步最大的是人工神经网络(工程实践效果很好)。

 (3)回归分析

  从19世纪高斯提出的最小二乘估计算起,有近200年历史。

  

机器学习深度学习预测多分类预测 分类预测模型_聚类分析_03

  在数据挖掘中,记住线性回归、Logistic回归(二分类or多分类问题)

  

机器学习深度学习预测多分类预测 分类预测模型_聚类_04

5.2 聚类分析

  • 与分类不同,聚类分析是在没有给定划分类别的情况下,根据数据相似度进行样本分组的一种方法。
  • 与分类模型需要使用有类标记样本构成的训练数据不同,聚类模型可以建立在无类标记的数据上,是一种非监督的学习算法。
  • 聚类的输入是一组未被标记的样本,聚类根据数据自身的距离或相似度将他们划分为若干组,划分的原则是组内样本最小化而组间(外部)距离最大化

  

机器学习深度学习预测多分类预测 分类预测模型_聚类分析_05

 聚类分析——常用聚类分析算法

常用聚类方法如下表:

机器学习深度学习预测多分类预测 分类预测模型_聚类算法_06

常用聚类算法如下表:

机器学习深度学习预测多分类预测 分类预测模型_聚类_07

 

 

聚类分析——K-Means聚类算法

1、概述

K-Means算法是典型的基于距离的非层次聚类算法,在最小化误差函数的基础上将数据划分为预定的类数K,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。

K-Means聚类算法中,一般需要度量样本之间的距离、样本与簇之间的距离以及簇与簇之间的距离。

2、算法过程

1)从N个样本数据中随机选取K个对象作为初始的聚类中心;

2)分别计算每个样本到各个聚类中心的距离,将对象分配到距离最近的聚类中;

3)所有对象分配完成后,重新计算K个聚类的中心;

4)与前一次计算得到的K个聚类中心比较,如果聚类中心发生变化,转2),否则转5);

5)当质心不发生变化时停止并输出聚类结果。

3、K-Means上机实验

from sklearn.cluster import KMeans
import pandas as pd
import matplotlib.pyplot as plt

# Constants initialization
K = 3 
MAX_ITER = 500
N_JOBS = 4
RANDOM_STATE = 1234

INPUTFILE = '../chap5/consumption_data.xls'
OUTPUTFILE = '../chap5/data_type.xls'
PIC_OUTPUT = '../chap5/pd_chatgpd'

# Read input data
input_data = pd.read_excel(INPUTFILE, index_col='Id') 
# Data Pre-processing - Z-score normalisation
normalized_data = (input_data - input_data.mean()) / input_data.std()

# Clustering model setup
clustering_model = KMeans(n_clusters=K, max_iter=MAX_ITER, random_state=RANDOM_STATE)
# Train the model with normalized data
clustering_model.fit(normalized_data)  

# Print Results
cluster_labels = clustering_model.labels_  
cluster_counts = pd.Series(cluster_labels).value_counts() 
cluster_centers = pd.DataFrame(clustering_model.cluster_centers_) 

results_df = pd.concat([cluster_centers, cluster_counts], axis=1) 
results_df.columns = list(input_data.columns) + ['Cluster Count']
print(results_df)

# Save labeled data to output file
labeled_data = pd.concat([input_data, pd.Series(cluster_labels, index=input_data.index)], axis=1)
labeled_data.columns = list(input_data.columns) + ['Cluster']

labeled_data.to_excel(OUTPUTFILE)

def density_plot(data):  
    # plotting function 
    plt.rcParams['font.sans-serif'] = ['SimHei'] 
    plt.rcParams['axes.unicode_minus'] = False 
#     p = data.plot(kind='kde', linewidth=2, subplots=True, sharex=False)
    p = data.plot(kind='kde', linewidth = 2, subplots = True, sharex = False,title='by number_035')
    [p[i].set_ylabel('Density') for i in range(K)]
    plt.legend()
    return plt

for i in range(K):
    density_plot(input_data[labeled_data['Cluster'] == i]).savefig('%s%s.png' % (PIC_OUTPUT, i))

机器学习深度学习预测多分类预测 分类预测模型_聚类_08

 

并且生成以下3张聚类密度函数图:

机器学习深度学习预测多分类预测 分类预测模型_机器学习深度学习预测多分类预测_09

机器学习深度学习预测多分类预测 分类预测模型_聚类_10

机器学习深度学习预测多分类预测 分类预测模型_聚类分析_11

机器学习深度学习预测多分类预测 分类预测模型_聚类_12

 

 输出的 data_type.xls 文件:

机器学习深度学习预测多分类预测 分类预测模型_聚类算法_13