摘要:在 Python 中实现监督学习主要依赖scikit-learn库。以下是一个完整的示例流程,涵盖数据准备、模型训练、评估和预测:
在 Python 中实现监督学习主要依赖 scikit-learn 库。以下是一个完整的示例流程,涵盖数据准备、模型训练、评估和预测:
基本步骤
导入必要库加载/准备数据集划分训练集和测试集选择并训练模型模型评估进行预测示例代码(线性回归 + 决策树分类)
python
# 1. 导入必要库
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import mean_squared_error, accuracy_score
from sklearn.datasets import load_iris, load_diabetes
# 示例1:回归问题(糖尿病数据集)
#
# 2. 加载回归数据集
diabetes = load_diabetes
X_reg = diabetes.data
y_reg = diabetes.target
# 3. 划分数据集
X_train_reg, X_test_reg, y_train_reg, y_test_reg = train_test_split(
X_reg, y_reg, test_size=0.2, random_state=42
)
# 4. 创建并训练线性回归模型
reg_model = LinearRegression
reg_model.fit(X_train_reg, y_train_reg)
# 5. 评估回归模型
y_pred_reg = reg_model.predict(X_test_reg)
mse = mean_squared_error(y_test_reg, y_pred_reg)
print(f"回归模型评估:\n均方误差(MSE) = {mse:.2f}\n决定系数(R²) = {reg_model.score(X_test_reg, y_test_reg):.2f}\n")
# 示例2:分类问题(鸢尾花数据集)
#
# 2. 加载分类数据集
iris = load_iris
X_clf = iris.data
y_clf = iris.target
# 3. 划分数据集
X_train_clf, X_test_clf, y_train_clf, y_test_clf = train_test_split(
X_clf, y_clf, test_size=0.3, random_state=42
)
# 4. 创建并训练决策树分类器
clf_model = DecisionTreeClassifier(max_depth=3)
clf_model.fit(X_train_clf, y_train_clf)
# 5. 评估分类模型
y_pred_clf = clf_model.predict(X_test_clf)
acc = accuracy_score(y_test_clf, y_pred_clf)
print(f"分类模型评估:\n准确率 = {acc:.2%}\n特征重要性 = {clf_model.feature_importances_}")
# 6. 新样本预测(分类示例)
new_sample = [[5.1, 3.5, 1.4, 0.2]] # 单个样本
predicted_class = clf_model.predict(new_sample)
print(f"\n预测新样本类别: {iris.target_names[predicted_class][0]}")
输出示例
回归模型评估:
均方误差(MSE) = 2900.19
决定系数(R²) = 0.45
分类模型评估:
准确率 = 97.78%
特征重要性 = [0. 0. 0.42436476 0.57563524]
预测新样本类别: setosa
关键组件说明
常用算法:Ø 回归:LinearRegression, RandomForestRegressor, SVR
Ø 分类:LogisticRegression, DecisionTreeClassifier, SVC, KNeighborsClassifier
评估指标:Ø 回归:均方误差(MSE)、R²分数
Ø 分类:准确率(Accuracy)、精确率(Precision)、召回率(Recall)
数据预处理(可选):python
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.impute import SimpleImputer
from sklearn.pipeline import make_pipeline
# 创建包含预处理的流水线
model = make_pipeline(
StandardScaler, # 标准化
SimpleImputer(strategy='mean'), # 缺失值填充
LogisticRegression # 分类器
)
超参数调优:python
from sklearn.model_selection import GridSearchCV
param_grid = {'max_depth': [3, 5, 7], 'min_samples_split': [2, 5, 10]}
grid_search = GridSearchCV(DecisionTreeClassifier, param_grid, cv=5)
grid_search.fit(X_train, y_train)
print(f"最佳参数:{grid_search.best_params_}")
监督学习流程图
原始数据 → 数据清洗 → 特征工程 → 划分训练/测试集
↓
训练模型 ← 选择算法
↓
评估模型 → 调整超参数
↓
预测新数据
通过这个框架,您可以使用不同算法解决各类监督学习问题(回归/分类)。实际应用中需根据数据特性选择合适的算法和预处理方法。
来源:老客数据一点号