Python 基础入门 Day31

52次阅读
没有评论

共计 3004 个字符,预计需要花费 8 分钟才能阅读完成。

欢迎来到 Python 基础入门 Day31!今天,我们将学习 机器学习基础,通过使用 Python 中的 scikit-learn 库来进行数据预处理、模型训练、评估与预测。机器学习是数据科学中最重要的部分之一,掌握它将使你能够处理更复杂的任务。


目录

  1. 机器学习简介
  2. 数据预处理与特征工程
  3. 训练机器学习模型
  4. 模型评估与优化
  5. 小结与练习

一、机器学习简介

机器学习(Machine Learning)是指计算机通过数据来学习并做出预测或决策的一种技术。机器学习的基本流程如下:

  1. 数据收集:获取原始数据。
  2. 数据预处理:清洗和转换数据,使其适合于模型训练。
  3. 特征选择与工程:选择相关的特征,并对数据进行适当的变换。
  4. 模型训练:使用算法对数据进行训练,生成预测模型。
  5. 模型评估:评估模型的表现,进行优化。
  6. 预测与部署:使用模型进行预测,并将其应用到实际问题中。

今天,我们将重点学习 scikit-learn,它是 Python 中最常用的机器学习库之一,提供了许多工具来处理数据、训练模型以及进行评估。


二、数据预处理与特征工程

在机器学习中,数据预处理和特征工程是非常重要的一步。清理数据和生成有效的特征可以显著提高模型的表现。

2.1 加载数据集

我们将使用 scikit-learn 提供的示例数据集进行演示。在这里,我们以鸢尾花数据集(iris)为例:

from sklearn import datasets
import pandas as pd

# 加载鸢尾花数据集
iris = datasets.load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df["target"] = iris.target
print(df.head())

2.2 处理缺失值

机器学习模型对缺失数据很敏感,我们通常需要填补或删除缺失值。

# 检查缺失值
print(df.isnull().sum())

# 填充缺失值(假设我们填充为均值)df.fillna(df.mean(), inplace=True)

2.3 特征标准化

不同特征的量纲可能不同,为了提高模型的表现,我们通常对数据进行标准化,使其具有相同的量纲。

from sklearn.preprocessing import StandardScaler

# 特征标准化
scaler = StandardScaler()
df_scaled = scaler.fit_transform(df.drop("target", axis=1))

三、训练机器学习模型

在机器学习中,选择合适的模型是至关重要的一步。今天,我们将使用 逻辑回归(Logistic Regression) 模型进行分类任务。

3.1 划分训练集与测试集

为了评估模型的效果,我们需要将数据集划分为训练集和测试集。通常,80% 的数据用于训练,20% 的数据用于测试。

from sklearn.model_selection import train_test_split

# 划分数据集,80% 用于训练,20% 用于测试
X_train, X_test, y_train, y_test = train_test_split(df_scaled, df["target"], test_size=0.2, random_state=42)

3.2 训练模型

我们将使用 逻辑回归 模型来训练数据。

from sklearn.linear_model import LogisticRegression

# 创建并训练模型
model = LogisticRegression(max_iter=200)
model.fit(X_train, y_train)

3.3 预测与评估

训练完成后,我们可以使用测试集来评估模型的效果。

# 使用模型进行预测
y_pred = model.predict(X_test)

# 评估模型的准确性
from sklearn.metrics import accuracy_score

accuracy = accuracy_score(y_test, y_pred)
print(f"Model Accuracy: {accuracy * 100:.2f}%")

四、模型评估与优化

4.1 混淆矩阵

混淆矩阵用于评估分类模型的效果,能够展示模型预测的真实情况。

from sklearn.metrics import confusion_matrix
import seaborn as sns
import matplotlib.pyplot as plt

# 计算混淆矩阵
conf_matrix = confusion_matrix(y_test, y_pred)

# 绘制热图
sns.heatmap(conf_matrix, annot=True, fmt="d", cmap="Blues", xticklabels=iris.target_names, yticklabels=iris.target_names)
plt.xlabel('Predicted')
plt.ylabel('True')
plt.title('Confusion Matrix')
plt.show()

4.2 调整超参数

为了优化模型的性能,我们可以调整超参数。例如,逻辑回归模型有多个超参数可以调整,使用 GridSearchCV 可以帮助我们找到最佳的超参数组合。

from sklearn.model_selection import GridSearchCV

# 设置参数范围
param_grid = {"C": [0.1, 1, 10, 100]}

# 使用 GridSearchCV 查找最佳参数
grid_search = GridSearchCV(LogisticRegression(max_iter=200), param_grid, cv=5)
grid_search.fit(X_train, y_train)

# 输出最佳参数
print(f"Best Parameters: {grid_search.best_params_}")

4.3 交叉验证

交叉验证可以帮助我们评估模型在不同数据集上的表现,避免过拟合。

from sklearn.model_selection import cross_val_score

# 使用交叉验证评估模型
scores = cross_val_score(model, X_train, y_train, cv=5)
print(f"Cross-validation scores: {scores}")
print(f"Mean cross-validation score: {scores.mean()}")

五、小结与练习

今日总结:

  1. 学习了机器学习的基本流程,包括数据预处理、模型训练、评估与优化。
  2. 使用 scikit-learn 进行了数据预处理、训练逻辑回归模型,并评估了模型性能。
  3. 介绍了如何使用混淆矩阵、超参数优化和交叉验证来提高模型的效果。

今日练习:

  1. 使用 scikit-learn 的鸢尾花数据集,训练 K-Nearest Neighbors(KNN) 模型并评估其准确性。
  2. 调整 KNN 模型的 k 值,并使用 GridSearchCV 寻找最佳参数。
  3. 使用其他分类模型(如决策树、支持向量机等),并比较不同模型的表现。
  4. 使用 cross_val_score 评估模型在不同数据集上的表现。

下一节预告 :在 Day32 中,我们将学习 回归分析 ,并使用 线性回归 模型进行预测任务。敬请期待!


今天的学习就到这里,祝你在机器学习的世界中继续探索与成长!如果有任何问题或疑问,欢迎随时讨论 😊。

正文完
 0
评论(没有评论)