决策树是一种基于树状结构的机器学习模型,用于分类和回归任务。它通过将数据分为不同的决策路径来进行决策。每个内部节点表示一个属性测试,每个分支代表一个测试结果,而每个叶子节点代表一个类别标签或回归值。
决策树广泛应用于分类和回归任务,包括医学诊断、金融风险评估、产品推荐等。
以下是一个使用Python的示例代码,使用scikit-learn库来创建和训练一个决策树分类器。
```python
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 加载鸢尾花数据集
data = load_iris()
X, y = data.data, data.target
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建决策树分类器
clf = DecisionTreeClassifier()
# 训练模型
clf.fit(X_train, y_train)
# 进行预测
y_pred = clf.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"准确率: {accuracy}")
```
这个示例演示了如何使用决策树进行分类任务,包括数据集的加载、模型训练、预测和准确率计算。
下一个技术是支持向量机(Support Vector Machines)。
支持向量机是一种强大的监督学习算法,用于分类和回归。它的目标是找到一个超平面,以最大化在不同类别之间的间隔,这个超平面被称为"最大边界超平面"。
支持向量机在文本分类、图像识别、生物信息学和金融领域等多个领域都有广泛应用。
以下是一个使用Python的示例代码,使用scikit-learn库来创建和训练一个支持向量机分类器。
```python
from sklearn import datasets
from sklearn import svm
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 加载鸢尾花数据集
data = datasets.load_iris()
X, y = data.data, data.target
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建支持向量机分类器
clf = svm.SVC()
# 训练模型
clf.fit(X_train, y_train)
# 进行预测
y_pred = clf.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"准确率: {accuracy}")
```
这个示例演示了如何使用支持向量机进行分类任务,包括数据集的加载、模型训练、预测和准确率计算。
继续下一个技术,我们将介绍聚类分析(Cluster Analysis)。
聚类分析是一种无监督学习方法,旨在将数据集中的样本分组或聚类到相似的子集中。每个子集内的样本应该相似,而不同子集之间的样本应该有明显的差异。
聚类分析广泛应用于数据挖掘、图像分析、市场分割、生物学和社交网络分析等领域。
以下是一个使用Python的示例代码,使用scikit-learn库来执行K均值聚类。
```python
from sklearn.cluster import KMeans
import numpy as np
# 准备数据集
data = np.array([[1, 2], [5, 8], [1.5, 1.8], [8, 8], [1, 0.6], [9, 11]])
# 创建K均值聚类模型
kmeans = KMeans(n_clusters=2)
# 进行聚类
kmeans.fit(data)
# 输出聚类结果
labels = kmeans.labels_
print("聚类结果:")
for i, label in enumerate(labels):
print(f"样本{i + 1}属于簇{label + 1}")