
使用这些基本 REST API 最佳实践构建出色的 API
决策树通过一系列的规则(if-else)来对数据进行分类,每个节点代表一个特征,每个分支代表一个规则,最终到达叶节点得到分类结果。
信息增益(对于特征A):
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
# 加载数据
data = load_iris()
X = data.data
y = data.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 创建决策树分类器
clf = DecisionTreeClassifier()
# 训练模型
clf.fit(X_train, y_train)
# 预测测试集
y_pred = clf.predict(X_test)
# 评估模型
print("Accuracy:", clf.score(X_test, y_test))
以上代码展示了如何使用Python的scikit-learn
库来训练和使用决策树分类器。
SVM通过找到一个最优的超平面来将数据集划分为不同的类别,使得两类数据点之间的间隔最大。
SVM的核心思想是找到一个最优的超平面,使得这个超平面可以将不同类别的数据点尽可能地分开,并且尽可能地将两类数据点之间的间隔最大化。
对于线性可分的数据集,SVM的目标函数为:
约束条件为:
其中,为第个数据点,为对应的标签,表示内积。
通过求解上述二次规划问题,可以得到最优解和。
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
# 加载数据集
iris = datasets.load_iris()
X = iris.data
y = iris.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 数据标准化
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# 创建SVM模型
model = SVC(kernel='linear', C=1.0)
# 训练模型
model.fit(X_train, y_train)
# 评估模型
score = model.score(X_test, y_test)
print(f'测试集准确率:{score:.2f}')
K近邻算法是一种通过比较数据集中最近的K个邻居的标签来预测新数据点标签的简单监督学习方法。
K近邻算法的核心思想是:相似性高的数据点通常具有相似的标签。在训练过程中,算法不进行数据的存储,而是直接在训练数据集上进行预测。
距离计算公式:
其中, 和 分别是第 个训练数据点和待预测数据点的特征向量, 和 是对应的标签。
from collections import Counter
import numpy as np
def knn_predict(train_data, train_labels, test_data, k):
distances = []
for i in range(len(train_data)):
dist = np.linalg.norm(test_data - train_data[i])
distances.append((train_data[i], train_labels[i], dist))
distances.sort(key=lambda x: x[2])
k_nearest = distances[:k]
label_counts = Counter([label for _, label, _ in k_nearest])
return label_counts.most_common(1)[0][0]
# 示例数据
train_data = np.array([[1, 2], [2, 3], [3, 4], [5, 6], [7, 8]])
train_labels = [0, 0, 0, 1, 1]
test_data = np.array([6, 6])
# 预测
k = 3
prediction = knn_predict(train_data, train_labels, test_data, k)
print("预测结果:", prediction)
朴素贝叶斯分类算法基于贝叶斯定理,通过计算每个类别条件下特征的概率,选择概率最大的类别作为预测结果。
其中:
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score
# 加载数据
iris = load_iris()
X = iris.data
y = iris.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 创建朴素贝叶斯模型
gnb = GaussianNB()
# 训练模型
gnb.fit(X_train, y_train)
# 预测结果
y_pred = gnb.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy}')
以上代码展示了如何使用Python中的sklearn
库实现朴素贝叶斯分类算法,包括数据加载、模型训练和预测。
逻辑回归是一种用于二分类问题的统计方法,通过预测一个样本属于某个类别的概率来分类。
import numpy as np
from sklearn.linear_model import LogisticRegression
# 生成示例数据
X = np.array([[0, 0], [1, 0], [0, 1], [1, 1]])
y = np.array([0, 0, 0, 1])
# 创建逻辑回归模型
model = LogisticRegression()
# 训练模型
model.fit(X, y)
# 预测新样本
new_data = np.array([[1, 0]])
prediction = model.predict(new_data)
print("预测结果:", prediction)
以上是逻辑回归算法的详细介绍和Python示例代码。希望对您有所帮助!
神经网络是一种模仿人脑工作原理的计算模型,通过调整连接权重来学习和识别数据中的特征,从而实现分类。
神经网络由输入层、隐藏层和输出层组成。每个神经元接收前一层神经元的输出,通过激活函数进行处理,再传递给下一层。最终的输出层输出类别预测。
优点:
缺点:
import numpy as np
# 激活函数
def sigmoid(x):
return 1 / (1 + np.exp(-x))
# 损失函数
def mse_loss(y_true, y_pred):
return (y_true - y_pred) ** 2 / 2
# 梯度下降
def gradient_descent(X, y, theta, alpha, iterations):
m = X.shape[0]
for _ in range(iterations):
y_pred = sigmoid(X @ theta)
gradient = X.T @ (y_pred - y) / m
theta -= alpha * gradient
return theta
# 示例数据
X = np.array([[1, 2], [2, 3], [3, 4], [4, 5]])
y = np.array([0, 0, 1, 1])
theta = np.array([0.5, 0.5])
# 训练模型
alpha = 0.01
iterations = 10000
theta = gradient_descent(X, y, theta, alpha, iterations)
# 预测
y_pred = sigmoid(X @ theta)
print(y_pred)
以上是一个简单的神经网络分类算法的Python示例代码,其中包含了激活函数、损失函数和梯度下降的实现。
随机森林是一种基于决策树的集成学习方法,它通过构建多棵决策树并综合它们的预测结果来进行分类。
随机森林算法的工作原理如下:
随机森林没有特定的核心公式,而是基于决策树算法的组合。
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 创建随机森林分类器
rf = RandomForestClassifier(n_estimators=100, random_state=42)
# 训练模型
rf.fit(X_train, y_train)
# 预测结果
y_pred = rf.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy:.2f}")
以上代码展示了如何使用随机森林算法进行分类任务。
梯度提升机(GBM)是一种通过迭代最小化损失函数来构建预测模型的方法,它通过将多个弱学习器(如决策树)组合成强学习器,以提升预测准确性。
损失函数通常使用均方误差(MSE):
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# 加载数据
iris = load_iris()
X, y = iris.data, iris.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建GBM分类器
gbm = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1, max_depth=3)
# 训练模型
gbm.fit(X_train, y_train)
# 测试模型
score = gbm.score(X_test, y_test)
print(f"Test score: {score}")