大连外贸网站制作,wan网站建设,wordpress-5.2.2中文下载,工程装修设计公司数据挖掘 目录#xff1a;1. 数据转换2. 属性选择3. 独立于方案的选择4. 探索空间5. 具体方案的选择6. 离散化数值属性无监督离散化基于熵的离散化其他离散化方法 k-means算法原理算法步骤优缺点优点缺点 代码示例#xff08;使用Python和scikit-learn库#xff09;代码解释… 数据挖掘 目录1. 数据转换2. 属性选择3. 独立于方案的选择4. 探索空间5. 具体方案的选择6. 离散化数值属性无监督离散化基于熵的离散化其他离散化方法 k-means算法原理算法步骤优缺点优点缺点 代码示例使用Python和scikit-learn库代码解释确定最优k值的方法基于熵的离散化与基于误差的离散化 7. 离散化属性转化成数值属性8. 投影主成分分析PCA随机投影偏最小二乘回归PLS 9. 从文本到属性向量10. 时间序列11. 抽样12. 数据清洗13. 改进决策树14. 稳健回归15. 检测异常16. 一分类学习17. 多分类转化成二分类18. 嵌套二分法 目录
1. 数据转换
数据转换是对原始数据进行处理使其更适合模型训练的过程。常见的数据转换方法包括归一化、标准化、对数变换等。
归一化将数据缩放到 [0, 1] 区间公式为 x n o r m x − x m i n x m a x − x m i n x_{norm}\frac{x - x_{min}}{x_{max}-x_{min}} xnormxmax−xminx−xmin。标准化将数据转换为均值为 0标准差为 1 的分布公式为 x s t d x − μ σ x_{std}\frac{x - \mu}{\sigma} xstdσx−μ其中 μ \mu μ 是均值 σ \sigma σ 是标准差。
2. 属性选择
属性选择旨在从原始特征中挑选出 最具有代表性和区分度的特征以减少数据维度提高模型性能和训练效率。常见方法有过滤法如方差分析、相关系数、包装法如递归特征消除和嵌入法如决策树中的特征重要性。
from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectKBest, chi2iris load_iris()
X, y iris.data, iris.target
selector SelectKBest(score_funcchi2, k2)
X_new selector.fit_transform(X, y)3. 独立于方案的选择
这指的是属性选择过程不依赖于具体的学习算法而是基于数据本身的特征进行选择。例如使用方差分析选择方差较大的特征因为方差大的特征可能包含更多信息。
4. 探索空间
在属性选择中探索空间是指所有可能的特征子集的集合。搜索算法在这个空间中寻找最优的特征子集。例如穷举搜索会遍历所有可能的子集但当特征数量较多时计算复杂度会非常高。
5. 具体方案的选择
根据不同的应用场景和数据特点选择合适的属性选择方法。例如当数据量较大且特征维度高时过滤法可能更合适当希望结合特定模型进行特征选择时包装法或嵌入法更适用。
6. 离散化数值属性
将连续的数值属性转换为离散的类别属性可降低数据复杂度提高模型对数据的理解能力。常见方法有无监督离散化和基于熵的离散化等。
无监督离散化
等宽离散化将属性值的取值范围划分为若干个等宽的区间。例如将年龄属性划分为 [0, 10)、[10, 20) 等区间。等频离散化将属性值划分为若干个区间使得每个区间内的样本数量大致相等。
基于熵的离散化
基于信息熵来确定最优的划分点使得划分后的子集信息熵最小。通过不断尝试不同的划分点选择信息增益最大的划分。
import numpy as npdef entropy(y):classes, counts np.unique(y, return_countsTrue)probabilities counts / len(y)return -np.sum(probabilities * np.log2(probabilities))def information_gain(X, y, split_point):left_indices X split_pointright_indices X split_pointentropy_before entropy(y)entropy_left entropy(y[left_indices])entropy_right entropy(y[right_indices])weight_left len(y[left_indices]) / len(y)weight_right len(y[right_indices]) / len(y)entropy_after weight_left * entropy_left weight_right * entropy_rightreturn entropy_before - entropy_after# 示例数据
X np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
y np.array([0, 0, 0, 0, 1, 1, 1, 1, 1, 1])# 寻找最佳划分点
best_split None
best_gain 0
for split in X:gain information_gain(X, y, split)if gain best_gain:best_gain gainbest_split splitprint(最佳划分点:, best_split)其他离散化方法
基于聚类的离散化使用聚类算法如 K - Means将属性值聚类每个簇作为一个离散类别。
k-means算法
K-means聚类是一种广泛应用的无监督学习算法用于将数据集划分为k个不同的簇类别使得同一簇内的数据点相似度较高不同簇之间的数据点相似度较低。以下将从原理、算法步骤、优缺点、代码示例等方面详细介绍K-means聚类。
原理
K-means算法的核心思想是通过迭代的方式寻找k个簇的质心中心点并将每个数据点分配到距离最近的质心所在的簇中然后不断更新质心的位置直到质心不再发生明显变化或达到最大迭代次数。
算法步骤 初始化随机选择k个数据点作为初始质心。分配数据点对于数据集中的每个数据点计算它与每个质心的距离通常使用欧氏距离并将其分配到距离最近的质心所在的簇中。更新质心对于每个簇计算该簇内所有数据点的均值将这个均值作为新的质心。重复步骤2和3不断重复分配数据点和更新质心的过程直到质心不再发生明显变化或达到最大迭代次数。 优缺点
优点
简单易实现算法原理简单易于理解和实现。计算效率高时间复杂度相对较低对于大规模数据集具有较好的处理能力。可扩展性强可以应用于各种领域如图像分割、客户细分等。
缺点
需要预先指定k值k值的选择对聚类结果影响较大但在实际应用中很难确定最优的k值。对初始质心敏感不同的初始质心选择可能会导致不同的聚类结果甚至可能陷入局部最优解。对噪声和离群点敏感噪声和离群点可能会影响质心的计算从而影响聚类结果。
代码示例使用Python和scikit-learn库
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs# 生成示例数据集
X, y make_blobs(n_samples300, centers4, cluster_std0.60, random_state0)# 创建K-means模型并进行聚类
kmeans KMeans(n_clusters4, initk-means, max_iter300, n_init10, random_state0)
pred_y kmeans.fit_predict(X)# 绘制聚类结果
plt.scatter(X[:, 0], X[:, 1], cpred_y, s50, cmapviridis)
# 绘制质心
centers kmeans.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], cred, s200, alpha0.5)
plt.title(K-means Clustering)
plt.show()代码解释
1 . 数据生成使用make_blobs函数生成一个包含300个样本、4个簇的二维数据集。 2. 创建K-means模型使用KMeans类创建一个K-means模型指定簇的数量为4使用k-means方法初始化质心最大迭代次数为300重复初始化质心的次数为10。 3. 进行聚类使用fit_predict方法对数据进行聚类并返回每个数据点所属的簇的标签。 4. 绘制聚类结果使用plt.scatter函数绘制数据点根据所属簇的标签进行着色同时绘制质心。 确定最优k值的方法
手肘法Elbow Method计算不同k值下的簇内误差平方和SSE随着k值的增加SSE会逐渐减小。当k值达到某个点后SSE的下降速度会明显变缓这个点对应的k值就是最优的k值。
sse []
for k in range(1, 11):kmeans KMeans(n_clustersk, initk-means, max_iter300, n_init10, random_state0)kmeans.fit(X)sse.append(kmeans.inertia_)plt.plot(range(1, 11), sse)
plt.title(Elbow Method)
plt.xlabel(Number of clusters)
plt.ylabel(SSE)
plt.show()轮廓系数法Silhouette Coefficient计算每个样本的轮廓系数轮廓系数越接近1表示样本聚类效果越好。选择轮廓系数最大的k值作为最优的k值。
from sklearn.metrics import silhouette_scoresilhouette_scores []
for k in range(2, 11):kmeans KMeans(n_clustersk, initk-means, max_iter300, n_init10, random_state0)labels kmeans.fit_predict(X)score silhouette_score(X, labels)silhouette_scores.append(score)best_k np.argmax(silhouette_scores) 2
print(最优的k值:, best_k)基于决策树的离散化使用决策树对属性进行划分每个叶子节点对应一个离散类别。
基于熵的离散化与基于误差的离散化
基于熵的离散化侧重于信息的纯度通过最大化信息增益来确定划分点。基于误差的离散化则关注划分后的预测误差例如最小化均方误差来确定划分点。
7. 离散化属性转化成数值属性
可以使用编码的方式将离散属性转换为数值属性常见的编码方法有
独热编码One - Hot Encoding为每个离散值创建一个二进制向量只有对应的值为 1其余为 0。
from sklearn.preprocessing import OneHotEncoder
import numpy as npX np.array([[red], [green], [blue]])
encoder OneHotEncoder()
X_encoded encoder.fit_transform(X).toarray()
print(X_encoded)标签编码Label Encoding为每个离散值分配一个唯一的整数。
8. 投影
投影是将高维数据映射到低维空间的过程目的是减少数据维度同时保留数据的主要特征。常见的投影方法有主成分分析、随机投影和偏最小二乘回归等。
主成分分析PCA
通过线性变换将原始数据转换为一组各维度线性无关的主成分选取方差最大的前 k 个主成分作为新的特征。
from sklearn.decomposition import PCA
import numpy as npX np.array([[1, 2], [3, 4], [5, 6]])
pca PCA(n_components1)
X_pca pca.fit_transform(X)
print(X_pca)随机投影
随机生成一个投影矩阵将高维数据投影到低维空间。该方法计算速度快适用于大规模数据。
偏最小二乘回归PLS
同时考虑自变量和因变量的信息寻找一组能够最大程度解释自变量和因变量变异的成分进行投影。
9. 从文本到属性向量
将文本数据转换为数值向量以便机器学习模型处理。常见方法有词袋模型、TF - IDF 模型和词嵌入如 Word2Vec、GloVe。
from sklearn.feature_extraction.text import TfidfVectorizercorpus [This is the first document., This document is the second document.]
vectorizer TfidfVectorizer()
X vectorizer.fit_transform(corpus)
print(X.toarray())10. 时间序列
时间序列是按时间顺序排列的观测值序列。处理时间序列数据通常涉及到平滑、预测等任务。常见的时间序列模型有 ARIMA、LSTM 等。
11. 抽样
从原始数据集中选取一部分样本作为训练集常见的抽样方法有随机抽样、分层抽样和欠抽样、过抽样等。欠抽样用于处理类别不平衡问题减少多数类样本过抽样则增加少数类样本。
12. 数据清洗
处理数据中的缺失值、异常值和重复值等问题。例如使用均值、中位数或众数填充缺失值通过统计方法如 Z - score检测和处理异常值。
import pandas as pd
import numpy as npdata pd.DataFrame({A: [1, 2, np.nan, 4], B: [5, np.nan, 7, 8]})
data_filled data.fillna(data.mean())
print(data_filled)13. 改进决策树
可以通过剪枝预剪枝和后剪枝、特征选择、集成学习如随机森林等方法改进决策树的性能避免过拟合。
14. 稳健回归
对异常值具有较强鲁棒性的回归方法如 RANSAC随机抽样一致性、Huber 回归等。
15. 检测异常
通过统计方法如 Z - score、箱线图、基于模型的方法如孤立森林、One - Class SVM等检测数据中的异常值。
from sklearn.ensemble import IsolationForest
import numpy as npX np.array([[1], [2], [3], [4], [5], [100]])
clf IsolationForest(contamination0.1)
clf.fit(X)
predictions clf.predict(X)
print(predictions)16. 一分类学习
用于识别属于某一类别的样本而不需要明确的负类样本。常见的一分类算法有 One - Class SVM、单类高斯模型等。
17. 多分类转化成二分类
将多分类问题转化为多个二分类问题进行求解常见方法有一对一One - vs - One和一对其余One - vs - Rest。
18. 嵌套二分法
将多分类问题通过一系列的二分类问题逐步分解每次将类别集合划分为两个子集直到每个子集只包含一个类别。